From 179c814cf3b640bb1d9fe5a22fb6e8b00b1e94b4 Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Tue, 4 Nov 2025 14:53:23 +0100 Subject: [PATCH 1/9] feat: add metadata field to Entity and IngestRequest classes Signed-off-by: Michal Fiedorowicz --- netboxlabs/diode/sdk/diode/v1/ingester_pb2.py | 735 +++++----- .../diode/sdk/diode/v1/ingester_pb2.pyi | 13 +- netboxlabs/diode/sdk/ingester.py | 1246 +++++++++++++++-- 3 files changed, 1525 insertions(+), 469 deletions(-) diff --git a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py index 0d6ffea..fc8b236 100644 --- a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py +++ b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py @@ -12,11 +12,12 @@ _sym_db = _symbol_database.Default() +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 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\"\xed+\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\x0cwirelessLink\x12:\n\x0c\x63ustom_field\x18Z \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x0b\x63ustomField\x12W\n\x17\x63ustom_field_choice_set\x18[ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x14\x63ustomFieldChoiceSet\x12=\n\rjournal_entry\x18\\ \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x0cjournalEntry\x12M\n\x13module_type_profile\x18] \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x11moduleTypeProfile\x12\x37\n\x0b\x63ustom_link\x18^ \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\ncustomLinkB\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\"\xf9\x04\n\x07\x43ontact\x12\x35\n\x05group\x18\x01 \x01(\x0b\x32\x16.diode.v1.ContactGroupB\x02\x18\x01H\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\x12.\n\x06groups\x18\x0c \x03(\x0b\x32\x16.diode.v1.ContactGroupR\x06groups\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\"\x82\x38\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\x12G\n\x13object_custom_field\x18^ \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x11objectCustomField\x12\x64\n\x1eobject_custom_field_choice_set\x18_ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1aobjectCustomFieldChoiceSet\x12J\n\x14object_journal_entry\x18` \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x12objectJournalEntry\x12Z\n\x1aobject_module_type_profile\x18\x61 \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x17objectModuleTypeProfile\x12\x44\n\x12object_custom_link\x18\x62 \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x10objectCustomLink\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\"\xaa\x03\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\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\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\"\xbb+\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\x0cwirelessLink\x12:\n\x0c\x63ustom_field\x18Y \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x0b\x63ustomField\x12W\n\x17\x63ustom_field_choice_set\x18Z \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x14\x63ustomFieldChoiceSet\x12=\n\rjournal_entry\x18[ \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x0cjournalEntry\x12M\n\x13module_type_profile\x18\\ \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x11moduleTypeProfile\x12\x37\n\x0b\x63ustom_link\x18] \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\ncustomLinkB\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\"\xf3\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\x12\x31\n\x06parent\x18\x08 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x03R\x06parent\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\t \x01(\tH\x04R\x08\x63omments\x88\x01\x01\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_descriptionB\t\n\x07_parentB\x0b\n\t_comments\"\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\"\xe5\x39\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\x12M\n\x16interface_custom_field\x18[ \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x14interfaceCustomField\x12j\n!interface_custom_field_choice_set\x18\\ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1dinterfaceCustomFieldChoiceSet\x12P\n\x17interface_journal_entry\x18] \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x15interfaceJournalEntry\x12`\n\x1dinterface_module_type_profile\x18^ \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x1ainterfaceModuleTypeProfile\x12J\n\x15interface_custom_link\x18_ \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x13interfaceCustomLink\x12\x1a\n\x08priority\x18Z \x01(\x03R\x08priorityB\x0b\n\tinterface\"\xd1\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\xc4\x03\n\x04type\x18\x05 \x01(\tB\xaf\x03\xfa\x42\xab\x03r\xa8\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\x06\x66\x63-apcR\x05\x66\x63-pcR\x06\x66\x63-upcR\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\"\xe7\x34\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\x12objectWirelessLink\x12G\n\x13object_custom_field\x18Y \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x11objectCustomField\x12\x64\n\x1eobject_custom_field_choice_set\x18Z \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1aobjectCustomFieldChoiceSet\x12J\n\x14object_journal_entry\x18[ \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x12objectJournalEntry\x12Z\n\x1aobject_module_type_profile\x18\\ \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x17objectModuleTypeProfile\x12\x44\n\x12object_custom_link\x18] \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x10objectCustomLinkB\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 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x1d\x61ssignedObjectProviderAccount\x12\x64\n assigned_object_provider_network\x18? \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1d\x61ssignedObjectProviderNetwork\x12?\n\x13\x61ssigned_object_rir\x18@ \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x11\x61ssignedObjectRir\x12\x42\n\x14\x61ssigned_object_rack\x18\x41 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x12\x61ssignedObjectRack\x12\x64\n assigned_object_rack_reservation\x18\x42 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x1d\x61ssignedObjectRackReservation\x12O\n\x19\x61ssigned_object_rack_role\x18\x43 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x16\x61ssignedObjectRackRole\x12O\n\x19\x61ssigned_object_rack_type\x18\x44 \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x16\x61ssignedObjectRackType\x12O\n\x19\x61ssigned_object_rear_port\x18\x45 \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x16\x61ssignedObjectRearPort\x12H\n\x16\x61ssigned_object_region\x18\x46 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x14\x61ssignedObjectRegion\x12\x42\n\x14\x61ssigned_object_role\x18G \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x12\x61ssignedObjectRole\x12X\n\x1c\x61ssigned_object_route_target\x18H \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x19\x61ssignedObjectRouteTarget\x12K\n\x17\x61ssigned_object_service\x18I \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x15\x61ssignedObjectService\x12\x42\n\x14\x61ssigned_object_site\x18J \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x12\x61ssignedObjectSite\x12R\n\x1a\x61ssigned_object_site_group\x18K \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x17\x61ssignedObjectSiteGroup\x12?\n\x13\x61ssigned_object_tag\x18L \x01(\x0b\x32\r.diode.v1.TagH\x00R\x11\x61ssignedObjectTag\x12H\n\x16\x61ssigned_object_tenant\x18M \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x14\x61ssignedObjectTenant\x12X\n\x1c\x61ssigned_object_tenant_group\x18N \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x19\x61ssignedObjectTenantGroup\x12H\n\x16\x61ssigned_object_tunnel\x18O \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x14\x61ssignedObjectTunnel\x12X\n\x1c\x61ssigned_object_tunnel_group\x18P \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x19\x61ssignedObjectTunnelGroup\x12j\n\"assigned_object_tunnel_termination\x18Q \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1f\x61ssignedObjectTunnelTermination\x12R\n\x1a\x61ssigned_object_vlan_group\x18R \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x17\x61ssignedObjectVlanGroup\x12w\n\'assigned_object_vlan_translation_policy\x18S \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R#assignedObjectVlanTranslationPolicy\x12q\n%assigned_object_vlan_translation_rule\x18T \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R!assignedObjectVlanTranslationRule\x12?\n\x13\x61ssigned_object_vrf\x18U \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x11\x61ssignedObjectVrf\x12\x61\n\x1f\x61ssigned_object_virtual_chassis\x18V \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x1c\x61ssignedObjectVirtualChassis\x12\x61\n\x1f\x61ssigned_object_virtual_circuit\x18W \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x1c\x61ssignedObjectVirtualCircuit\x12\x83\x01\n+assigned_object_virtual_circuit_termination\x18X \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\'assignedObjectVirtualCircuitTermination\x12n\n$assigned_object_virtual_circuit_type\x18Y \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R assignedObjectVirtualCircuitType\x12t\n&assigned_object_virtual_device_context\x18Z \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\"assignedObjectVirtualDeviceContext\x12X\n\x1c\x61ssigned_object_virtual_disk\x18[ \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x19\x61ssignedObjectVirtualDisk\x12\x61\n\x1f\x61ssigned_object_virtual_machine\x18\\ \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x1c\x61ssignedObjectVirtualMachine\x12X\n\x1c\x61ssigned_object_wireless_lan\x18] \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x19\x61ssignedObjectWirelessLan\x12h\n\"assigned_object_wireless_lan_group\x18^ \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x1e\x61ssignedObjectWirelessLanGroup\x12[\n\x1d\x61ssigned_object_wireless_link\x18_ \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x1a\x61ssignedObjectWirelessLink\x12U\n\x1b\x61ssigned_object_custom_link\x18` \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x18\x61ssignedObjectCustomLink\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12Q\n\rcustom_fields\x18\x06 \x03(\x0b\x32,.diode.v1.L2VPNTermination.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\x11\n\x0f\x61ssigned_object\"\x8d\x05\n\x08Location\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\"\n\x04site\x18\x03 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12/\n\x06parent\x18\x04 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x06parent\x88\x01\x01\x12V\n\x06status\x18\x05 \x01(\tB9\xfa\x42\x36r4R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x07plannedR\x07retiredR\x07stagingH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x1f\n\x08\x66\x61\x63ility\x18\x07 \x01(\tH\x03R\x08\x66\x61\x63ility\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\n \x03(\x0b\x32$.diode.v1.Location.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x05R\x08\x63omments\x88\x01\x01\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\t\n\x07_statusB\t\n\x07_tenantB\x0b\n\t_facilityB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\x9f\x04\n\nMACAddress\x12\x1f\n\x0bmac_address\x18\x01 \x01(\tR\nmacAddress\x12Q\n\x19\x61ssigned_object_interface\x18\x02 \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x17\x61ssignedObjectInterface\x12X\n\x1c\x61ssigned_object_vm_interface\x18\x03 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x19\x61ssignedObjectVmInterface\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\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.MACAddress.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\x11\n\x0f\x61ssigned_objectB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x02\n\x0cManufacturer\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.Manufacturer.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\"\x8d\x05\n\x06Module\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12\x32\n\nmodule_bay\x18\x02 \x01(\x0b\x32\x13.diode.v1.ModuleBayR\tmoduleBay\x12\x35\n\x0bmodule_type\x18\x03 \x01(\x0b\x32\x14.diode.v1.ModuleTypeR\nmoduleType\x12]\n\x06status\x18\x04 \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\x1b\n\x06serial\x18\x05 \x01(\tH\x01R\x06serial\x88\x01\x01\x12 \n\tasset_tag\x18\x06 \x01(\tH\x02R\x08\x61ssetTag\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\x12G\n\rcustom_fields\x18\n \x03(\x0b\x32\".diode.v1.Module.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\t\n\x07_serialB\x0c\n\n_asset_tagB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xb0\x04\n\tModuleBay\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@\n\x10installed_module\x18\x04 \x01(\x0b\x32\x10.diode.v1.ModuleH\x01R\x0finstalledModule\x88\x01\x01\x12\x19\n\x05label\x18\x05 \x01(\tH\x02R\x05label\x88\x01\x01\x12\x1f\n\x08position\x18\x06 \x01(\tH\x03R\x08position\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\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.ModuleBay.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\x13\n\x11_installed_moduleB\x08\n\x06_labelB\x0b\n\t_positionB\x0e\n\x0c_description\"\xbb\x06\n\nModuleType\x12:\n\x0cmanufacturer\x18\x01 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12\x14\n\x05model\x18\x02 \x01(\tR\x05model\x12$\n\x0bpart_number\x18\x03 \x01(\tH\x00R\npartNumber\x88\x01\x01\x12w\n\x07\x61irflow\x18\x04 \x01(\tBX\xfa\x42UrSR\rfront-to-rearR\rleft-to-rightR\x07passiveR\rrear-to-frontR\rright-to-leftR\x0cside-to-rearH\x01R\x07\x61irflow\x88\x01\x01\x12\x1b\n\x06weight\x18\x05 \x01(\x01H\x02R\x06weight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x06 \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x03R\nweightUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x08 \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12K\n\rcustom_fields\x18\n \x03(\x0b\x32&.diode.v1.ModuleType.CustomFieldsEntryR\x0c\x63ustomFields\x12:\n\x07profile\x18\x0b \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x06R\x07profile\x88\x01\x01\x12#\n\nattributes\x18\x0c \x01(\tH\x07R\nattributes\x88\x01\x01\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_part_numberB\n\n\x08_airflowB\t\n\x07_weightB\x0e\n\x0c_weight_unitB\x0e\n\x0c_descriptionB\x0b\n\t_commentsB\n\n\x08_profileB\r\n\x0b_attributes\"\xf0\x03\n\x08Platform\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12?\n\x0cmanufacturer\x18\x03 \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\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\x12I\n\rcustom_fields\x18\x06 \x03(\x0b\x32$.diode.v1.Platform.CustomFieldsEntryR\x0c\x63ustomFields\x12/\n\x06parent\x18\x07 \x01(\x0b\x32\x12.diode.v1.PlatformH\x02R\x06parent\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x08 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\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\x0f\n\r_manufacturerB\x0e\n\x0c_descriptionB\t\n\x07_parentB\x0b\n\t_comments\"\xd9\x07\n\tPowerFeed\x12\x35\n\x0bpower_panel\x18\x01 \x01(\x0b\x32\x14.diode.v1.PowerPanelR\npowerPanel\x12\'\n\x04rack\x18\x02 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x04rack\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x44\n\x06status\x18\x04 \x01(\tB\'\xfa\x42$r\"R\x06\x61\x63tiveR\x06\x66\x61iledR\x07offlineR\x07plannedH\x01R\x06status\x88\x01\x01\x12\x32\n\x04type\x18\x05 \x01(\tB\x19\xfa\x42\x16r\x14R\x07primaryR\tredundantH\x02R\x04type\x88\x01\x01\x12*\n\x06supply\x18\x06 \x01(\tB\r\xfa\x42\nr\x08R\x02\x61\x63R\x02\x64\x63H\x03R\x06supply\x88\x01\x01\x12;\n\x05phase\x18\x07 \x01(\tB \xfa\x42\x1dr\x1bR\x0csingle-phaseR\x0bthree-phaseH\x04R\x05phase\x88\x01\x01\x12\x1d\n\x07voltage\x18\x08 \x01(\x03H\x05R\x07voltage\x88\x01\x01\x12\x1f\n\x08\x61mperage\x18\t \x01(\x03H\x06R\x08\x61mperage\x88\x01\x01\x12,\n\x0fmax_utilization\x18\n \x01(\x03H\x07R\x0emaxUtilization\x88\x01\x01\x12*\n\x0emark_connected\x18\x0b \x01(\x08H\x08R\rmarkConnected\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0c \x01(\tH\tR\x0b\x64\x65scription\x88\x01\x01\x12-\n\x06tenant\x18\r \x01(\x0b\x32\x10.diode.v1.TenantH\nR\x06tenant\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\x0bR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x10 \x03(\x0b\x32%.diode.v1.PowerFeed.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_rackB\t\n\x07_statusB\x07\n\x05_typeB\t\n\x07_supplyB\x08\n\x06_phaseB\n\n\x08_voltageB\x0b\n\t_amperageB\x12\n\x10_max_utilizationB\x11\n\x0f_mark_connectedB\x0e\n\x0c_descriptionB\t\n\x07_tenantB\x0b\n\t_comments\"\xd8\x10\n\x0bPowerOutlet\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\xea\n\n\x04type\x18\x05 \x01(\tB\xd0\n\xfa\x42\xcc\nr\xc9\nR\x07\x43S6360CR\x07\x43S6364CR\x07\x43S8164CR\x07\x43S8264CR\x07\x43S8364CR\x07\x43S8464CR\x0b\x64\x63-terminalR\teaton-c39R\thardwiredR\x07hdot-cxR\x11iec-60309-2p-e-4hR\x11iec-60309-2p-e-6hR\x11iec-60309-2p-e-9hR\x11iec-60309-3p-e-4hR\x11iec-60309-3p-e-6hR\x11iec-60309-3p-e-9hR\x13iec-60309-3p-n-e-4hR\x13iec-60309-3p-n-e-6hR\x13iec-60309-3p-n-e-9hR\x12iec-60309-p-n-e-4hR\x12iec-60309-p-n-e-6hR\x12iec-60309-p-n-e-9hR\riec-60320-c13R\riec-60320-c15R\riec-60320-c17R\riec-60320-c19R\riec-60320-c21R\x0ciec-60320-c5R\x0ciec-60320-c7R\x0biec-60906-1R\x05ita-eR\x05ita-fR\x05ita-gR\x05ita-hR\x05ita-iR\x05ita-jR\x05ita-kR\x05ita-lR\x05ita-mR\x11ita-multistandardR\x05ita-nR\x05ita-oR\x13molex-micro-fit-1x2R\x13molex-micro-fit-2x2R\x13molex-micro-fit-2x4R\rnbr-14136-10aR\rnbr-14136-20aR\nnema-1-15rR\x0bnema-10-30rR\x0bnema-10-50rR\x0bnema-14-20rR\x0bnema-14-30rR\x0bnema-14-50rR\x0bnema-14-60rR\x0bnema-15-15rR\x0bnema-15-20rR\x0bnema-15-30rR\x0bnema-15-50rR\x0bnema-15-60rR\nnema-5-15rR\nnema-5-20rR\nnema-5-30rR\nnema-5-50rR\nnema-6-15rR\nnema-6-20rR\nnema-6-30rR\nnema-6-50rR\x0bnema-l1-15rR\x0cnema-l10-30rR\x0cnema-l14-20rR\x0cnema-l14-30rR\x0cnema-l14-50rR\x0cnema-l14-60rR\x0cnema-l15-20rR\x0cnema-l15-30rR\x0cnema-l15-50rR\x0cnema-l15-60rR\x0cnema-l21-20rR\x0cnema-l21-30rR\x0cnema-l22-20rR\x0cnema-l22-30rR\x0bnema-l5-15rR\x0bnema-l5-20rR\x0bnema-l5-30rR\x0bnema-l5-50rR\x0bnema-l6-15rR\x0bnema-l6-20rR\x0bnema-l6-30rR\x0bnema-l6-50rR\x14neutrik-powercon-20aR\x14neutrik-powercon-32aR\x16neutrik-powercon-true1R\x1aneutrik-powercon-true1-topR\x05otherR\nsaf-d-gridR\x13ubiquiti-smartpowerR\x05usb-aR\x05usb-cR\x0busb-micro-bH\x02R\x04type\x88\x01\x01\x12\x19\n\x05\x63olor\x18\x06 \x01(\tH\x03R\x05\x63olor\x88\x01\x01\x12\x37\n\npower_port\x18\x07 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x04R\tpowerPort\x88\x01\x01\x12.\n\x08\x66\x65\x65\x64_leg\x18\x08 \x01(\tB\x0e\xfa\x42\x0br\tR\x01\x41R\x01\x42R\x01\x43H\x05R\x07\x66\x65\x65\x64Leg\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\t \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\n \x01(\x08H\x07R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\x0b \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x0c \x03(\x0b\x32\'.diode.v1.PowerOutlet.CustomFieldsEntryR\x0c\x63ustomFields\x12=\n\x06status\x18\r \x01(\tB \xfa\x42\x1dr\x1bR\x08\x64isabledR\x07\x65nabledR\x06\x66\x61ultyH\x08R\x06status\x88\x01\x01\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_colorB\r\n\x0b_power_portB\x0b\n\t_feed_legB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connectedB\t\n\x07_status\"\xb8\x03\n\nPowerPanel\x12\"\n\x04site\x18\x01 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12\x33\n\x08location\x18\x02 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x08location\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\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.PowerPanel.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\x0b\n\t_locationB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\x90\x10\n\tPowerPort\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\xa2\x0b\n\x04type\x18\x05 \x01(\tB\x88\x0b\xfa\x42\x84\x0br\x81\x0bR\x07\x63s6361cR\x07\x63s6365cR\x07\x63s8165cR\x07\x63s8265cR\x07\x63s8365cR\x07\x63s8465cR\x0b\x64\x63-terminalR\thardwiredR\x11iec-60309-2p-e-4hR\x11iec-60309-2p-e-6hR\x11iec-60309-2p-e-9hR\x11iec-60309-3p-e-4hR\x11iec-60309-3p-e-6hR\x11iec-60309-3p-e-9hR\x13iec-60309-3p-n-e-4hR\x13iec-60309-3p-n-e-6hR\x13iec-60309-3p-n-e-9hR\x12iec-60309-p-n-e-4hR\x12iec-60309-p-n-e-6hR\x12iec-60309-p-n-e-9hR\riec-60320-c14R\riec-60320-c16R\riec-60320-c18R\riec-60320-c20R\riec-60320-c22R\x0ciec-60320-c6R\x0ciec-60320-c8R\x0biec-60906-1R\x05ita-cR\x05ita-eR\x06ita-efR\x05ita-fR\x05ita-gR\x05ita-hR\x05ita-iR\x05ita-jR\x05ita-kR\x05ita-lR\x05ita-mR\x05ita-nR\x05ita-oR\x13molex-micro-fit-1x2R\x13molex-micro-fit-2x2R\x13molex-micro-fit-2x4R\rnbr-14136-10aR\rnbr-14136-20aR\nnema-1-15pR\x0bnema-10-30pR\x0bnema-10-50pR\x0bnema-14-20pR\x0bnema-14-30pR\x0bnema-14-50pR\x0bnema-14-60pR\x0bnema-15-15pR\x0bnema-15-20pR\x0bnema-15-30pR\x0bnema-15-50pR\x0bnema-15-60pR\nnema-5-15pR\nnema-5-20pR\nnema-5-30pR\nnema-5-50pR\nnema-6-15pR\nnema-6-20pR\nnema-6-30pR\nnema-6-50pR\x0bnema-l1-15pR\x0cnema-l10-30pR\x0cnema-l14-20pR\x0cnema-l14-30pR\x0cnema-l14-50pR\x0cnema-l14-60pR\x0cnema-l15-20pR\x0cnema-l15-30pR\x0cnema-l15-50pR\x0cnema-l15-60pR\x0cnema-l21-20pR\x0cnema-l21-30pR\x0cnema-l22-20pR\x0cnema-l22-30pR\x0bnema-l5-15pR\x0bnema-l5-20pR\x0bnema-l5-30pR\x0bnema-l5-50pR\x0bnema-l6-15pR\x0bnema-l6-20pR\x0bnema-l6-30pR\x0bnema-l6-50pR\x13neutrik-powercon-20R\x13neutrik-powercon-32R\x16neutrik-powercon-true1R\x1aneutrik-powercon-true1-topR\x05otherR\nsaf-d-gridR\x13ubiquiti-smartpowerR\x07usb-3-bR\rusb-3-micro-bR\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\x0cmaximum_draw\x18\x06 \x01(\x03H\x03R\x0bmaximumDraw\x88\x01\x01\x12*\n\x0e\x61llocated_draw\x18\x07 \x01(\x03H\x04R\rallocatedDraw\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\t \x01(\x08H\x06R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x0b \x03(\x0b\x32%.diode.v1.PowerPort.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\x0f\n\r_maximum_drawB\x11\n\x0f_allocated_drawB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xc7\x07\n\x06Prefix\x12\x16\n\x06prefix\x18\x01 \x01(\tR\x06prefix\x12$\n\x03vrf\x18\x02 \x01(\x0b\x32\r.diode.v1.VRFH\x01R\x03vrf\x88\x01\x01\x12;\n\x0escope_location\x18\x03 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12\x35\n\x0cscope_region\x18\x04 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x05 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\x06 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12-\n\x06tenant\x18\x07 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\'\n\x04vlan\x18\x08 \x01(\x0b\x32\x0e.diode.v1.VLANH\x03R\x04vlan\x88\x01\x01\x12K\n\x06status\x18\t \x01(\tB.\xfa\x42+r)R\x06\x61\x63tiveR\tcontainerR\ndeprecatedR\x08reservedH\x04R\x06status\x88\x01\x01\x12\'\n\x04role\x18\n \x01(\x0b\x32\x0e.diode.v1.RoleH\x05R\x04role\x88\x01\x01\x12\x1c\n\x07is_pool\x18\x0b \x01(\x08H\x06R\x06isPool\x88\x01\x01\x12(\n\rmark_utilized\x18\x0c \x01(\x08H\x07R\x0cmarkUtilized\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\r \x01(\tH\x08R\x0b\x64\x65scription\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\x12G\n\rcustom_fields\x18\x10 \x03(\x0b\x32\".diode.v1.Prefix.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\x06\n\x04_vrfB\t\n\x07_tenantB\x07\n\x05_vlanB\t\n\x07_statusB\x07\n\x05_roleB\n\n\x08_is_poolB\x10\n\x0e_mark_utilizedB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x03\n\x08Provider\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\x1f\n\x08\x63omments\x18\x04 \x01(\tH\x01R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\x06 \x03(\x0b\x32$.diode.v1.Provider.CustomFieldsEntryR\x0c\x63ustomFields\x12\x35\n\x08\x61\x63\x63ounts\x18\x07 \x03(\x0b\x32\x19.diode.v1.ProviderAccountR\x08\x61\x63\x63ounts\x12!\n\x04\x61sns\x18\x08 \x03(\x0b\x32\r.diode.v1.ASNR\x04\x61sns\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\x0b\n\t_comments\"\xb4\x03\n\x0fProviderAccount\x12.\n\x08provider\x18\x01 \x01(\x0b\x32\x12.diode.v1.ProviderR\x08provider\x12\x17\n\x04name\x18\x02 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x18\n\x07\x61\x63\x63ount\x18\x03 \x01(\tR\x07\x61\x63\x63ount\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12P\n\rcustom_fields\x18\x07 \x03(\x0b\x32+.diode.v1.ProviderAccount.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\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbf\x03\n\x0fProviderNetwork\x12.\n\x08provider\x18\x01 \x01(\x0b\x32\x12.diode.v1.ProviderR\x08provider\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\"\n\nservice_id\x18\x03 \x01(\tH\x00R\tserviceId\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12P\n\rcustom_fields\x18\x07 \x03(\x0b\x32+.diode.v1.ProviderNetwork.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_service_idB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xdd\x02\n\x03RIR\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\"\n\nis_private\x18\x03 \x01(\x08H\x00R\tisPrivate\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\x12\x44\n\rcustom_fields\x18\x06 \x03(\x0b\x32\x1f.diode.v1.RIR.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_is_privateB\x0e\n\x0c_description\"\xec\r\n\x04Rack\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12$\n\x0b\x66\x61\x63ility_id\x18\x02 \x01(\tH\x00R\nfacilityId\x88\x01\x01\x12\"\n\x04site\x18\x03 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12\x33\n\x08location\x18\x04 \x01(\x0b\x32\x12.diode.v1.LocationH\x01R\x08location\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12T\n\x06status\x18\x06 \x01(\tB7\xfa\x42\x34r2R\x06\x61\x63tiveR\tavailableR\ndeprecatedR\x07plannedR\x08reservedH\x03R\x06status\x88\x01\x01\x12+\n\x04role\x18\x07 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x04R\x04role\x88\x01\x01\x12\x1b\n\x06serial\x18\x08 \x01(\tH\x05R\x06serial\x88\x01\x01\x12 \n\tasset_tag\x18\t \x01(\tH\x06R\x08\x61ssetTag\x88\x01\x01\x12\x34\n\track_type\x18\n \x01(\x0b\x32\x12.diode.v1.RackTypeH\x07R\x08rackType\x88\x01\x01\x12\x9d\x01\n\x0b\x66orm_factor\x18\x0b \x01(\tBw\xfa\x42trrR\x0c\x32-post-frameR\x0e\x34-post-cabinetR\x0c\x34-post-frameR\x0cwall-cabinetR\x15wall-cabinet-verticalR\nwall-frameR\x13wall-frame-verticalH\x08R\nformFactor\x88\x01\x01\x12(\n\x05width\x18\x0c \x01(\x03\x42\r\xfa\x42\n\"\x08\x30\n0\x13\x30\x15\x30\x17H\tR\x05width\x88\x01\x01\x12\x1e\n\x08u_height\x18\r \x01(\x03H\nR\x07uHeight\x88\x01\x01\x12(\n\rstarting_unit\x18\x0e \x01(\x03H\x0bR\x0cstartingUnit\x88\x01\x01\x12\x1b\n\x06weight\x18\x0f \x01(\x01H\x0cR\x06weight\x88\x01\x01\x12\"\n\nmax_weight\x18\x10 \x01(\x03H\rR\tmaxWeight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x11 \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x0eR\nweightUnit\x88\x01\x01\x12\"\n\ndesc_units\x18\x12 \x01(\x08H\x0fR\tdescUnits\x88\x01\x01\x12$\n\x0bouter_width\x18\x13 \x01(\x03H\x10R\nouterWidth\x88\x01\x01\x12$\n\x0bouter_depth\x18\x14 \x01(\x03H\x11R\nouterDepth\x88\x01\x01\x12\x31\n\nouter_unit\x18\x15 \x01(\tB\r\xfa\x42\nr\x08R\x02inR\x02mmH\x12R\touterUnit\x88\x01\x01\x12*\n\x0emounting_depth\x18\x16 \x01(\x03H\x13R\rmountingDepth\x88\x01\x01\x12\x42\n\x07\x61irflow\x18\x17 \x01(\tB#\xfa\x42 r\x1eR\rfront-to-rearR\rrear-to-frontH\x14R\x07\x61irflow\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x18 \x01(\tH\x15R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x19 \x01(\tH\x16R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x1a \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x45\n\rcustom_fields\x18\x1b \x03(\x0b\x32 .diode.v1.Rack.CustomFieldsEntryR\x0c\x63ustomFields\x12&\n\x0couter_height\x18\x1c \x01(\x03H\x17R\x0bouterHeight\x88\x01\x01\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_facility_idB\x0b\n\t_locationB\t\n\x07_tenantB\t\n\x07_statusB\x07\n\x05_roleB\t\n\x07_serialB\x0c\n\n_asset_tagB\x0c\n\n_rack_typeB\x0e\n\x0c_form_factorB\x08\n\x06_widthB\x0b\n\t_u_heightB\x10\n\x0e_starting_unitB\t\n\x07_weightB\r\n\x0b_max_weightB\x0e\n\x0c_weight_unitB\r\n\x0b_desc_unitsB\x0e\n\x0c_outer_widthB\x0e\n\x0c_outer_depthB\r\n\x0b_outer_unitB\x11\n\x0f_mounting_depthB\n\n\x08_airflowB\x0e\n\x0c_descriptionB\x0b\n\t_commentsB\x0f\n\r_outer_height\"\xee\x03\n\x0fRackReservation\x12\"\n\x04rack\x18\x01 \x01(\x0b\x32\x0e.diode.v1.RackR\x04rack\x12\x14\n\x05units\x18\x02 \x03(\x03R\x05units\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12 \n\x0b\x64\x65scription\x18\x04 \x01(\tR\x0b\x64\x65scription\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x01R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12P\n\rcustom_fields\x18\x07 \x03(\x0b\x32+.diode.v1.RackReservation.CustomFieldsEntryR\x0c\x63ustomFields\x12:\n\x06status\x18\x08 \x01(\tB\x1d\xfa\x42\x1ar\x18R\x06\x61\x63tiveR\x07pendingR\x05staleH\x02R\x06status\x88\x01\x01\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\x0b\n\t_commentsB\t\n\x07_status\"\xd9\x02\n\x08RackRole\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\x12I\n\rcustom_fields\x18\x06 \x03(\x0b\x32$.diode.v1.RackRole.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\"\xed\t\n\x08RackType\x12:\n\x0cmanufacturer\x18\x01 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12\x14\n\x05model\x18\x02 \x01(\tR\x05model\x12\x12\n\x04slug\x18\x03 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x9d\x01\n\x0b\x66orm_factor\x18\x05 \x01(\tBw\xfa\x42trrR\x0c\x32-post-frameR\x0e\x34-post-cabinetR\x0c\x34-post-frameR\x0cwall-cabinetR\x15wall-cabinet-verticalR\nwall-frameR\x13wall-frame-verticalH\x01R\nformFactor\x88\x01\x01\x12(\n\x05width\x18\x06 \x01(\x03\x42\r\xfa\x42\n\"\x08\x30\n0\x13\x30\x15\x30\x17H\x02R\x05width\x88\x01\x01\x12\x1e\n\x08u_height\x18\x07 \x01(\x03H\x03R\x07uHeight\x88\x01\x01\x12(\n\rstarting_unit\x18\x08 \x01(\x03H\x04R\x0cstartingUnit\x88\x01\x01\x12\"\n\ndesc_units\x18\t \x01(\x08H\x05R\tdescUnits\x88\x01\x01\x12$\n\x0bouter_width\x18\n \x01(\x03H\x06R\nouterWidth\x88\x01\x01\x12$\n\x0bouter_depth\x18\x0b \x01(\x03H\x07R\nouterDepth\x88\x01\x01\x12\x31\n\nouter_unit\x18\x0c \x01(\tB\r\xfa\x42\nr\x08R\x02inR\x02mmH\x08R\touterUnit\x88\x01\x01\x12\x1b\n\x06weight\x18\r \x01(\x01H\tR\x06weight\x88\x01\x01\x12\"\n\nmax_weight\x18\x0e \x01(\x03H\nR\tmaxWeight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x0f \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x0bR\nweightUnit\x88\x01\x01\x12*\n\x0emounting_depth\x18\x10 \x01(\x03H\x0cR\rmountingDepth\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x11 \x01(\tH\rR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x12 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\x13 \x03(\x0b\x32$.diode.v1.RackType.CustomFieldsEntryR\x0c\x63ustomFields\x12&\n\x0couter_height\x18\x14 \x01(\x03H\x0eR\x0bouterHeight\x88\x01\x01\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\x0e\n\x0c_form_factorB\x08\n\x06_widthB\x0b\n\t_u_heightB\x10\n\x0e_starting_unitB\r\n\x0b_desc_unitsB\x0e\n\x0c_outer_widthB\x0e\n\x0c_outer_depthB\r\n\x0b_outer_unitB\t\n\x07_weightB\r\n\x0b_max_weightB\x0e\n\x0c_weight_unitB\x11\n\x0f_mounting_depthB\x0b\n\t_commentsB\x0f\n\r_outer_height\"\x85\x08\n\x08RearPort\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\xc4\x03\n\x04type\x18\x05 \x01(\tB\xaf\x03\xfa\x42\xab\x03r\xa8\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\x06\x66\x63-apcR\x05\x66\x63-pcR\x06\x66\x63-upcR\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\tpositions\x18\x07 \x01(\x03H\x03R\tpositions\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\t \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\x0b \x03(\x0b\x32$.diode.v1.RearPort.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\x0c\n\n_positionsB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\x98\x03\n\x06Region\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12-\n\x06parent\x18\x03 \x01(\x0b\x32\x10.diode.v1.RegionH\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\x12G\n\rcustom_fields\x18\x06 \x03(\x0b\x32\".diode.v1.Region.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\xd4\x02\n\x04Role\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x1b\n\x06weight\x18\x03 \x01(\x03H\x00R\x06weight\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\x12\x45\n\rcustom_fields\x18\x06 \x03(\x0b\x32 .diode.v1.Role.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_weightB\x0e\n\x0c_description\"\x8e\x03\n\x0bRouteTarget\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x06tenant\x18\x02 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x04 \x01(\tH\x02R\x08\x63omments\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.RouteTarget.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_descriptionB\x0b\n\t_comments\"\x82\x07\n\x07Service\x12\x31\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceB\x02\x18\x01H\x01R\x06\x64\x65vice\x88\x01\x01\x12J\n\x0fvirtual_machine\x18\x02 \x01(\x0b\x32\x18.diode.v1.VirtualMachineB\x02\x18\x01H\x02R\x0evirtualMachine\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x36\n\x08protocol\x18\x04 \x01(\tB\x15\xfa\x42\x12r\x10R\x04sctpR\x03tcpR\x03udpH\x03R\x08protocol\x88\x01\x01\x12\x14\n\x05ports\x18\x05 \x03(\x03R\x05ports\x12%\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12H\n\rcustom_fields\x18\t \x03(\x0b\x32#.diode.v1.Service.CustomFieldsEntryR\x0c\x63ustomFields\x12\x35\n\x0bipaddresses\x18\n \x03(\x0b\x32\x13.diode.v1.IPAddressR\x0bipaddresses\x12\x44\n\x14parent_object_device\x18\x0b \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x12parentObjectDevice\x12N\n\x18parent_object_fhrp_group\x18\x0c \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x15parentObjectFhrpGroup\x12]\n\x1dparent_object_virtual_machine\x18\r \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x1aparentObjectVirtualMachine\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\x0f\n\rparent_objectB\t\n\x07_deviceB\x12\n\x10_virtual_machineB\x0b\n\t_protocolB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xd5\x07\n\x04Site\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12V\n\x06status\x18\x03 \x01(\tB9\xfa\x42\x36r4R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x07plannedR\x07retiredR\x07stagingH\x00R\x06status\x88\x01\x01\x12-\n\x06region\x18\x04 \x01(\x0b\x32\x10.diode.v1.RegionH\x01R\x06region\x88\x01\x01\x12.\n\x05group\x18\x05 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x02R\x05group\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x03R\x06tenant\x88\x01\x01\x12\x1f\n\x08\x66\x61\x63ility\x18\x07 \x01(\tH\x04R\x08\x66\x61\x63ility\x88\x01\x01\x12 \n\ttime_zone\x18\x08 \x01(\tH\x05R\x08timeZone\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\t \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12.\n\x10physical_address\x18\n \x01(\tH\x07R\x0fphysicalAddress\x88\x01\x01\x12.\n\x10shipping_address\x18\x0b \x01(\tH\x08R\x0fshippingAddress\x88\x01\x01\x12\x1f\n\x08latitude\x18\x0c \x01(\x01H\tR\x08latitude\x88\x01\x01\x12!\n\tlongitude\x18\r \x01(\x01H\nR\tlongitude\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\x0bR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x45\n\rcustom_fields\x18\x10 \x03(\x0b\x32 .diode.v1.Site.CustomFieldsEntryR\x0c\x63ustomFields\x12!\n\x04\x61sns\x18\x11 \x03(\x0b\x32\r.diode.v1.ASNR\x04\x61sns\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\t\n\x07_regionB\x08\n\x06_groupB\t\n\x07_tenantB\x0b\n\t_facilityB\x0c\n\n_time_zoneB\x0e\n\x0c_descriptionB\x13\n\x11_physical_addressB\x13\n\x11_shipping_addressB\x0b\n\t_latitudeB\x0c\n\n_longitudeB\x0b\n\t_comments\"\xa1\x03\n\tSiteGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x30\n\x06parent\x18\x03 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\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\x12J\n\rcustom_fields\x18\x06 \x03(\x0b\x32%.diode.v1.SiteGroup.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\xd6\x0e\n\x03Tag\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\x1b\n\x06weight\x18\x05 \x01(\x03H\x02R\x06weight\x88\x01\x01\x12\xa2\r\n\x0cobject_types\x18\x06 \x03(\tB\xfe\x0c\xfa\x42\xfa\x0c\x92\x01\xf6\x0c\"\xf3\x0cr\xf0\x0cR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1f\x63ircuits.circuitgroupassignmentR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x13\x65xtras.journalentryR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x19tenancy.contactassignmentR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkR\x0bobjectTypesB\x08\n\x06_colorB\x0e\n\x0c_descriptionB\t\n\x07_weight\"\x9a\x03\n\x06Tenant\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x30\n\x05group\x18\x03 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x05group\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12G\n\rcustom_fields\x18\x07 \x03(\x0b\x32\".diode.v1.Tenant.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\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xa7\x03\n\x0bTenantGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x32\n\x06parent\x18\x03 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\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\x12L\n\rcustom_fields\x18\x06 \x03(\x0b\x32\'.diode.v1.TenantGroup.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\xf6\x05\n\x06Tunnel\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x38\n\x06status\x18\x02 \x01(\tB \xfa\x42\x1dr\x1bR\x06\x61\x63tiveR\x08\x64isabledR\x07plannedR\x06status\x12\x30\n\x05group\x18\x03 \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x05group\x88\x01\x01\x12v\n\rencapsulation\x18\x04 \x01(\tBP\xfa\x42MrKR\x03greR\x05ip-ipR\x0fipsec-transportR\x0cipsec-tunnelR\x04l2tpR\x07openvpnR\x04pptpR\twireguardR\rencapsulation\x12@\n\ripsec_profile\x18\x05 \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x01R\x0cipsecProfile\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12 \n\ttunnel_id\x18\x07 \x01(\x03H\x03R\x08tunnelId\x88\x01\x01\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\x12G\n\rcustom_fields\x18\x0b \x03(\x0b\x32\".diode.v1.Tunnel.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\x10\n\x0e_ipsec_profileB\t\n\x07_tenantB\x0c\n\n_tunnel_idB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xba\x02\n\x0bTunnelGroup\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.TunnelGroup.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\"\x85?\n\x11TunnelTermination\x12(\n\x06tunnel\x18\x01 \x01(\x0b\x32\x10.diode.v1.TunnelR\x06tunnel\x12+\n\x04role\x18\x02 \x01(\tB\x17\xfa\x42\x14r\x12R\x03hubR\x04peerR\x05spokeR\x04role\x12\x38\n\x0ftermination_asn\x18\x03 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x0eterminationAsn\x12H\n\x15termination_asn_range\x18\x04 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x13terminationAsnRange\x12J\n\x15termination_aggregate\x18\x05 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x14terminationAggregate\x12>\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\x12Q\n\x18termination_custom_field\x18^ \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x16terminationCustomField\x12n\n#termination_custom_field_choice_set\x18_ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1fterminationCustomFieldChoiceSet\x12T\n\x19termination_journal_entry\x18` \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x17terminationJournalEntry\x12\x64\n\x1ftermination_module_type_profile\x18\x61 \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x1cterminationModuleTypeProfile\x12N\n\x17termination_custom_link\x18\x62 \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x15terminationCustomLink\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\"\xb3\x06\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\x12-\n\x06tenant\x18\x0e \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\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\t\n\x07_tenant\"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\"\xd7\x08\n\x0eVirtualMachine\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x65\n\x06status\x18\x02 \x01(\tBH\xfa\x42\x45rCR\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x06\x66\x61iledR\x07offlineR\x06pausedR\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\"\xb6\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\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\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_comments\"\xff%\n\x0b\x43ustomField\x12\x89\x01\n\x04type\x18\x01 \x01(\tBu\xfa\x42rrpR\x07\x62ooleanR\x04\x64\x61teR\x08\x64\x61tetimeR\x07\x64\x65\x63imalR\x07integerR\x04jsonR\x08longtextR\x0bmultiobjectR\x0bmultiselectR\x06objectR\x06selectR\x04textR\x03urlR\x04type\x12\xbe\x0e\n\x13related_object_type\x18\x02 \x01(\tB\x88\x0e\xfa\x42\x84\x0er\x81\x0eR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1f\x63ircuits.circuitgroupassignmentR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x0e\x64\x63im.cablepathR\x15\x64\x63im.cableterminationR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x12\x65xtras.customfieldR\x1b\x65xtras.customfieldchoicesetR\x11\x65xtras.customlinkR\x13\x65xtras.journalentryR\nextras.tagR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x18ipam.fhrpgroupassignmentR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x19tenancy.contactassignmentR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkH\x00R\x11relatedObjectType\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\"\n\ngroup_name\x18\x05 \x01(\tH\x02R\tgroupName\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08required\x18\x07 \x01(\x08H\x04R\x08required\x88\x01\x01\x12\x1b\n\x06unique\x18\x08 \x01(\x08H\x05R\x06unique\x88\x01\x01\x12(\n\rsearch_weight\x18\t \x01(\x03H\x06R\x0csearchWeight\x88\x01\x01\x12\x45\n\x0c\x66ilter_logic\x18\n \x01(\tB\x1d\xfa\x42\x1ar\x18R\x08\x64isabledR\x05\x65xactR\x05looseH\x07R\x0b\x66ilterLogic\x88\x01\x01\x12\x41\n\nui_visible\x18\x0b \x01(\tB\x1d\xfa\x42\x1ar\x18R\x06\x61lwaysR\x06hiddenR\x06if-setH\x08R\tuiVisible\x88\x01\x01\x12<\n\x0bui_editable\x18\x0c \x01(\tB\x16\xfa\x42\x13r\x11R\x06hiddenR\x02noR\x03yesH\tR\nuiEditable\x88\x01\x01\x12&\n\x0cis_cloneable\x18\r \x01(\x08H\nR\x0bisCloneable\x88\x01\x01\x12\x1d\n\x07\x64\x65\x66\x61ult\x18\x0e \x01(\tH\x0bR\x07\x64\x65\x66\x61ult\x88\x01\x01\x12\x37\n\x15related_object_filter\x18\x0f \x01(\tH\x0cR\x13relatedObjectFilter\x88\x01\x01\x12\x1b\n\x06weight\x18\x10 \x01(\x03H\rR\x06weight\x88\x01\x01\x12\x32\n\x12validation_minimum\x18\x11 \x01(\x01H\x0eR\x11validationMinimum\x88\x01\x01\x12\x32\n\x12validation_maximum\x18\x12 \x01(\x01H\x0fR\x11validationMaximum\x88\x01\x01\x12.\n\x10validation_regex\x18\x13 \x01(\tH\x10R\x0fvalidationRegex\x88\x01\x01\x12\x42\n\nchoice_set\x18\x14 \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x11R\tchoiceSet\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x15 \x01(\tH\x12R\x08\x63omments\x88\x01\x01\x12\xa2\r\n\x0cobject_types\x18\x16 \x03(\tB\xfe\x0c\xfa\x42\xfa\x0c\x92\x01\xf6\x0c\"\xf3\x0cr\xf0\x0cR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1f\x63ircuits.circuitgroupassignmentR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x13\x65xtras.journalentryR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x19tenancy.contactassignmentR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkR\x0bobjectTypesB\x16\n\x14_related_object_typeB\x08\n\x06_labelB\r\n\x0b_group_nameB\x0e\n\x0c_descriptionB\x0b\n\t_requiredB\t\n\x07_uniqueB\x10\n\x0e_search_weightB\x0f\n\r_filter_logicB\r\n\x0b_ui_visibleB\x0e\n\x0c_ui_editableB\x0f\n\r_is_cloneableB\n\n\x08_defaultB\x18\n\x16_related_object_filterB\t\n\x07_weightB\x15\n\x13_validation_minimumB\x15\n\x13_validation_maximumB\x13\n\x11_validation_regexB\r\n\x0b_choice_setB\x0b\n\t_comments\"\xb2\x02\n\x14\x43ustomFieldChoiceSet\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\x12H\n\x0c\x62\x61se_choices\x18\x03 \x01(\tB \xfa\x42\x1dr\x1bR\x04IATAR\x08ISO_3166R\tUN_LOCODEH\x01R\x0b\x62\x61seChoices\x88\x01\x01\x12\x36\n\x14order_alphabetically\x18\x04 \x01(\x08H\x02R\x13orderAlphabetically\x88\x01\x01\x12#\n\rextra_choices\x18\x05 \x03(\tR\x0c\x65xtraChoicesB\x0e\n\x0c_descriptionB\x0f\n\r_base_choicesB\x17\n\x15_order_alphabetically\"\xd1\x43\n\x0cJournalEntry\x12?\n\x13\x61ssigned_object_asn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x11\x61ssignedObjectAsn\x12O\n\x19\x61ssigned_object_asn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x16\x61ssignedObjectAsnRange\x12Q\n\x19\x61ssigned_object_aggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x17\x61ssignedObjectAggregate\x12\x45\n\x15\x61ssigned_object_cable\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x13\x61ssignedObjectCable\x12R\n\x1a\x61ssigned_object_cable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x17\x61ssignedObjectCablePath\x12g\n!assigned_object_cable_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x1e\x61ssignedObjectCableTermination\x12K\n\x17\x61ssigned_object_circuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x15\x61ssignedObjectCircuit\x12[\n\x1d\x61ssigned_object_circuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x1a\x61ssignedObjectCircuitGroup\x12z\n(assigned_object_circuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R$assignedObjectCircuitGroupAssignment\x12m\n#assigned_object_circuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R assignedObjectCircuitTermination\x12X\n\x1c\x61ssigned_object_circuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x19\x61ssignedObjectCircuitType\x12K\n\x17\x61ssigned_object_cluster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x15\x61ssignedObjectCluster\x12[\n\x1d\x61ssigned_object_cluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x1a\x61ssignedObjectClusterGroup\x12X\n\x1c\x61ssigned_object_cluster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x19\x61ssignedObjectClusterType\x12X\n\x1c\x61ssigned_object_console_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x19\x61ssignedObjectConsolePort\x12k\n#assigned_object_console_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1f\x61ssignedObjectConsoleServerPort\x12K\n\x17\x61ssigned_object_contact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x15\x61ssignedObjectContact\x12j\n\"assigned_object_contact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x1f\x61ssignedObjectContactAssignment\x12[\n\x1d\x61ssigned_object_contact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x1a\x61ssignedObjectContactGroup\x12X\n\x1c\x61ssigned_object_contact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x19\x61ssignedObjectContactRole\x12X\n\x1c\x61ssigned_object_custom_field\x18\x15 \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x19\x61ssignedObjectCustomField\x12u\n\'assigned_object_custom_field_choice_set\x18\x16 \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\"assignedObjectCustomFieldChoiceSet\x12H\n\x16\x61ssigned_object_device\x18\x17 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x14\x61ssignedObjectDevice\x12R\n\x1a\x61ssigned_object_device_bay\x18\x18 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x17\x61ssignedObjectDeviceBay\x12U\n\x1b\x61ssigned_object_device_role\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x18\x61ssignedObjectDeviceRole\x12U\n\x1b\x61ssigned_object_device_type\x18\x1a \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x18\x61ssignedObjectDeviceType\x12R\n\x1a\x61ssigned_object_fhrp_group\x18\x1b \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x17\x61ssignedObjectFhrpGroup\x12q\n%assigned_object_fhrp_group_assignment\x18\x1c \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R!assignedObjectFhrpGroupAssignment\x12R\n\x1a\x61ssigned_object_front_port\x18\x1d \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x17\x61ssignedObjectFrontPort\x12R\n\x1a\x61ssigned_object_ike_policy\x18\x1e \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x17\x61ssignedObjectIkePolicy\x12X\n\x1c\x61ssigned_object_ike_proposal\x18\x1f \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x19\x61ssignedObjectIkeProposal\x12R\n\x1a\x61ssigned_object_ip_address\x18 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x17\x61ssignedObjectIpAddress\x12L\n\x18\x61ssigned_object_ip_range\x18! \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x15\x61ssignedObjectIpRange\x12Y\n\x1d\x61ssigned_object_ip_sec_policy\x18\" \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x19\x61ssignedObjectIpSecPolicy\x12\\\n\x1e\x61ssigned_object_ip_sec_profile\x18# \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x1a\x61ssignedObjectIpSecProfile\x12_\n\x1f\x61ssigned_object_ip_sec_proposal\x18$ \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x1b\x61ssignedObjectIpSecProposal\x12Q\n\x19\x61ssigned_object_interface\x18% \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x17\x61ssignedObjectInterface\x12^\n\x1e\x61ssigned_object_inventory_item\x18& \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x1b\x61ssignedObjectInventoryItem\x12k\n#assigned_object_inventory_item_role\x18\' \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x1f\x61ssignedObjectInventoryItemRole\x12[\n\x1d\x61ssigned_object_journal_entry\x18( \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x1a\x61ssignedObjectJournalEntry\x12\x45\n\x15\x61ssigned_object_l2vpn\x18) \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x13\x61ssignedObjectL2vpn\x12g\n!assigned_object_l2vpn_termination\x18* \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x1e\x61ssignedObjectL2vpnTermination\x12N\n\x18\x61ssigned_object_location\x18+ \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x16\x61ssignedObjectLocation\x12U\n\x1b\x61ssigned_object_mac_address\x18, \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x18\x61ssignedObjectMacAddress\x12Z\n\x1c\x61ssigned_object_manufacturer\x18- \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x1a\x61ssignedObjectManufacturer\x12H\n\x16\x61ssigned_object_module\x18. \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x14\x61ssignedObjectModule\x12R\n\x1a\x61ssigned_object_module_bay\x18/ \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x17\x61ssignedObjectModuleBay\x12U\n\x1b\x61ssigned_object_module_type\x18\x30 \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x18\x61ssignedObjectModuleType\x12k\n#assigned_object_module_type_profile\x18\x31 \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x1f\x61ssignedObjectModuleTypeProfile\x12N\n\x18\x61ssigned_object_platform\x18\x32 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x16\x61ssignedObjectPlatform\x12R\n\x1a\x61ssigned_object_power_feed\x18\x33 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x17\x61ssignedObjectPowerFeed\x12X\n\x1c\x61ssigned_object_power_outlet\x18\x34 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x19\x61ssignedObjectPowerOutlet\x12U\n\x1b\x61ssigned_object_power_panel\x18\x35 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x18\x61ssignedObjectPowerPanel\x12R\n\x1a\x61ssigned_object_power_port\x18\x36 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x17\x61ssignedObjectPowerPort\x12H\n\x16\x61ssigned_object_prefix\x18\x37 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x14\x61ssignedObjectPrefix\x12N\n\x18\x61ssigned_object_provider\x18\x38 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x16\x61ssignedObjectProvider\x12\x64\n assigned_object_provider_account\x18\x39 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x1d\x61ssignedObjectProviderAccount\x12\x64\n assigned_object_provider_network\x18: \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1d\x61ssignedObjectProviderNetwork\x12?\n\x13\x61ssigned_object_rir\x18; \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x11\x61ssignedObjectRir\x12\x42\n\x14\x61ssigned_object_rack\x18< \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x12\x61ssignedObjectRack\x12\x64\n assigned_object_rack_reservation\x18= \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x1d\x61ssignedObjectRackReservation\x12O\n\x19\x61ssigned_object_rack_role\x18> \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x16\x61ssignedObjectRackRole\x12O\n\x19\x61ssigned_object_rack_type\x18? \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x16\x61ssignedObjectRackType\x12O\n\x19\x61ssigned_object_rear_port\x18@ \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x16\x61ssignedObjectRearPort\x12H\n\x16\x61ssigned_object_region\x18\x41 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x14\x61ssignedObjectRegion\x12\x42\n\x14\x61ssigned_object_role\x18\x42 \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x12\x61ssignedObjectRole\x12X\n\x1c\x61ssigned_object_route_target\x18\x43 \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x19\x61ssignedObjectRouteTarget\x12K\n\x17\x61ssigned_object_service\x18\x44 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x15\x61ssignedObjectService\x12\x42\n\x14\x61ssigned_object_site\x18\x45 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x12\x61ssignedObjectSite\x12R\n\x1a\x61ssigned_object_site_group\x18\x46 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x17\x61ssignedObjectSiteGroup\x12?\n\x13\x61ssigned_object_tag\x18G \x01(\x0b\x32\r.diode.v1.TagH\x00R\x11\x61ssignedObjectTag\x12H\n\x16\x61ssigned_object_tenant\x18H \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x14\x61ssignedObjectTenant\x12X\n\x1c\x61ssigned_object_tenant_group\x18I \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x19\x61ssignedObjectTenantGroup\x12H\n\x16\x61ssigned_object_tunnel\x18J \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x14\x61ssignedObjectTunnel\x12X\n\x1c\x61ssigned_object_tunnel_group\x18K \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x19\x61ssignedObjectTunnelGroup\x12j\n\"assigned_object_tunnel_termination\x18L \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1f\x61ssignedObjectTunnelTermination\x12\x42\n\x14\x61ssigned_object_vlan\x18M \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x12\x61ssignedObjectVlan\x12R\n\x1a\x61ssigned_object_vlan_group\x18N \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x17\x61ssignedObjectVlanGroup\x12w\n\'assigned_object_vlan_translation_policy\x18O \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R#assignedObjectVlanTranslationPolicy\x12q\n%assigned_object_vlan_translation_rule\x18P \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R!assignedObjectVlanTranslationRule\x12X\n\x1c\x61ssigned_object_vm_interface\x18Q \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x19\x61ssignedObjectVmInterface\x12?\n\x13\x61ssigned_object_vrf\x18R \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x11\x61ssignedObjectVrf\x12\x61\n\x1f\x61ssigned_object_virtual_chassis\x18S \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x1c\x61ssignedObjectVirtualChassis\x12\x61\n\x1f\x61ssigned_object_virtual_circuit\x18T \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x1c\x61ssignedObjectVirtualCircuit\x12\x83\x01\n+assigned_object_virtual_circuit_termination\x18U \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\'assignedObjectVirtualCircuitTermination\x12n\n$assigned_object_virtual_circuit_type\x18V \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R assignedObjectVirtualCircuitType\x12t\n&assigned_object_virtual_device_context\x18W \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\"assignedObjectVirtualDeviceContext\x12X\n\x1c\x61ssigned_object_virtual_disk\x18X \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x19\x61ssignedObjectVirtualDisk\x12\x61\n\x1f\x61ssigned_object_virtual_machine\x18Y \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x1c\x61ssignedObjectVirtualMachine\x12X\n\x1c\x61ssigned_object_wireless_lan\x18Z \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x19\x61ssignedObjectWirelessLan\x12h\n\"assigned_object_wireless_lan_group\x18[ \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x1e\x61ssignedObjectWirelessLanGroup\x12[\n\x1d\x61ssigned_object_wireless_link\x18\\ \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x1a\x61ssignedObjectWirelessLink\x12U\n\x1b\x61ssigned_object_custom_link\x18\x61 \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x18\x61ssignedObjectCustomLink\x12>\n\x04kind\x18] \x01(\tB%\xfa\x42\"r R\x06\x64\x61ngerR\x04infoR\x07successR\x07warningH\x01R\x04kind\x88\x01\x01\x12\x1a\n\x08\x63omments\x18^ \x01(\tR\x08\x63omments\x12!\n\x04tags\x18_ \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18` \x03(\x0b\x32(.diode.v1.JournalEntry.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\x11\n\x0f\x61ssigned_objectB\x07\n\x05_kind\"\x88\x03\n\x11ModuleTypeProfile\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\x1b\n\x06schema\x18\x03 \x01(\tH\x01R\x06schema\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x04 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18\x06 \x03(\x0b\x32-.diode.v1.ModuleTypeProfile.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_schemaB\x0b\n\t_comments\"\xa8\x10\n\nCustomLink\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1d\n\x07\x65nabled\x18\x02 \x01(\x08H\x00R\x07\x65nabled\x88\x01\x01\x12\x1b\n\tlink_text\x18\x03 \x01(\tR\x08linkText\x12\x19\n\x08link_url\x18\x04 \x01(\tR\x07linkUrl\x12\x1b\n\x06weight\x18\x05 \x01(\x03H\x01R\x06weight\x88\x01\x01\x12\"\n\ngroup_name\x18\x06 \x01(\tH\x02R\tgroupName\x88\x01\x01\x12\x9a\x01\n\x0c\x62utton_class\x18\x07 \x01(\tBr\xfa\x42ormR\x05\x62lackR\x04\x62lueR\x04\x63yanR\x07\x64\x65\x66\x61ultR\nghost-darkR\x04grayR\x05greenR\x06indigoR\x06orangeR\x04pinkR\x06purpleR\x03redR\x04tealR\x05whiteR\x06yellowH\x03R\x0b\x62uttonClass\x88\x01\x01\x12\"\n\nnew_window\x18\x08 \x01(\x08H\x04R\tnewWindow\x88\x01\x01\x12\xe6\x0c\n\x0cobject_types\x18\t \x03(\tB\xc2\x0c\xfa\x42\xbe\x0c\x92\x01\xba\x0c\"\xb7\x0cr\xb4\x0cR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x13\x65xtras.journalentryR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkR\x0bobjectTypesB\n\n\x08_enabledB\t\n\x07_weightB\r\n\x0b_group_nameB\x0f\n\r_button_classB\r\n\x0b_new_window2N\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\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17validate/validate.proto\"\xa2,\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\x0cwirelessLink\x12:\n\x0c\x63ustom_field\x18Z \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x0b\x63ustomField\x12W\n\x17\x63ustom_field_choice_set\x18[ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x14\x63ustomFieldChoiceSet\x12=\n\rjournal_entry\x18\\ \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x0cjournalEntry\x12M\n\x13module_type_profile\x18] \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x11moduleTypeProfile\x12\x37\n\x0b\x63ustom_link\x18^ \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\ncustomLink\x12\x33\n\x08metadata\x18_ \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadataB\x08\n\x06\x65ntity\"\x99\x03\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\x12\x33\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"(\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\"\xf9\x04\n\x07\x43ontact\x12\x35\n\x05group\x18\x01 \x01(\x0b\x32\x16.diode.v1.ContactGroupB\x02\x18\x01H\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\x12.\n\x06groups\x18\x0c \x03(\x0b\x32\x16.diode.v1.ContactGroupR\x06groups\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\"\x82\x38\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\x12G\n\x13object_custom_field\x18^ \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x11objectCustomField\x12\x64\n\x1eobject_custom_field_choice_set\x18_ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1aobjectCustomFieldChoiceSet\x12J\n\x14object_journal_entry\x18` \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x12objectJournalEntry\x12Z\n\x1aobject_module_type_profile\x18\x61 \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x17objectModuleTypeProfile\x12\x44\n\x12object_custom_link\x18\x62 \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x10objectCustomLink\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\"\xaa\x03\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\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\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\"\xbb+\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\x0cwirelessLink\x12:\n\x0c\x63ustom_field\x18Y \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x0b\x63ustomField\x12W\n\x17\x63ustom_field_choice_set\x18Z \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x14\x63ustomFieldChoiceSet\x12=\n\rjournal_entry\x18[ \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x0cjournalEntry\x12M\n\x13module_type_profile\x18\\ \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x11moduleTypeProfile\x12\x37\n\x0b\x63ustom_link\x18] \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\ncustomLinkB\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\"\xf3\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\x12\x31\n\x06parent\x18\x08 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x03R\x06parent\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\t \x01(\tH\x04R\x08\x63omments\x88\x01\x01\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_descriptionB\t\n\x07_parentB\x0b\n\t_comments\"\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\"\xe5\x39\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\x12M\n\x16interface_custom_field\x18[ \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x14interfaceCustomField\x12j\n!interface_custom_field_choice_set\x18\\ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1dinterfaceCustomFieldChoiceSet\x12P\n\x17interface_journal_entry\x18] \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x15interfaceJournalEntry\x12`\n\x1dinterface_module_type_profile\x18^ \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x1ainterfaceModuleTypeProfile\x12J\n\x15interface_custom_link\x18_ \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x13interfaceCustomLink\x12\x1a\n\x08priority\x18Z \x01(\x03R\x08priorityB\x0b\n\tinterface\"\xd1\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\xc4\x03\n\x04type\x18\x05 \x01(\tB\xaf\x03\xfa\x42\xab\x03r\xa8\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\x06\x66\x63-apcR\x05\x66\x63-pcR\x06\x66\x63-upcR\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\"\xe7\x34\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\x12objectWirelessLink\x12G\n\x13object_custom_field\x18Y \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x11objectCustomField\x12\x64\n\x1eobject_custom_field_choice_set\x18Z \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1aobjectCustomFieldChoiceSet\x12J\n\x14object_journal_entry\x18[ \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x12objectJournalEntry\x12Z\n\x1aobject_module_type_profile\x18\\ \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x17objectModuleTypeProfile\x12\x44\n\x12object_custom_link\x18] \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x10objectCustomLinkB\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 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x1d\x61ssignedObjectProviderAccount\x12\x64\n assigned_object_provider_network\x18? \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1d\x61ssignedObjectProviderNetwork\x12?\n\x13\x61ssigned_object_rir\x18@ \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x11\x61ssignedObjectRir\x12\x42\n\x14\x61ssigned_object_rack\x18\x41 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x12\x61ssignedObjectRack\x12\x64\n assigned_object_rack_reservation\x18\x42 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x1d\x61ssignedObjectRackReservation\x12O\n\x19\x61ssigned_object_rack_role\x18\x43 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x16\x61ssignedObjectRackRole\x12O\n\x19\x61ssigned_object_rack_type\x18\x44 \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x16\x61ssignedObjectRackType\x12O\n\x19\x61ssigned_object_rear_port\x18\x45 \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x16\x61ssignedObjectRearPort\x12H\n\x16\x61ssigned_object_region\x18\x46 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x14\x61ssignedObjectRegion\x12\x42\n\x14\x61ssigned_object_role\x18G \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x12\x61ssignedObjectRole\x12X\n\x1c\x61ssigned_object_route_target\x18H \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x19\x61ssignedObjectRouteTarget\x12K\n\x17\x61ssigned_object_service\x18I \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x15\x61ssignedObjectService\x12\x42\n\x14\x61ssigned_object_site\x18J \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x12\x61ssignedObjectSite\x12R\n\x1a\x61ssigned_object_site_group\x18K \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x17\x61ssignedObjectSiteGroup\x12?\n\x13\x61ssigned_object_tag\x18L \x01(\x0b\x32\r.diode.v1.TagH\x00R\x11\x61ssignedObjectTag\x12H\n\x16\x61ssigned_object_tenant\x18M \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x14\x61ssignedObjectTenant\x12X\n\x1c\x61ssigned_object_tenant_group\x18N \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x19\x61ssignedObjectTenantGroup\x12H\n\x16\x61ssigned_object_tunnel\x18O \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x14\x61ssignedObjectTunnel\x12X\n\x1c\x61ssigned_object_tunnel_group\x18P \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x19\x61ssignedObjectTunnelGroup\x12j\n\"assigned_object_tunnel_termination\x18Q \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1f\x61ssignedObjectTunnelTermination\x12R\n\x1a\x61ssigned_object_vlan_group\x18R \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x17\x61ssignedObjectVlanGroup\x12w\n\'assigned_object_vlan_translation_policy\x18S \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R#assignedObjectVlanTranslationPolicy\x12q\n%assigned_object_vlan_translation_rule\x18T \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R!assignedObjectVlanTranslationRule\x12?\n\x13\x61ssigned_object_vrf\x18U \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x11\x61ssignedObjectVrf\x12\x61\n\x1f\x61ssigned_object_virtual_chassis\x18V \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x1c\x61ssignedObjectVirtualChassis\x12\x61\n\x1f\x61ssigned_object_virtual_circuit\x18W \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x1c\x61ssignedObjectVirtualCircuit\x12\x83\x01\n+assigned_object_virtual_circuit_termination\x18X \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\'assignedObjectVirtualCircuitTermination\x12n\n$assigned_object_virtual_circuit_type\x18Y \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R assignedObjectVirtualCircuitType\x12t\n&assigned_object_virtual_device_context\x18Z \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\"assignedObjectVirtualDeviceContext\x12X\n\x1c\x61ssigned_object_virtual_disk\x18[ \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x19\x61ssignedObjectVirtualDisk\x12\x61\n\x1f\x61ssigned_object_virtual_machine\x18\\ \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x1c\x61ssignedObjectVirtualMachine\x12X\n\x1c\x61ssigned_object_wireless_lan\x18] \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x19\x61ssignedObjectWirelessLan\x12h\n\"assigned_object_wireless_lan_group\x18^ \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x1e\x61ssignedObjectWirelessLanGroup\x12[\n\x1d\x61ssigned_object_wireless_link\x18_ \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x1a\x61ssignedObjectWirelessLink\x12U\n\x1b\x61ssigned_object_custom_link\x18` \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x18\x61ssignedObjectCustomLink\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12Q\n\rcustom_fields\x18\x06 \x03(\x0b\x32,.diode.v1.L2VPNTermination.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\x11\n\x0f\x61ssigned_object\"\x8d\x05\n\x08Location\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\"\n\x04site\x18\x03 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12/\n\x06parent\x18\x04 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x06parent\x88\x01\x01\x12V\n\x06status\x18\x05 \x01(\tB9\xfa\x42\x36r4R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x07plannedR\x07retiredR\x07stagingH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x1f\n\x08\x66\x61\x63ility\x18\x07 \x01(\tH\x03R\x08\x66\x61\x63ility\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\n \x03(\x0b\x32$.diode.v1.Location.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x05R\x08\x63omments\x88\x01\x01\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\t\n\x07_statusB\t\n\x07_tenantB\x0b\n\t_facilityB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\x9f\x04\n\nMACAddress\x12\x1f\n\x0bmac_address\x18\x01 \x01(\tR\nmacAddress\x12Q\n\x19\x61ssigned_object_interface\x18\x02 \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x17\x61ssignedObjectInterface\x12X\n\x1c\x61ssigned_object_vm_interface\x18\x03 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x19\x61ssignedObjectVmInterface\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\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.MACAddress.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\x11\n\x0f\x61ssigned_objectB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x02\n\x0cManufacturer\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.Manufacturer.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\"\x8d\x05\n\x06Module\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12\x32\n\nmodule_bay\x18\x02 \x01(\x0b\x32\x13.diode.v1.ModuleBayR\tmoduleBay\x12\x35\n\x0bmodule_type\x18\x03 \x01(\x0b\x32\x14.diode.v1.ModuleTypeR\nmoduleType\x12]\n\x06status\x18\x04 \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\x1b\n\x06serial\x18\x05 \x01(\tH\x01R\x06serial\x88\x01\x01\x12 \n\tasset_tag\x18\x06 \x01(\tH\x02R\x08\x61ssetTag\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\x12G\n\rcustom_fields\x18\n \x03(\x0b\x32\".diode.v1.Module.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\t\n\x07_serialB\x0c\n\n_asset_tagB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xb0\x04\n\tModuleBay\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@\n\x10installed_module\x18\x04 \x01(\x0b\x32\x10.diode.v1.ModuleH\x01R\x0finstalledModule\x88\x01\x01\x12\x19\n\x05label\x18\x05 \x01(\tH\x02R\x05label\x88\x01\x01\x12\x1f\n\x08position\x18\x06 \x01(\tH\x03R\x08position\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\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.ModuleBay.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\x13\n\x11_installed_moduleB\x08\n\x06_labelB\x0b\n\t_positionB\x0e\n\x0c_description\"\xbb\x06\n\nModuleType\x12:\n\x0cmanufacturer\x18\x01 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12\x14\n\x05model\x18\x02 \x01(\tR\x05model\x12$\n\x0bpart_number\x18\x03 \x01(\tH\x00R\npartNumber\x88\x01\x01\x12w\n\x07\x61irflow\x18\x04 \x01(\tBX\xfa\x42UrSR\rfront-to-rearR\rleft-to-rightR\x07passiveR\rrear-to-frontR\rright-to-leftR\x0cside-to-rearH\x01R\x07\x61irflow\x88\x01\x01\x12\x1b\n\x06weight\x18\x05 \x01(\x01H\x02R\x06weight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x06 \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x03R\nweightUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x08 \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12K\n\rcustom_fields\x18\n \x03(\x0b\x32&.diode.v1.ModuleType.CustomFieldsEntryR\x0c\x63ustomFields\x12:\n\x07profile\x18\x0b \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x06R\x07profile\x88\x01\x01\x12#\n\nattributes\x18\x0c \x01(\tH\x07R\nattributes\x88\x01\x01\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_part_numberB\n\n\x08_airflowB\t\n\x07_weightB\x0e\n\x0c_weight_unitB\x0e\n\x0c_descriptionB\x0b\n\t_commentsB\n\n\x08_profileB\r\n\x0b_attributes\"\xf0\x03\n\x08Platform\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12?\n\x0cmanufacturer\x18\x03 \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\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\x12I\n\rcustom_fields\x18\x06 \x03(\x0b\x32$.diode.v1.Platform.CustomFieldsEntryR\x0c\x63ustomFields\x12/\n\x06parent\x18\x07 \x01(\x0b\x32\x12.diode.v1.PlatformH\x02R\x06parent\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x08 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\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\x0f\n\r_manufacturerB\x0e\n\x0c_descriptionB\t\n\x07_parentB\x0b\n\t_comments\"\xd9\x07\n\tPowerFeed\x12\x35\n\x0bpower_panel\x18\x01 \x01(\x0b\x32\x14.diode.v1.PowerPanelR\npowerPanel\x12\'\n\x04rack\x18\x02 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x04rack\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x44\n\x06status\x18\x04 \x01(\tB\'\xfa\x42$r\"R\x06\x61\x63tiveR\x06\x66\x61iledR\x07offlineR\x07plannedH\x01R\x06status\x88\x01\x01\x12\x32\n\x04type\x18\x05 \x01(\tB\x19\xfa\x42\x16r\x14R\x07primaryR\tredundantH\x02R\x04type\x88\x01\x01\x12*\n\x06supply\x18\x06 \x01(\tB\r\xfa\x42\nr\x08R\x02\x61\x63R\x02\x64\x63H\x03R\x06supply\x88\x01\x01\x12;\n\x05phase\x18\x07 \x01(\tB \xfa\x42\x1dr\x1bR\x0csingle-phaseR\x0bthree-phaseH\x04R\x05phase\x88\x01\x01\x12\x1d\n\x07voltage\x18\x08 \x01(\x03H\x05R\x07voltage\x88\x01\x01\x12\x1f\n\x08\x61mperage\x18\t \x01(\x03H\x06R\x08\x61mperage\x88\x01\x01\x12,\n\x0fmax_utilization\x18\n \x01(\x03H\x07R\x0emaxUtilization\x88\x01\x01\x12*\n\x0emark_connected\x18\x0b \x01(\x08H\x08R\rmarkConnected\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0c \x01(\tH\tR\x0b\x64\x65scription\x88\x01\x01\x12-\n\x06tenant\x18\r \x01(\x0b\x32\x10.diode.v1.TenantH\nR\x06tenant\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\x0bR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x10 \x03(\x0b\x32%.diode.v1.PowerFeed.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_rackB\t\n\x07_statusB\x07\n\x05_typeB\t\n\x07_supplyB\x08\n\x06_phaseB\n\n\x08_voltageB\x0b\n\t_amperageB\x12\n\x10_max_utilizationB\x11\n\x0f_mark_connectedB\x0e\n\x0c_descriptionB\t\n\x07_tenantB\x0b\n\t_comments\"\xd8\x10\n\x0bPowerOutlet\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\xea\n\n\x04type\x18\x05 \x01(\tB\xd0\n\xfa\x42\xcc\nr\xc9\nR\x07\x43S6360CR\x07\x43S6364CR\x07\x43S8164CR\x07\x43S8264CR\x07\x43S8364CR\x07\x43S8464CR\x0b\x64\x63-terminalR\teaton-c39R\thardwiredR\x07hdot-cxR\x11iec-60309-2p-e-4hR\x11iec-60309-2p-e-6hR\x11iec-60309-2p-e-9hR\x11iec-60309-3p-e-4hR\x11iec-60309-3p-e-6hR\x11iec-60309-3p-e-9hR\x13iec-60309-3p-n-e-4hR\x13iec-60309-3p-n-e-6hR\x13iec-60309-3p-n-e-9hR\x12iec-60309-p-n-e-4hR\x12iec-60309-p-n-e-6hR\x12iec-60309-p-n-e-9hR\riec-60320-c13R\riec-60320-c15R\riec-60320-c17R\riec-60320-c19R\riec-60320-c21R\x0ciec-60320-c5R\x0ciec-60320-c7R\x0biec-60906-1R\x05ita-eR\x05ita-fR\x05ita-gR\x05ita-hR\x05ita-iR\x05ita-jR\x05ita-kR\x05ita-lR\x05ita-mR\x11ita-multistandardR\x05ita-nR\x05ita-oR\x13molex-micro-fit-1x2R\x13molex-micro-fit-2x2R\x13molex-micro-fit-2x4R\rnbr-14136-10aR\rnbr-14136-20aR\nnema-1-15rR\x0bnema-10-30rR\x0bnema-10-50rR\x0bnema-14-20rR\x0bnema-14-30rR\x0bnema-14-50rR\x0bnema-14-60rR\x0bnema-15-15rR\x0bnema-15-20rR\x0bnema-15-30rR\x0bnema-15-50rR\x0bnema-15-60rR\nnema-5-15rR\nnema-5-20rR\nnema-5-30rR\nnema-5-50rR\nnema-6-15rR\nnema-6-20rR\nnema-6-30rR\nnema-6-50rR\x0bnema-l1-15rR\x0cnema-l10-30rR\x0cnema-l14-20rR\x0cnema-l14-30rR\x0cnema-l14-50rR\x0cnema-l14-60rR\x0cnema-l15-20rR\x0cnema-l15-30rR\x0cnema-l15-50rR\x0cnema-l15-60rR\x0cnema-l21-20rR\x0cnema-l21-30rR\x0cnema-l22-20rR\x0cnema-l22-30rR\x0bnema-l5-15rR\x0bnema-l5-20rR\x0bnema-l5-30rR\x0bnema-l5-50rR\x0bnema-l6-15rR\x0bnema-l6-20rR\x0bnema-l6-30rR\x0bnema-l6-50rR\x14neutrik-powercon-20aR\x14neutrik-powercon-32aR\x16neutrik-powercon-true1R\x1aneutrik-powercon-true1-topR\x05otherR\nsaf-d-gridR\x13ubiquiti-smartpowerR\x05usb-aR\x05usb-cR\x0busb-micro-bH\x02R\x04type\x88\x01\x01\x12\x19\n\x05\x63olor\x18\x06 \x01(\tH\x03R\x05\x63olor\x88\x01\x01\x12\x37\n\npower_port\x18\x07 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x04R\tpowerPort\x88\x01\x01\x12.\n\x08\x66\x65\x65\x64_leg\x18\x08 \x01(\tB\x0e\xfa\x42\x0br\tR\x01\x41R\x01\x42R\x01\x43H\x05R\x07\x66\x65\x65\x64Leg\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\t \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\n \x01(\x08H\x07R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\x0b \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x0c \x03(\x0b\x32\'.diode.v1.PowerOutlet.CustomFieldsEntryR\x0c\x63ustomFields\x12=\n\x06status\x18\r \x01(\tB \xfa\x42\x1dr\x1bR\x08\x64isabledR\x07\x65nabledR\x06\x66\x61ultyH\x08R\x06status\x88\x01\x01\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_colorB\r\n\x0b_power_portB\x0b\n\t_feed_legB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connectedB\t\n\x07_status\"\xb8\x03\n\nPowerPanel\x12\"\n\x04site\x18\x01 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12\x33\n\x08location\x18\x02 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x08location\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\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.PowerPanel.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\x0b\n\t_locationB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\x90\x10\n\tPowerPort\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\xa2\x0b\n\x04type\x18\x05 \x01(\tB\x88\x0b\xfa\x42\x84\x0br\x81\x0bR\x07\x63s6361cR\x07\x63s6365cR\x07\x63s8165cR\x07\x63s8265cR\x07\x63s8365cR\x07\x63s8465cR\x0b\x64\x63-terminalR\thardwiredR\x11iec-60309-2p-e-4hR\x11iec-60309-2p-e-6hR\x11iec-60309-2p-e-9hR\x11iec-60309-3p-e-4hR\x11iec-60309-3p-e-6hR\x11iec-60309-3p-e-9hR\x13iec-60309-3p-n-e-4hR\x13iec-60309-3p-n-e-6hR\x13iec-60309-3p-n-e-9hR\x12iec-60309-p-n-e-4hR\x12iec-60309-p-n-e-6hR\x12iec-60309-p-n-e-9hR\riec-60320-c14R\riec-60320-c16R\riec-60320-c18R\riec-60320-c20R\riec-60320-c22R\x0ciec-60320-c6R\x0ciec-60320-c8R\x0biec-60906-1R\x05ita-cR\x05ita-eR\x06ita-efR\x05ita-fR\x05ita-gR\x05ita-hR\x05ita-iR\x05ita-jR\x05ita-kR\x05ita-lR\x05ita-mR\x05ita-nR\x05ita-oR\x13molex-micro-fit-1x2R\x13molex-micro-fit-2x2R\x13molex-micro-fit-2x4R\rnbr-14136-10aR\rnbr-14136-20aR\nnema-1-15pR\x0bnema-10-30pR\x0bnema-10-50pR\x0bnema-14-20pR\x0bnema-14-30pR\x0bnema-14-50pR\x0bnema-14-60pR\x0bnema-15-15pR\x0bnema-15-20pR\x0bnema-15-30pR\x0bnema-15-50pR\x0bnema-15-60pR\nnema-5-15pR\nnema-5-20pR\nnema-5-30pR\nnema-5-50pR\nnema-6-15pR\nnema-6-20pR\nnema-6-30pR\nnema-6-50pR\x0bnema-l1-15pR\x0cnema-l10-30pR\x0cnema-l14-20pR\x0cnema-l14-30pR\x0cnema-l14-50pR\x0cnema-l14-60pR\x0cnema-l15-20pR\x0cnema-l15-30pR\x0cnema-l15-50pR\x0cnema-l15-60pR\x0cnema-l21-20pR\x0cnema-l21-30pR\x0cnema-l22-20pR\x0cnema-l22-30pR\x0bnema-l5-15pR\x0bnema-l5-20pR\x0bnema-l5-30pR\x0bnema-l5-50pR\x0bnema-l6-15pR\x0bnema-l6-20pR\x0bnema-l6-30pR\x0bnema-l6-50pR\x13neutrik-powercon-20R\x13neutrik-powercon-32R\x16neutrik-powercon-true1R\x1aneutrik-powercon-true1-topR\x05otherR\nsaf-d-gridR\x13ubiquiti-smartpowerR\x07usb-3-bR\rusb-3-micro-bR\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\x0cmaximum_draw\x18\x06 \x01(\x03H\x03R\x0bmaximumDraw\x88\x01\x01\x12*\n\x0e\x61llocated_draw\x18\x07 \x01(\x03H\x04R\rallocatedDraw\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\t \x01(\x08H\x06R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x0b \x03(\x0b\x32%.diode.v1.PowerPort.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\x0f\n\r_maximum_drawB\x11\n\x0f_allocated_drawB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xc7\x07\n\x06Prefix\x12\x16\n\x06prefix\x18\x01 \x01(\tR\x06prefix\x12$\n\x03vrf\x18\x02 \x01(\x0b\x32\r.diode.v1.VRFH\x01R\x03vrf\x88\x01\x01\x12;\n\x0escope_location\x18\x03 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12\x35\n\x0cscope_region\x18\x04 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x05 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\x06 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12-\n\x06tenant\x18\x07 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\'\n\x04vlan\x18\x08 \x01(\x0b\x32\x0e.diode.v1.VLANH\x03R\x04vlan\x88\x01\x01\x12K\n\x06status\x18\t \x01(\tB.\xfa\x42+r)R\x06\x61\x63tiveR\tcontainerR\ndeprecatedR\x08reservedH\x04R\x06status\x88\x01\x01\x12\'\n\x04role\x18\n \x01(\x0b\x32\x0e.diode.v1.RoleH\x05R\x04role\x88\x01\x01\x12\x1c\n\x07is_pool\x18\x0b \x01(\x08H\x06R\x06isPool\x88\x01\x01\x12(\n\rmark_utilized\x18\x0c \x01(\x08H\x07R\x0cmarkUtilized\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\r \x01(\tH\x08R\x0b\x64\x65scription\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\x12G\n\rcustom_fields\x18\x10 \x03(\x0b\x32\".diode.v1.Prefix.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\x06\n\x04_vrfB\t\n\x07_tenantB\x07\n\x05_vlanB\t\n\x07_statusB\x07\n\x05_roleB\n\n\x08_is_poolB\x10\n\x0e_mark_utilizedB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x03\n\x08Provider\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\x1f\n\x08\x63omments\x18\x04 \x01(\tH\x01R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\x06 \x03(\x0b\x32$.diode.v1.Provider.CustomFieldsEntryR\x0c\x63ustomFields\x12\x35\n\x08\x61\x63\x63ounts\x18\x07 \x03(\x0b\x32\x19.diode.v1.ProviderAccountR\x08\x61\x63\x63ounts\x12!\n\x04\x61sns\x18\x08 \x03(\x0b\x32\r.diode.v1.ASNR\x04\x61sns\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\x0b\n\t_comments\"\xb4\x03\n\x0fProviderAccount\x12.\n\x08provider\x18\x01 \x01(\x0b\x32\x12.diode.v1.ProviderR\x08provider\x12\x17\n\x04name\x18\x02 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x18\n\x07\x61\x63\x63ount\x18\x03 \x01(\tR\x07\x61\x63\x63ount\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12P\n\rcustom_fields\x18\x07 \x03(\x0b\x32+.diode.v1.ProviderAccount.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\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbf\x03\n\x0fProviderNetwork\x12.\n\x08provider\x18\x01 \x01(\x0b\x32\x12.diode.v1.ProviderR\x08provider\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\"\n\nservice_id\x18\x03 \x01(\tH\x00R\tserviceId\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12P\n\rcustom_fields\x18\x07 \x03(\x0b\x32+.diode.v1.ProviderNetwork.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_service_idB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xdd\x02\n\x03RIR\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\"\n\nis_private\x18\x03 \x01(\x08H\x00R\tisPrivate\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\x12\x44\n\rcustom_fields\x18\x06 \x03(\x0b\x32\x1f.diode.v1.RIR.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_is_privateB\x0e\n\x0c_description\"\xec\r\n\x04Rack\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12$\n\x0b\x66\x61\x63ility_id\x18\x02 \x01(\tH\x00R\nfacilityId\x88\x01\x01\x12\"\n\x04site\x18\x03 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12\x33\n\x08location\x18\x04 \x01(\x0b\x32\x12.diode.v1.LocationH\x01R\x08location\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12T\n\x06status\x18\x06 \x01(\tB7\xfa\x42\x34r2R\x06\x61\x63tiveR\tavailableR\ndeprecatedR\x07plannedR\x08reservedH\x03R\x06status\x88\x01\x01\x12+\n\x04role\x18\x07 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x04R\x04role\x88\x01\x01\x12\x1b\n\x06serial\x18\x08 \x01(\tH\x05R\x06serial\x88\x01\x01\x12 \n\tasset_tag\x18\t \x01(\tH\x06R\x08\x61ssetTag\x88\x01\x01\x12\x34\n\track_type\x18\n \x01(\x0b\x32\x12.diode.v1.RackTypeH\x07R\x08rackType\x88\x01\x01\x12\x9d\x01\n\x0b\x66orm_factor\x18\x0b \x01(\tBw\xfa\x42trrR\x0c\x32-post-frameR\x0e\x34-post-cabinetR\x0c\x34-post-frameR\x0cwall-cabinetR\x15wall-cabinet-verticalR\nwall-frameR\x13wall-frame-verticalH\x08R\nformFactor\x88\x01\x01\x12(\n\x05width\x18\x0c \x01(\x03\x42\r\xfa\x42\n\"\x08\x30\n0\x13\x30\x15\x30\x17H\tR\x05width\x88\x01\x01\x12\x1e\n\x08u_height\x18\r \x01(\x03H\nR\x07uHeight\x88\x01\x01\x12(\n\rstarting_unit\x18\x0e \x01(\x03H\x0bR\x0cstartingUnit\x88\x01\x01\x12\x1b\n\x06weight\x18\x0f \x01(\x01H\x0cR\x06weight\x88\x01\x01\x12\"\n\nmax_weight\x18\x10 \x01(\x03H\rR\tmaxWeight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x11 \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x0eR\nweightUnit\x88\x01\x01\x12\"\n\ndesc_units\x18\x12 \x01(\x08H\x0fR\tdescUnits\x88\x01\x01\x12$\n\x0bouter_width\x18\x13 \x01(\x03H\x10R\nouterWidth\x88\x01\x01\x12$\n\x0bouter_depth\x18\x14 \x01(\x03H\x11R\nouterDepth\x88\x01\x01\x12\x31\n\nouter_unit\x18\x15 \x01(\tB\r\xfa\x42\nr\x08R\x02inR\x02mmH\x12R\touterUnit\x88\x01\x01\x12*\n\x0emounting_depth\x18\x16 \x01(\x03H\x13R\rmountingDepth\x88\x01\x01\x12\x42\n\x07\x61irflow\x18\x17 \x01(\tB#\xfa\x42 r\x1eR\rfront-to-rearR\rrear-to-frontH\x14R\x07\x61irflow\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x18 \x01(\tH\x15R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x19 \x01(\tH\x16R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x1a \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x45\n\rcustom_fields\x18\x1b \x03(\x0b\x32 .diode.v1.Rack.CustomFieldsEntryR\x0c\x63ustomFields\x12&\n\x0couter_height\x18\x1c \x01(\x03H\x17R\x0bouterHeight\x88\x01\x01\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_facility_idB\x0b\n\t_locationB\t\n\x07_tenantB\t\n\x07_statusB\x07\n\x05_roleB\t\n\x07_serialB\x0c\n\n_asset_tagB\x0c\n\n_rack_typeB\x0e\n\x0c_form_factorB\x08\n\x06_widthB\x0b\n\t_u_heightB\x10\n\x0e_starting_unitB\t\n\x07_weightB\r\n\x0b_max_weightB\x0e\n\x0c_weight_unitB\r\n\x0b_desc_unitsB\x0e\n\x0c_outer_widthB\x0e\n\x0c_outer_depthB\r\n\x0b_outer_unitB\x11\n\x0f_mounting_depthB\n\n\x08_airflowB\x0e\n\x0c_descriptionB\x0b\n\t_commentsB\x0f\n\r_outer_height\"\xee\x03\n\x0fRackReservation\x12\"\n\x04rack\x18\x01 \x01(\x0b\x32\x0e.diode.v1.RackR\x04rack\x12\x14\n\x05units\x18\x02 \x03(\x03R\x05units\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12 \n\x0b\x64\x65scription\x18\x04 \x01(\tR\x0b\x64\x65scription\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x01R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12P\n\rcustom_fields\x18\x07 \x03(\x0b\x32+.diode.v1.RackReservation.CustomFieldsEntryR\x0c\x63ustomFields\x12:\n\x06status\x18\x08 \x01(\tB\x1d\xfa\x42\x1ar\x18R\x06\x61\x63tiveR\x07pendingR\x05staleH\x02R\x06status\x88\x01\x01\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\x0b\n\t_commentsB\t\n\x07_status\"\xd9\x02\n\x08RackRole\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\x12I\n\rcustom_fields\x18\x06 \x03(\x0b\x32$.diode.v1.RackRole.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\"\xed\t\n\x08RackType\x12:\n\x0cmanufacturer\x18\x01 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12\x14\n\x05model\x18\x02 \x01(\tR\x05model\x12\x12\n\x04slug\x18\x03 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x9d\x01\n\x0b\x66orm_factor\x18\x05 \x01(\tBw\xfa\x42trrR\x0c\x32-post-frameR\x0e\x34-post-cabinetR\x0c\x34-post-frameR\x0cwall-cabinetR\x15wall-cabinet-verticalR\nwall-frameR\x13wall-frame-verticalH\x01R\nformFactor\x88\x01\x01\x12(\n\x05width\x18\x06 \x01(\x03\x42\r\xfa\x42\n\"\x08\x30\n0\x13\x30\x15\x30\x17H\x02R\x05width\x88\x01\x01\x12\x1e\n\x08u_height\x18\x07 \x01(\x03H\x03R\x07uHeight\x88\x01\x01\x12(\n\rstarting_unit\x18\x08 \x01(\x03H\x04R\x0cstartingUnit\x88\x01\x01\x12\"\n\ndesc_units\x18\t \x01(\x08H\x05R\tdescUnits\x88\x01\x01\x12$\n\x0bouter_width\x18\n \x01(\x03H\x06R\nouterWidth\x88\x01\x01\x12$\n\x0bouter_depth\x18\x0b \x01(\x03H\x07R\nouterDepth\x88\x01\x01\x12\x31\n\nouter_unit\x18\x0c \x01(\tB\r\xfa\x42\nr\x08R\x02inR\x02mmH\x08R\touterUnit\x88\x01\x01\x12\x1b\n\x06weight\x18\r \x01(\x01H\tR\x06weight\x88\x01\x01\x12\"\n\nmax_weight\x18\x0e \x01(\x03H\nR\tmaxWeight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x0f \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x0bR\nweightUnit\x88\x01\x01\x12*\n\x0emounting_depth\x18\x10 \x01(\x03H\x0cR\rmountingDepth\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x11 \x01(\tH\rR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x12 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\x13 \x03(\x0b\x32$.diode.v1.RackType.CustomFieldsEntryR\x0c\x63ustomFields\x12&\n\x0couter_height\x18\x14 \x01(\x03H\x0eR\x0bouterHeight\x88\x01\x01\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\x0e\n\x0c_form_factorB\x08\n\x06_widthB\x0b\n\t_u_heightB\x10\n\x0e_starting_unitB\r\n\x0b_desc_unitsB\x0e\n\x0c_outer_widthB\x0e\n\x0c_outer_depthB\r\n\x0b_outer_unitB\t\n\x07_weightB\r\n\x0b_max_weightB\x0e\n\x0c_weight_unitB\x11\n\x0f_mounting_depthB\x0b\n\t_commentsB\x0f\n\r_outer_height\"\x85\x08\n\x08RearPort\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\xc4\x03\n\x04type\x18\x05 \x01(\tB\xaf\x03\xfa\x42\xab\x03r\xa8\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\x06\x66\x63-apcR\x05\x66\x63-pcR\x06\x66\x63-upcR\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\tpositions\x18\x07 \x01(\x03H\x03R\tpositions\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\t \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\x0b \x03(\x0b\x32$.diode.v1.RearPort.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\x0c\n\n_positionsB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\x98\x03\n\x06Region\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12-\n\x06parent\x18\x03 \x01(\x0b\x32\x10.diode.v1.RegionH\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\x12G\n\rcustom_fields\x18\x06 \x03(\x0b\x32\".diode.v1.Region.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\xd4\x02\n\x04Role\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x1b\n\x06weight\x18\x03 \x01(\x03H\x00R\x06weight\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\x12\x45\n\rcustom_fields\x18\x06 \x03(\x0b\x32 .diode.v1.Role.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_weightB\x0e\n\x0c_description\"\x8e\x03\n\x0bRouteTarget\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x06tenant\x18\x02 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x04 \x01(\tH\x02R\x08\x63omments\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.RouteTarget.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_descriptionB\x0b\n\t_comments\"\x82\x07\n\x07Service\x12\x31\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceB\x02\x18\x01H\x01R\x06\x64\x65vice\x88\x01\x01\x12J\n\x0fvirtual_machine\x18\x02 \x01(\x0b\x32\x18.diode.v1.VirtualMachineB\x02\x18\x01H\x02R\x0evirtualMachine\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x36\n\x08protocol\x18\x04 \x01(\tB\x15\xfa\x42\x12r\x10R\x04sctpR\x03tcpR\x03udpH\x03R\x08protocol\x88\x01\x01\x12\x14\n\x05ports\x18\x05 \x03(\x03R\x05ports\x12%\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12H\n\rcustom_fields\x18\t \x03(\x0b\x32#.diode.v1.Service.CustomFieldsEntryR\x0c\x63ustomFields\x12\x35\n\x0bipaddresses\x18\n \x03(\x0b\x32\x13.diode.v1.IPAddressR\x0bipaddresses\x12\x44\n\x14parent_object_device\x18\x0b \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x12parentObjectDevice\x12N\n\x18parent_object_fhrp_group\x18\x0c \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x15parentObjectFhrpGroup\x12]\n\x1dparent_object_virtual_machine\x18\r \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x1aparentObjectVirtualMachine\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\x0f\n\rparent_objectB\t\n\x07_deviceB\x12\n\x10_virtual_machineB\x0b\n\t_protocolB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xd5\x07\n\x04Site\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12V\n\x06status\x18\x03 \x01(\tB9\xfa\x42\x36r4R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x07plannedR\x07retiredR\x07stagingH\x00R\x06status\x88\x01\x01\x12-\n\x06region\x18\x04 \x01(\x0b\x32\x10.diode.v1.RegionH\x01R\x06region\x88\x01\x01\x12.\n\x05group\x18\x05 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x02R\x05group\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x03R\x06tenant\x88\x01\x01\x12\x1f\n\x08\x66\x61\x63ility\x18\x07 \x01(\tH\x04R\x08\x66\x61\x63ility\x88\x01\x01\x12 \n\ttime_zone\x18\x08 \x01(\tH\x05R\x08timeZone\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\t \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12.\n\x10physical_address\x18\n \x01(\tH\x07R\x0fphysicalAddress\x88\x01\x01\x12.\n\x10shipping_address\x18\x0b \x01(\tH\x08R\x0fshippingAddress\x88\x01\x01\x12\x1f\n\x08latitude\x18\x0c \x01(\x01H\tR\x08latitude\x88\x01\x01\x12!\n\tlongitude\x18\r \x01(\x01H\nR\tlongitude\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\x0bR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x45\n\rcustom_fields\x18\x10 \x03(\x0b\x32 .diode.v1.Site.CustomFieldsEntryR\x0c\x63ustomFields\x12!\n\x04\x61sns\x18\x11 \x03(\x0b\x32\r.diode.v1.ASNR\x04\x61sns\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\t\n\x07_regionB\x08\n\x06_groupB\t\n\x07_tenantB\x0b\n\t_facilityB\x0c\n\n_time_zoneB\x0e\n\x0c_descriptionB\x13\n\x11_physical_addressB\x13\n\x11_shipping_addressB\x0b\n\t_latitudeB\x0c\n\n_longitudeB\x0b\n\t_comments\"\xa1\x03\n\tSiteGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x30\n\x06parent\x18\x03 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\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\x12J\n\rcustom_fields\x18\x06 \x03(\x0b\x32%.diode.v1.SiteGroup.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\xd6\x0e\n\x03Tag\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\x1b\n\x06weight\x18\x05 \x01(\x03H\x02R\x06weight\x88\x01\x01\x12\xa2\r\n\x0cobject_types\x18\x06 \x03(\tB\xfe\x0c\xfa\x42\xfa\x0c\x92\x01\xf6\x0c\"\xf3\x0cr\xf0\x0cR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1f\x63ircuits.circuitgroupassignmentR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x13\x65xtras.journalentryR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x19tenancy.contactassignmentR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkR\x0bobjectTypesB\x08\n\x06_colorB\x0e\n\x0c_descriptionB\t\n\x07_weight\"\x9a\x03\n\x06Tenant\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x30\n\x05group\x18\x03 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x05group\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12G\n\rcustom_fields\x18\x07 \x03(\x0b\x32\".diode.v1.Tenant.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\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xa7\x03\n\x0bTenantGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x32\n\x06parent\x18\x03 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\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\x12L\n\rcustom_fields\x18\x06 \x03(\x0b\x32\'.diode.v1.TenantGroup.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\xf6\x05\n\x06Tunnel\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x38\n\x06status\x18\x02 \x01(\tB \xfa\x42\x1dr\x1bR\x06\x61\x63tiveR\x08\x64isabledR\x07plannedR\x06status\x12\x30\n\x05group\x18\x03 \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x05group\x88\x01\x01\x12v\n\rencapsulation\x18\x04 \x01(\tBP\xfa\x42MrKR\x03greR\x05ip-ipR\x0fipsec-transportR\x0cipsec-tunnelR\x04l2tpR\x07openvpnR\x04pptpR\twireguardR\rencapsulation\x12@\n\ripsec_profile\x18\x05 \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x01R\x0cipsecProfile\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12 \n\ttunnel_id\x18\x07 \x01(\x03H\x03R\x08tunnelId\x88\x01\x01\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\x12G\n\rcustom_fields\x18\x0b \x03(\x0b\x32\".diode.v1.Tunnel.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\x10\n\x0e_ipsec_profileB\t\n\x07_tenantB\x0c\n\n_tunnel_idB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xba\x02\n\x0bTunnelGroup\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.TunnelGroup.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\"\x85?\n\x11TunnelTermination\x12(\n\x06tunnel\x18\x01 \x01(\x0b\x32\x10.diode.v1.TunnelR\x06tunnel\x12+\n\x04role\x18\x02 \x01(\tB\x17\xfa\x42\x14r\x12R\x03hubR\x04peerR\x05spokeR\x04role\x12\x38\n\x0ftermination_asn\x18\x03 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x0eterminationAsn\x12H\n\x15termination_asn_range\x18\x04 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x13terminationAsnRange\x12J\n\x15termination_aggregate\x18\x05 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x14terminationAggregate\x12>\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\x12Q\n\x18termination_custom_field\x18^ \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x16terminationCustomField\x12n\n#termination_custom_field_choice_set\x18_ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1fterminationCustomFieldChoiceSet\x12T\n\x19termination_journal_entry\x18` \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x17terminationJournalEntry\x12\x64\n\x1ftermination_module_type_profile\x18\x61 \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x1cterminationModuleTypeProfile\x12N\n\x17termination_custom_link\x18\x62 \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x15terminationCustomLink\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\"\xb3\x06\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\x12-\n\x06tenant\x18\x0e \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\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\t\n\x07_tenant\"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\"\xd7\x08\n\x0eVirtualMachine\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x65\n\x06status\x18\x02 \x01(\tBH\xfa\x42\x45rCR\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x06\x66\x61iledR\x07offlineR\x06pausedR\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\"\xb6\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\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\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_comments\"\xff%\n\x0b\x43ustomField\x12\x89\x01\n\x04type\x18\x01 \x01(\tBu\xfa\x42rrpR\x07\x62ooleanR\x04\x64\x61teR\x08\x64\x61tetimeR\x07\x64\x65\x63imalR\x07integerR\x04jsonR\x08longtextR\x0bmultiobjectR\x0bmultiselectR\x06objectR\x06selectR\x04textR\x03urlR\x04type\x12\xbe\x0e\n\x13related_object_type\x18\x02 \x01(\tB\x88\x0e\xfa\x42\x84\x0er\x81\x0eR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1f\x63ircuits.circuitgroupassignmentR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x0e\x64\x63im.cablepathR\x15\x64\x63im.cableterminationR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x12\x65xtras.customfieldR\x1b\x65xtras.customfieldchoicesetR\x11\x65xtras.customlinkR\x13\x65xtras.journalentryR\nextras.tagR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x18ipam.fhrpgroupassignmentR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x19tenancy.contactassignmentR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkH\x00R\x11relatedObjectType\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\"\n\ngroup_name\x18\x05 \x01(\tH\x02R\tgroupName\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08required\x18\x07 \x01(\x08H\x04R\x08required\x88\x01\x01\x12\x1b\n\x06unique\x18\x08 \x01(\x08H\x05R\x06unique\x88\x01\x01\x12(\n\rsearch_weight\x18\t \x01(\x03H\x06R\x0csearchWeight\x88\x01\x01\x12\x45\n\x0c\x66ilter_logic\x18\n \x01(\tB\x1d\xfa\x42\x1ar\x18R\x08\x64isabledR\x05\x65xactR\x05looseH\x07R\x0b\x66ilterLogic\x88\x01\x01\x12\x41\n\nui_visible\x18\x0b \x01(\tB\x1d\xfa\x42\x1ar\x18R\x06\x61lwaysR\x06hiddenR\x06if-setH\x08R\tuiVisible\x88\x01\x01\x12<\n\x0bui_editable\x18\x0c \x01(\tB\x16\xfa\x42\x13r\x11R\x06hiddenR\x02noR\x03yesH\tR\nuiEditable\x88\x01\x01\x12&\n\x0cis_cloneable\x18\r \x01(\x08H\nR\x0bisCloneable\x88\x01\x01\x12\x1d\n\x07\x64\x65\x66\x61ult\x18\x0e \x01(\tH\x0bR\x07\x64\x65\x66\x61ult\x88\x01\x01\x12\x37\n\x15related_object_filter\x18\x0f \x01(\tH\x0cR\x13relatedObjectFilter\x88\x01\x01\x12\x1b\n\x06weight\x18\x10 \x01(\x03H\rR\x06weight\x88\x01\x01\x12\x32\n\x12validation_minimum\x18\x11 \x01(\x01H\x0eR\x11validationMinimum\x88\x01\x01\x12\x32\n\x12validation_maximum\x18\x12 \x01(\x01H\x0fR\x11validationMaximum\x88\x01\x01\x12.\n\x10validation_regex\x18\x13 \x01(\tH\x10R\x0fvalidationRegex\x88\x01\x01\x12\x42\n\nchoice_set\x18\x14 \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x11R\tchoiceSet\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x15 \x01(\tH\x12R\x08\x63omments\x88\x01\x01\x12\xa2\r\n\x0cobject_types\x18\x16 \x03(\tB\xfe\x0c\xfa\x42\xfa\x0c\x92\x01\xf6\x0c\"\xf3\x0cr\xf0\x0cR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1f\x63ircuits.circuitgroupassignmentR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x13\x65xtras.journalentryR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x19tenancy.contactassignmentR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkR\x0bobjectTypesB\x16\n\x14_related_object_typeB\x08\n\x06_labelB\r\n\x0b_group_nameB\x0e\n\x0c_descriptionB\x0b\n\t_requiredB\t\n\x07_uniqueB\x10\n\x0e_search_weightB\x0f\n\r_filter_logicB\r\n\x0b_ui_visibleB\x0e\n\x0c_ui_editableB\x0f\n\r_is_cloneableB\n\n\x08_defaultB\x18\n\x16_related_object_filterB\t\n\x07_weightB\x15\n\x13_validation_minimumB\x15\n\x13_validation_maximumB\x13\n\x11_validation_regexB\r\n\x0b_choice_setB\x0b\n\t_comments\"\xb2\x02\n\x14\x43ustomFieldChoiceSet\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\x12H\n\x0c\x62\x61se_choices\x18\x03 \x01(\tB \xfa\x42\x1dr\x1bR\x04IATAR\x08ISO_3166R\tUN_LOCODEH\x01R\x0b\x62\x61seChoices\x88\x01\x01\x12\x36\n\x14order_alphabetically\x18\x04 \x01(\x08H\x02R\x13orderAlphabetically\x88\x01\x01\x12#\n\rextra_choices\x18\x05 \x03(\tR\x0c\x65xtraChoicesB\x0e\n\x0c_descriptionB\x0f\n\r_base_choicesB\x17\n\x15_order_alphabetically\"\xd1\x43\n\x0cJournalEntry\x12?\n\x13\x61ssigned_object_asn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x11\x61ssignedObjectAsn\x12O\n\x19\x61ssigned_object_asn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x16\x61ssignedObjectAsnRange\x12Q\n\x19\x61ssigned_object_aggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x17\x61ssignedObjectAggregate\x12\x45\n\x15\x61ssigned_object_cable\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x13\x61ssignedObjectCable\x12R\n\x1a\x61ssigned_object_cable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x17\x61ssignedObjectCablePath\x12g\n!assigned_object_cable_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x1e\x61ssignedObjectCableTermination\x12K\n\x17\x61ssigned_object_circuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x15\x61ssignedObjectCircuit\x12[\n\x1d\x61ssigned_object_circuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x1a\x61ssignedObjectCircuitGroup\x12z\n(assigned_object_circuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R$assignedObjectCircuitGroupAssignment\x12m\n#assigned_object_circuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R assignedObjectCircuitTermination\x12X\n\x1c\x61ssigned_object_circuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x19\x61ssignedObjectCircuitType\x12K\n\x17\x61ssigned_object_cluster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x15\x61ssignedObjectCluster\x12[\n\x1d\x61ssigned_object_cluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x1a\x61ssignedObjectClusterGroup\x12X\n\x1c\x61ssigned_object_cluster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x19\x61ssignedObjectClusterType\x12X\n\x1c\x61ssigned_object_console_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x19\x61ssignedObjectConsolePort\x12k\n#assigned_object_console_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1f\x61ssignedObjectConsoleServerPort\x12K\n\x17\x61ssigned_object_contact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x15\x61ssignedObjectContact\x12j\n\"assigned_object_contact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x1f\x61ssignedObjectContactAssignment\x12[\n\x1d\x61ssigned_object_contact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x1a\x61ssignedObjectContactGroup\x12X\n\x1c\x61ssigned_object_contact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x19\x61ssignedObjectContactRole\x12X\n\x1c\x61ssigned_object_custom_field\x18\x15 \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x19\x61ssignedObjectCustomField\x12u\n\'assigned_object_custom_field_choice_set\x18\x16 \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\"assignedObjectCustomFieldChoiceSet\x12H\n\x16\x61ssigned_object_device\x18\x17 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x14\x61ssignedObjectDevice\x12R\n\x1a\x61ssigned_object_device_bay\x18\x18 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x17\x61ssignedObjectDeviceBay\x12U\n\x1b\x61ssigned_object_device_role\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x18\x61ssignedObjectDeviceRole\x12U\n\x1b\x61ssigned_object_device_type\x18\x1a \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x18\x61ssignedObjectDeviceType\x12R\n\x1a\x61ssigned_object_fhrp_group\x18\x1b \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x17\x61ssignedObjectFhrpGroup\x12q\n%assigned_object_fhrp_group_assignment\x18\x1c \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R!assignedObjectFhrpGroupAssignment\x12R\n\x1a\x61ssigned_object_front_port\x18\x1d \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x17\x61ssignedObjectFrontPort\x12R\n\x1a\x61ssigned_object_ike_policy\x18\x1e \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x17\x61ssignedObjectIkePolicy\x12X\n\x1c\x61ssigned_object_ike_proposal\x18\x1f \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x19\x61ssignedObjectIkeProposal\x12R\n\x1a\x61ssigned_object_ip_address\x18 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x17\x61ssignedObjectIpAddress\x12L\n\x18\x61ssigned_object_ip_range\x18! \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x15\x61ssignedObjectIpRange\x12Y\n\x1d\x61ssigned_object_ip_sec_policy\x18\" \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x19\x61ssignedObjectIpSecPolicy\x12\\\n\x1e\x61ssigned_object_ip_sec_profile\x18# \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x1a\x61ssignedObjectIpSecProfile\x12_\n\x1f\x61ssigned_object_ip_sec_proposal\x18$ \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x1b\x61ssignedObjectIpSecProposal\x12Q\n\x19\x61ssigned_object_interface\x18% \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x17\x61ssignedObjectInterface\x12^\n\x1e\x61ssigned_object_inventory_item\x18& \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x1b\x61ssignedObjectInventoryItem\x12k\n#assigned_object_inventory_item_role\x18\' \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x1f\x61ssignedObjectInventoryItemRole\x12[\n\x1d\x61ssigned_object_journal_entry\x18( \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x1a\x61ssignedObjectJournalEntry\x12\x45\n\x15\x61ssigned_object_l2vpn\x18) \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x13\x61ssignedObjectL2vpn\x12g\n!assigned_object_l2vpn_termination\x18* \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x1e\x61ssignedObjectL2vpnTermination\x12N\n\x18\x61ssigned_object_location\x18+ \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x16\x61ssignedObjectLocation\x12U\n\x1b\x61ssigned_object_mac_address\x18, \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x18\x61ssignedObjectMacAddress\x12Z\n\x1c\x61ssigned_object_manufacturer\x18- \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x1a\x61ssignedObjectManufacturer\x12H\n\x16\x61ssigned_object_module\x18. \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x14\x61ssignedObjectModule\x12R\n\x1a\x61ssigned_object_module_bay\x18/ \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x17\x61ssignedObjectModuleBay\x12U\n\x1b\x61ssigned_object_module_type\x18\x30 \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x18\x61ssignedObjectModuleType\x12k\n#assigned_object_module_type_profile\x18\x31 \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x1f\x61ssignedObjectModuleTypeProfile\x12N\n\x18\x61ssigned_object_platform\x18\x32 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x16\x61ssignedObjectPlatform\x12R\n\x1a\x61ssigned_object_power_feed\x18\x33 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x17\x61ssignedObjectPowerFeed\x12X\n\x1c\x61ssigned_object_power_outlet\x18\x34 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x19\x61ssignedObjectPowerOutlet\x12U\n\x1b\x61ssigned_object_power_panel\x18\x35 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x18\x61ssignedObjectPowerPanel\x12R\n\x1a\x61ssigned_object_power_port\x18\x36 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x17\x61ssignedObjectPowerPort\x12H\n\x16\x61ssigned_object_prefix\x18\x37 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x14\x61ssignedObjectPrefix\x12N\n\x18\x61ssigned_object_provider\x18\x38 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x16\x61ssignedObjectProvider\x12\x64\n assigned_object_provider_account\x18\x39 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x1d\x61ssignedObjectProviderAccount\x12\x64\n assigned_object_provider_network\x18: \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1d\x61ssignedObjectProviderNetwork\x12?\n\x13\x61ssigned_object_rir\x18; \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x11\x61ssignedObjectRir\x12\x42\n\x14\x61ssigned_object_rack\x18< \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x12\x61ssignedObjectRack\x12\x64\n assigned_object_rack_reservation\x18= \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x1d\x61ssignedObjectRackReservation\x12O\n\x19\x61ssigned_object_rack_role\x18> \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x16\x61ssignedObjectRackRole\x12O\n\x19\x61ssigned_object_rack_type\x18? \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x16\x61ssignedObjectRackType\x12O\n\x19\x61ssigned_object_rear_port\x18@ \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x16\x61ssignedObjectRearPort\x12H\n\x16\x61ssigned_object_region\x18\x41 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x14\x61ssignedObjectRegion\x12\x42\n\x14\x61ssigned_object_role\x18\x42 \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x12\x61ssignedObjectRole\x12X\n\x1c\x61ssigned_object_route_target\x18\x43 \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x19\x61ssignedObjectRouteTarget\x12K\n\x17\x61ssigned_object_service\x18\x44 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x15\x61ssignedObjectService\x12\x42\n\x14\x61ssigned_object_site\x18\x45 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x12\x61ssignedObjectSite\x12R\n\x1a\x61ssigned_object_site_group\x18\x46 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x17\x61ssignedObjectSiteGroup\x12?\n\x13\x61ssigned_object_tag\x18G \x01(\x0b\x32\r.diode.v1.TagH\x00R\x11\x61ssignedObjectTag\x12H\n\x16\x61ssigned_object_tenant\x18H \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x14\x61ssignedObjectTenant\x12X\n\x1c\x61ssigned_object_tenant_group\x18I \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x19\x61ssignedObjectTenantGroup\x12H\n\x16\x61ssigned_object_tunnel\x18J \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x14\x61ssignedObjectTunnel\x12X\n\x1c\x61ssigned_object_tunnel_group\x18K \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x19\x61ssignedObjectTunnelGroup\x12j\n\"assigned_object_tunnel_termination\x18L \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1f\x61ssignedObjectTunnelTermination\x12\x42\n\x14\x61ssigned_object_vlan\x18M \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x12\x61ssignedObjectVlan\x12R\n\x1a\x61ssigned_object_vlan_group\x18N \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x17\x61ssignedObjectVlanGroup\x12w\n\'assigned_object_vlan_translation_policy\x18O \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R#assignedObjectVlanTranslationPolicy\x12q\n%assigned_object_vlan_translation_rule\x18P \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R!assignedObjectVlanTranslationRule\x12X\n\x1c\x61ssigned_object_vm_interface\x18Q \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x19\x61ssignedObjectVmInterface\x12?\n\x13\x61ssigned_object_vrf\x18R \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x11\x61ssignedObjectVrf\x12\x61\n\x1f\x61ssigned_object_virtual_chassis\x18S \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x1c\x61ssignedObjectVirtualChassis\x12\x61\n\x1f\x61ssigned_object_virtual_circuit\x18T \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x1c\x61ssignedObjectVirtualCircuit\x12\x83\x01\n+assigned_object_virtual_circuit_termination\x18U \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\'assignedObjectVirtualCircuitTermination\x12n\n$assigned_object_virtual_circuit_type\x18V \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R assignedObjectVirtualCircuitType\x12t\n&assigned_object_virtual_device_context\x18W \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\"assignedObjectVirtualDeviceContext\x12X\n\x1c\x61ssigned_object_virtual_disk\x18X \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x19\x61ssignedObjectVirtualDisk\x12\x61\n\x1f\x61ssigned_object_virtual_machine\x18Y \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x1c\x61ssignedObjectVirtualMachine\x12X\n\x1c\x61ssigned_object_wireless_lan\x18Z \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x19\x61ssignedObjectWirelessLan\x12h\n\"assigned_object_wireless_lan_group\x18[ \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x1e\x61ssignedObjectWirelessLanGroup\x12[\n\x1d\x61ssigned_object_wireless_link\x18\\ \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x1a\x61ssignedObjectWirelessLink\x12U\n\x1b\x61ssigned_object_custom_link\x18\x61 \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x18\x61ssignedObjectCustomLink\x12>\n\x04kind\x18] \x01(\tB%\xfa\x42\"r R\x06\x64\x61ngerR\x04infoR\x07successR\x07warningH\x01R\x04kind\x88\x01\x01\x12\x1a\n\x08\x63omments\x18^ \x01(\tR\x08\x63omments\x12!\n\x04tags\x18_ \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18` \x03(\x0b\x32(.diode.v1.JournalEntry.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\x11\n\x0f\x61ssigned_objectB\x07\n\x05_kind\"\x88\x03\n\x11ModuleTypeProfile\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\x1b\n\x06schema\x18\x03 \x01(\tH\x01R\x06schema\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x04 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18\x06 \x03(\x0b\x32-.diode.v1.ModuleTypeProfile.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_schemaB\x0b\n\t_comments\"\xa8\x10\n\nCustomLink\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1d\n\x07\x65nabled\x18\x02 \x01(\x08H\x00R\x07\x65nabled\x88\x01\x01\x12\x1b\n\tlink_text\x18\x03 \x01(\tR\x08linkText\x12\x19\n\x08link_url\x18\x04 \x01(\tR\x07linkUrl\x12\x1b\n\x06weight\x18\x05 \x01(\x03H\x01R\x06weight\x88\x01\x01\x12\"\n\ngroup_name\x18\x06 \x01(\tH\x02R\tgroupName\x88\x01\x01\x12\x9a\x01\n\x0c\x62utton_class\x18\x07 \x01(\tBr\xfa\x42ormR\x05\x62lackR\x04\x62lueR\x04\x63yanR\x07\x64\x65\x66\x61ultR\nghost-darkR\x04grayR\x05greenR\x06indigoR\x06orangeR\x04pinkR\x06purpleR\x03redR\x04tealR\x05whiteR\x06yellowH\x03R\x0b\x62uttonClass\x88\x01\x01\x12\"\n\nnew_window\x18\x08 \x01(\x08H\x04R\tnewWindow\x88\x01\x01\x12\xe6\x0c\n\x0cobject_types\x18\t \x03(\tB\xc2\x0c\xfa\x42\xbe\x0c\x92\x01\xba\x0c\"\xb7\x0cr\xb4\x0cR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x13\x65xtras.journalentryR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkR\x0bobjectTypesB\n\n\x08_enabledB\t\n\x07_weightB\r\n\x0b_group_nameB\x0f\n\r_button_classB\r\n\x0b_new_window2N\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) @@ -414,370 +415,370 @@ _globals['_CUSTOMLINK'].fields_by_name['button_class']._serialized_options = b'\372BormR\005blackR\004blueR\004cyanR\007defaultR\nghost-darkR\004grayR\005greenR\006indigoR\006orangeR\004pinkR\006purpleR\003redR\004tealR\005whiteR\006yellow' _globals['_CUSTOMLINK'].fields_by_name['object_types']._loaded_options = None _globals['_CUSTOMLINK'].fields_by_name['object_types']._serialized_options = b'\372B\276\014\222\001\272\014\"\267\014r\264\014R\020circuits.circuitR\025circuits.circuitgroupR\033circuits.circuitterminationR\024circuits.circuittypeR\021circuits.providerR\030circuits.provideraccountR\030circuits.providernetworkR\027circuits.virtualcircuitR\"circuits.virtualcircuitterminationR\033circuits.virtualcircuittypeR\ndcim.cableR\020dcim.consoleportR\026dcim.consoleserverportR\013dcim.deviceR\016dcim.devicebayR\017dcim.deviceroleR\017dcim.devicetypeR\016dcim.frontportR\016dcim.interfaceR\022dcim.inventoryitemR\026dcim.inventoryitemroleR\rdcim.locationR\017dcim.macaddressR\021dcim.manufacturerR\013dcim.moduleR\016dcim.modulebayR\017dcim.moduletypeR\026dcim.moduletypeprofileR\rdcim.platformR\016dcim.powerfeedR\020dcim.poweroutletR\017dcim.powerpanelR\016dcim.powerportR\tdcim.rackR\024dcim.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\013dcim.regionR\tdcim.siteR\016dcim.sitegroupR\023dcim.virtualchassisR\031dcim.virtualdevicecontextR\023extras.journalentryR\016ipam.aggregateR\010ipam.asnR\ripam.asnrangeR\016ipam.fhrpgroupR\016ipam.ipaddressR\014ipam.iprangeR\013ipam.prefixR\010ipam.rirR\tipam.roleR\020ipam.routetargetR\014ipam.serviceR\tipam.vlanR\016ipam.vlangroupR\032ipam.vlantranslationpolicyR\030ipam.vlantranslationruleR\010ipam.vrfR\017tenancy.contactR\024tenancy.contactgroupR\023tenancy.contactroleR\016tenancy.tenantR\023tenancy.tenantgroupR\026virtualization.clusterR\033virtualization.clustergroupR\032virtualization.clustertypeR\032virtualization.virtualdiskR\035virtualization.virtualmachineR\032virtualization.vminterfaceR\rvpn.ikepolicyR\017vpn.ikeproposalR\017vpn.ipsecpolicyR\020vpn.ipsecprofileR\021vpn.ipsecproposalR\tvpn.l2vpnR\024vpn.l2vpnterminationR\nvpn.tunnelR\017vpn.tunnelgroupR\025vpn.tunnelterminationR\024wireless.wirelesslanR\031wireless.wirelesslangroupR\025wireless.wirelesslink' - _globals['_ENTITY']._serialized_start=96 - _globals['_ENTITY']._serialized_end=5709 - _globals['_INGESTREQUEST']._serialized_start=5712 - _globals['_INGESTREQUEST']._serialized_end=6068 - _globals['_INGESTRESPONSE']._serialized_start=6070 - _globals['_INGESTRESPONSE']._serialized_end=6110 - _globals['_ASN']._serialized_start=6113 - _globals['_ASN']._serialized_end=6539 - _globals['_ASN_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_ASN_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_ASNRANGE']._serialized_start=6542 - _globals['_ASNRANGE']._serialized_end=6981 - _globals['_ASNRANGE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_ASNRANGE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_AGGREGATE']._serialized_start=6984 - _globals['_AGGREGATE']._serialized_end=7494 - _globals['_AGGREGATE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_AGGREGATE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CABLE']._serialized_start=7497 - _globals['_CABLE']._serialized_end=8506 - _globals['_CABLE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_CABLE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CABLEPATH']._serialized_start=8509 - _globals['_CABLEPATH']._serialized_end=8667 - _globals['_CABLETERMINATION']._serialized_start=8670 - _globals['_CABLETERMINATION']._serialized_end=9537 - _globals['_CIRCUIT']._serialized_start=9540 - _globals['_CIRCUIT']._serialized_end=10666 - _globals['_CIRCUIT_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_CIRCUIT_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CIRCUITGROUP']._serialized_start=10669 - _globals['_CIRCUITGROUP']._serialized_end=11043 - _globals['_CIRCUITGROUP_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_CIRCUITGROUP_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CIRCUITGROUPASSIGNMENT']._serialized_start=11046 - _globals['_CIRCUITGROUPASSIGNMENT']._serialized_end=11396 - _globals['_CIRCUITTERMINATION']._serialized_start=11399 - _globals['_CIRCUITTERMINATION']._serialized_end=12435 - _globals['_CIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_CIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CIRCUITTYPE']._serialized_start=12438 - _globals['_CIRCUITTYPE']._serialized_end=12789 - _globals['_CIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_CIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CLUSTER']._serialized_start=12792 - _globals['_CLUSTER']._serialized_end=13624 - _globals['_CLUSTER_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_CLUSTER_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CLUSTERGROUP']._serialized_start=13627 - _globals['_CLUSTERGROUP']._serialized_end=13943 - _globals['_CLUSTERGROUP_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_CLUSTERGROUP_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CLUSTERTYPE']._serialized_start=13946 - _globals['_CLUSTERTYPE']._serialized_end=14260 - _globals['_CLUSTERTYPE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_CLUSTERTYPE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CONSOLEPORT']._serialized_start=14263 - _globals['_CONSOLEPORT']._serialized_end=15012 - _globals['_CONSOLEPORT_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_CONSOLEPORT_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CONSOLESERVERPORT']._serialized_start=15015 - _globals['_CONSOLESERVERPORT']._serialized_end=15776 - _globals['_CONSOLESERVERPORT_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_CONSOLESERVERPORT_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CONTACT']._serialized_start=15779 - _globals['_CONTACT']._serialized_end=16412 - _globals['_CONTACT_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_CONTACT_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CONTACTASSIGNMENT']._serialized_start=16415 - _globals['_CONTACTASSIGNMENT']._serialized_end=23585 - _globals['_CONTACTASSIGNMENT_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_CONTACTASSIGNMENT_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CONTACTGROUP']._serialized_start=23588 - _globals['_CONTACTGROUP']._serialized_end=24014 - _globals['_CONTACTGROUP_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_CONTACTGROUP_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CONTACTROLE']._serialized_start=24017 - _globals['_CONTACTROLE']._serialized_end=24331 - _globals['_CONTACTROLE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_CONTACTROLE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CUSTOMFIELDOBJECTREFERENCE']._serialized_start=24334 - _globals['_CUSTOMFIELDOBJECTREFERENCE']._serialized_end=29897 - _globals['_CUSTOMFIELDVALUE']._serialized_start=29900 - _globals['_CUSTOMFIELDVALUE']._serialized_end=30438 - _globals['_DEVICE']._serialized_start=30441 - _globals['_DEVICE']._serialized_end=32218 - _globals['_DEVICE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_DEVICE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_DEVICEBAY']._serialized_start=32221 - _globals['_DEVICEBAY']._serialized_end=32677 - _globals['_DEVICEBAY_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_DEVICEBAY_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_DEVICEROLE']._serialized_start=32680 - _globals['_DEVICEROLE']._serialized_end=33179 - _globals['_DEVICEROLE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_DEVICEROLE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_DEVICETYPE']._serialized_start=33182 - _globals['_DEVICETYPE']._serialized_end=34330 - _globals['_DEVICETYPE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_DEVICETYPE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_FHRPGROUP']._serialized_start=34333 - _globals['_FHRPGROUP']._serialized_end=34911 - _globals['_FHRPGROUP_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_FHRPGROUP_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_FHRPGROUPASSIGNMENT']._serialized_start=34914 - _globals['_FHRPGROUPASSIGNMENT']._serialized_end=42311 - _globals['_FRONTPORT']._serialized_start=42314 - _globals['_FRONTPORT']._serialized_end=43419 - _globals['_FRONTPORT_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_FRONTPORT_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_GENERICOBJECT']._serialized_start=43422 - _globals['_GENERICOBJECT']._serialized_end=50181 - _globals['_IKEPOLICY']._serialized_start=50184 - _globals['_IKEPOLICY']._serialized_end=50729 - _globals['_IKEPOLICY_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_IKEPOLICY_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_IKEPROPOSAL']._serialized_start=50732 - _globals['_IKEPROPOSAL']._serialized_end=51642 - _globals['_IKEPROPOSAL_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_IKEPROPOSAL_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_IPADDRESS']._serialized_start=51645 - _globals['_IPADDRESS']._serialized_end=52674 - _globals['_IPADDRESS_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_IPADDRESS_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_IPRANGE']._serialized_start=52677 - _globals['_IPRANGE']._serialized_end=53413 - _globals['_IPRANGE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_IPRANGE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_IPSECPOLICY']._serialized_start=53416 - _globals['_IPSECPOLICY']._serialized_end=53914 - _globals['_IPSECPOLICY_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_IPSECPOLICY_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_IPSECPROFILE']._serialized_start=53917 - _globals['_IPSECPROFILE']._serialized_end=54405 - _globals['_IPSECPROFILE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_IPSECPROFILE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_IPSECPROPOSAL']._serialized_start=54408 - _globals['_IPSECPROPOSAL']._serialized_end=55244 - _globals['_IPSECPROPOSAL_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_IPSECPROPOSAL_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_INTERFACE']._serialized_start=55247 - _globals['_INTERFACE']._serialized_end=63401 - _globals['_INTERFACE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_INTERFACE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_INVENTORYITEM']._serialized_start=63404 - _globals['_INVENTORYITEM']._serialized_end=64836 - _globals['_INVENTORYITEM_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_INVENTORYITEM_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_INVENTORYITEMROLE']._serialized_start=64839 - _globals['_INVENTORYITEMROLE']._serialized_end=65202 - _globals['_INVENTORYITEMROLE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_INVENTORYITEMROLE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_L2VPN']._serialized_start=65205 - _globals['_L2VPN']._serialized_end=66025 - _globals['_L2VPN_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_L2VPN_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_L2VPNTERMINATION']._serialized_start=66028 - _globals['_L2VPNTERMINATION']._serialized_end=74631 - _globals['_L2VPNTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_L2VPNTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_LOCATION']._serialized_start=74634 - _globals['_LOCATION']._serialized_end=75287 - _globals['_LOCATION_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_LOCATION_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_MACADDRESS']._serialized_start=75290 - _globals['_MACADDRESS']._serialized_end=75833 - _globals['_MACADDRESS_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_MACADDRESS_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_MANUFACTURER']._serialized_start=75836 - _globals['_MANUFACTURER']._serialized_end=76152 - _globals['_MANUFACTURER_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_MANUFACTURER_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_MODULE']._serialized_start=76155 - _globals['_MODULE']._serialized_end=76808 - _globals['_MODULE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_MODULE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_MODULEBAY']._serialized_start=76811 - _globals['_MODULEBAY']._serialized_end=77371 - _globals['_MODULEBAY_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_MODULEBAY_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_MODULETYPE']._serialized_start=77374 - _globals['_MODULETYPE']._serialized_end=78201 - _globals['_MODULETYPE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_MODULETYPE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_PLATFORM']._serialized_start=78204 - _globals['_PLATFORM']._serialized_end=78700 - _globals['_PLATFORM_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_PLATFORM_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_POWERFEED']._serialized_start=78703 - _globals['_POWERFEED']._serialized_end=79688 - _globals['_POWERFEED_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_POWERFEED_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_POWEROUTLET']._serialized_start=79691 - _globals['_POWEROUTLET']._serialized_end=81827 - _globals['_POWEROUTLET_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_POWEROUTLET_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_POWERPANEL']._serialized_start=81830 - _globals['_POWERPANEL']._serialized_end=82270 - _globals['_POWERPANEL_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_POWERPANEL_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_POWERPORT']._serialized_start=82273 - _globals['_POWERPORT']._serialized_end=84337 - _globals['_POWERPORT_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_POWERPORT_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_PREFIX']._serialized_start=84340 - _globals['_PREFIX']._serialized_end=85307 - _globals['_PREFIX_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_PREFIX_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_PROVIDER']._serialized_start=85310 - _globals['_PROVIDER']._serialized_end=85754 - _globals['_PROVIDER_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_PROVIDER_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_PROVIDERACCOUNT']._serialized_start=85757 - _globals['_PROVIDERACCOUNT']._serialized_end=86193 - _globals['_PROVIDERACCOUNT_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_PROVIDERACCOUNT_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_PROVIDERNETWORK']._serialized_start=86196 - _globals['_PROVIDERNETWORK']._serialized_end=86643 - _globals['_PROVIDERNETWORK_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_PROVIDERNETWORK_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_RIR']._serialized_start=86646 - _globals['_RIR']._serialized_end=86995 - _globals['_RIR_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_RIR_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_RACK']._serialized_start=86998 - _globals['_RACK']._serialized_end=88770 - _globals['_RACK_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_RACK_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_RACKRESERVATION']._serialized_start=88773 - _globals['_RACKRESERVATION']._serialized_end=89267 - _globals['_RACKRESERVATION_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_RACKRESERVATION_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_RACKROLE']._serialized_start=89270 - _globals['_RACKROLE']._serialized_end=89615 - _globals['_RACKROLE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_RACKROLE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_RACKTYPE']._serialized_start=89618 - _globals['_RACKTYPE']._serialized_end=90879 - _globals['_RACKTYPE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_RACKTYPE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_REARPORT']._serialized_start=90882 - _globals['_REARPORT']._serialized_end=91911 - _globals['_REARPORT_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_REARPORT_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_REGION']._serialized_start=91914 - _globals['_REGION']._serialized_end=92322 - _globals['_REGION_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_REGION_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_ROLE']._serialized_start=92325 - _globals['_ROLE']._serialized_end=92665 - _globals['_ROLE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_ROLE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_ROUTETARGET']._serialized_start=92668 - _globals['_ROUTETARGET']._serialized_end=93066 - _globals['_ROUTETARGET_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_ROUTETARGET_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_SERVICE']._serialized_start=93069 - _globals['_SERVICE']._serialized_end=93967 - _globals['_SERVICE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_SERVICE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_SITE']._serialized_start=93970 - _globals['_SITE']._serialized_end=94951 - _globals['_SITE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_SITE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_SITEGROUP']._serialized_start=94954 - _globals['_SITEGROUP']._serialized_end=95371 - _globals['_SITEGROUP_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_SITEGROUP_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_TAG']._serialized_start=95374 - _globals['_TAG']._serialized_end=97252 - _globals['_TENANT']._serialized_start=97255 - _globals['_TENANT']._serialized_end=97665 - _globals['_TENANT_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_TENANT_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_TENANTGROUP']._serialized_start=97668 - _globals['_TENANTGROUP']._serialized_end=98091 - _globals['_TENANTGROUP_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_TENANTGROUP_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_TUNNEL']._serialized_start=98094 - _globals['_TUNNEL']._serialized_end=98852 - _globals['_TUNNEL_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_TUNNEL_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_TUNNELGROUP']._serialized_start=98855 - _globals['_TUNNELGROUP']._serialized_end=99169 - _globals['_TUNNELGROUP_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_TUNNELGROUP_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_TUNNELTERMINATION']._serialized_start=99172 - _globals['_TUNNELTERMINATION']._serialized_end=107241 - _globals['_TUNNELTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_TUNNELTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_VLAN']._serialized_start=107244 - _globals['_VLAN']._serialized_end=108017 - _globals['_VLAN_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_VLAN_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_VLANGROUP']._serialized_start=108020 - _globals['_VLANGROUP']._serialized_end=108839 - _globals['_VLANGROUP_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_VLANGROUP_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_VLANTRANSLATIONPOLICY']._serialized_start=108841 - _globals['_VLANTRANSLATIONPOLICY']._serialized_end=108939 - _globals['_VLANTRANSLATIONRULE']._serialized_start=108942 - _globals['_VLANTRANSLATIONRULE']._serialized_end=109135 - _globals['_VMINTERFACE']._serialized_start=109138 - _globals['_VMINTERFACE']._serialized_end=110237 - _globals['_VMINTERFACE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_VMINTERFACE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_VRF']._serialized_start=110240 - _globals['_VRF']._serialized_end=110837 - _globals['_VRF_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_VRF_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_VIRTUALCHASSIS']._serialized_start=110840 - _globals['_VIRTUALCHASSIS']._serialized_end=111284 - _globals['_VIRTUALCHASSIS_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_VIRTUALCHASSIS_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_VIRTUALCIRCUIT']._serialized_start=111287 - _globals['_VIRTUALCIRCUIT']._serialized_end=112024 - _globals['_VIRTUALCIRCUIT_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_VIRTUALCIRCUIT_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_VIRTUALCIRCUITTERMINATION']._serialized_start=112027 - _globals['_VIRTUALCIRCUITTERMINATION']._serialized_end=112506 - _globals['_VIRTUALCIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_VIRTUALCIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_VIRTUALCIRCUITTYPE']._serialized_start=112509 - _globals['_VIRTUALCIRCUITTYPE']._serialized_end=112874 - _globals['_VIRTUALCIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_VIRTUALCIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_VIRTUALDEVICECONTEXT']._serialized_start=112877 - _globals['_VIRTUALDEVICECONTEXT']._serialized_end=113594 - _globals['_VIRTUALDEVICECONTEXT_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_VIRTUALDEVICECONTEXT_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_VIRTUALDISK']._serialized_start=113597 - _globals['_VIRTUALDISK']._serialized_end=113978 - _globals['_VIRTUALDISK_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_VIRTUALDISK_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_VIRTUALMACHINE']._serialized_start=113981 - _globals['_VIRTUALMACHINE']._serialized_end=115092 - _globals['_VIRTUALMACHINE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_VIRTUALMACHINE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_WIRELESSLAN']._serialized_start=115095 - _globals['_WIRELESSLAN']._serialized_end=116153 - _globals['_WIRELESSLAN_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_WIRELESSLAN_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_WIRELESSLANGROUP']._serialized_start=116156 - _globals['_WIRELESSLANGROUP']._serialized_end=116594 - _globals['_WIRELESSLANGROUP_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_WIRELESSLANGROUP_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_WIRELESSLINK']._serialized_start=116597 - _globals['_WIRELESSLINK']._serialized_end=117550 - _globals['_WIRELESSLINK_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_WIRELESSLINK_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CUSTOMFIELD']._serialized_start=117553 - _globals['_CUSTOMFIELD']._serialized_end=122416 - _globals['_CUSTOMFIELDCHOICESET']._serialized_start=122419 - _globals['_CUSTOMFIELDCHOICESET']._serialized_end=122725 - _globals['_JOURNALENTRY']._serialized_start=122728 - _globals['_JOURNALENTRY']._serialized_end=131385 - _globals['_JOURNALENTRY_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_JOURNALENTRY_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_MODULETYPEPROFILE']._serialized_start=131388 - _globals['_MODULETYPEPROFILE']._serialized_end=131780 - _globals['_MODULETYPEPROFILE_CUSTOMFIELDSENTRY']._serialized_start=6400 - _globals['_MODULETYPEPROFILE_CUSTOMFIELDSENTRY']._serialized_end=6491 - _globals['_CUSTOMLINK']._serialized_start=131783 - _globals['_CUSTOMLINK']._serialized_end=133871 - _globals['_INGESTERSERVICE']._serialized_start=133873 - _globals['_INGESTERSERVICE']._serialized_end=133951 + _globals['_ENTITY']._serialized_start=126 + _globals['_ENTITY']._serialized_end=5792 + _globals['_INGESTREQUEST']._serialized_start=5795 + _globals['_INGESTREQUEST']._serialized_end=6204 + _globals['_INGESTRESPONSE']._serialized_start=6206 + _globals['_INGESTRESPONSE']._serialized_end=6246 + _globals['_ASN']._serialized_start=6249 + _globals['_ASN']._serialized_end=6675 + _globals['_ASN_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_ASN_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_ASNRANGE']._serialized_start=6678 + _globals['_ASNRANGE']._serialized_end=7117 + _globals['_ASNRANGE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_ASNRANGE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_AGGREGATE']._serialized_start=7120 + _globals['_AGGREGATE']._serialized_end=7630 + _globals['_AGGREGATE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_AGGREGATE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CABLE']._serialized_start=7633 + _globals['_CABLE']._serialized_end=8642 + _globals['_CABLE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_CABLE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CABLEPATH']._serialized_start=8645 + _globals['_CABLEPATH']._serialized_end=8803 + _globals['_CABLETERMINATION']._serialized_start=8806 + _globals['_CABLETERMINATION']._serialized_end=9673 + _globals['_CIRCUIT']._serialized_start=9676 + _globals['_CIRCUIT']._serialized_end=10802 + _globals['_CIRCUIT_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_CIRCUIT_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CIRCUITGROUP']._serialized_start=10805 + _globals['_CIRCUITGROUP']._serialized_end=11179 + _globals['_CIRCUITGROUP_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_CIRCUITGROUP_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CIRCUITGROUPASSIGNMENT']._serialized_start=11182 + _globals['_CIRCUITGROUPASSIGNMENT']._serialized_end=11532 + _globals['_CIRCUITTERMINATION']._serialized_start=11535 + _globals['_CIRCUITTERMINATION']._serialized_end=12571 + _globals['_CIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_CIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CIRCUITTYPE']._serialized_start=12574 + _globals['_CIRCUITTYPE']._serialized_end=12925 + _globals['_CIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_CIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CLUSTER']._serialized_start=12928 + _globals['_CLUSTER']._serialized_end=13760 + _globals['_CLUSTER_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_CLUSTER_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CLUSTERGROUP']._serialized_start=13763 + _globals['_CLUSTERGROUP']._serialized_end=14079 + _globals['_CLUSTERGROUP_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_CLUSTERGROUP_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CLUSTERTYPE']._serialized_start=14082 + _globals['_CLUSTERTYPE']._serialized_end=14396 + _globals['_CLUSTERTYPE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_CLUSTERTYPE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CONSOLEPORT']._serialized_start=14399 + _globals['_CONSOLEPORT']._serialized_end=15148 + _globals['_CONSOLEPORT_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_CONSOLEPORT_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CONSOLESERVERPORT']._serialized_start=15151 + _globals['_CONSOLESERVERPORT']._serialized_end=15912 + _globals['_CONSOLESERVERPORT_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_CONSOLESERVERPORT_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CONTACT']._serialized_start=15915 + _globals['_CONTACT']._serialized_end=16548 + _globals['_CONTACT_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_CONTACT_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CONTACTASSIGNMENT']._serialized_start=16551 + _globals['_CONTACTASSIGNMENT']._serialized_end=23721 + _globals['_CONTACTASSIGNMENT_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_CONTACTASSIGNMENT_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CONTACTGROUP']._serialized_start=23724 + _globals['_CONTACTGROUP']._serialized_end=24150 + _globals['_CONTACTGROUP_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_CONTACTGROUP_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CONTACTROLE']._serialized_start=24153 + _globals['_CONTACTROLE']._serialized_end=24467 + _globals['_CONTACTROLE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_CONTACTROLE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CUSTOMFIELDOBJECTREFERENCE']._serialized_start=24470 + _globals['_CUSTOMFIELDOBJECTREFERENCE']._serialized_end=30033 + _globals['_CUSTOMFIELDVALUE']._serialized_start=30036 + _globals['_CUSTOMFIELDVALUE']._serialized_end=30574 + _globals['_DEVICE']._serialized_start=30577 + _globals['_DEVICE']._serialized_end=32354 + _globals['_DEVICE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_DEVICE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_DEVICEBAY']._serialized_start=32357 + _globals['_DEVICEBAY']._serialized_end=32813 + _globals['_DEVICEBAY_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_DEVICEBAY_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_DEVICEROLE']._serialized_start=32816 + _globals['_DEVICEROLE']._serialized_end=33315 + _globals['_DEVICEROLE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_DEVICEROLE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_DEVICETYPE']._serialized_start=33318 + _globals['_DEVICETYPE']._serialized_end=34466 + _globals['_DEVICETYPE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_DEVICETYPE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_FHRPGROUP']._serialized_start=34469 + _globals['_FHRPGROUP']._serialized_end=35047 + _globals['_FHRPGROUP_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_FHRPGROUP_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_FHRPGROUPASSIGNMENT']._serialized_start=35050 + _globals['_FHRPGROUPASSIGNMENT']._serialized_end=42447 + _globals['_FRONTPORT']._serialized_start=42450 + _globals['_FRONTPORT']._serialized_end=43555 + _globals['_FRONTPORT_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_FRONTPORT_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_GENERICOBJECT']._serialized_start=43558 + _globals['_GENERICOBJECT']._serialized_end=50317 + _globals['_IKEPOLICY']._serialized_start=50320 + _globals['_IKEPOLICY']._serialized_end=50865 + _globals['_IKEPOLICY_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_IKEPOLICY_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_IKEPROPOSAL']._serialized_start=50868 + _globals['_IKEPROPOSAL']._serialized_end=51778 + _globals['_IKEPROPOSAL_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_IKEPROPOSAL_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_IPADDRESS']._serialized_start=51781 + _globals['_IPADDRESS']._serialized_end=52810 + _globals['_IPADDRESS_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_IPADDRESS_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_IPRANGE']._serialized_start=52813 + _globals['_IPRANGE']._serialized_end=53549 + _globals['_IPRANGE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_IPRANGE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_IPSECPOLICY']._serialized_start=53552 + _globals['_IPSECPOLICY']._serialized_end=54050 + _globals['_IPSECPOLICY_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_IPSECPOLICY_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_IPSECPROFILE']._serialized_start=54053 + _globals['_IPSECPROFILE']._serialized_end=54541 + _globals['_IPSECPROFILE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_IPSECPROFILE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_IPSECPROPOSAL']._serialized_start=54544 + _globals['_IPSECPROPOSAL']._serialized_end=55380 + _globals['_IPSECPROPOSAL_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_IPSECPROPOSAL_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_INTERFACE']._serialized_start=55383 + _globals['_INTERFACE']._serialized_end=63537 + _globals['_INTERFACE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_INTERFACE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_INVENTORYITEM']._serialized_start=63540 + _globals['_INVENTORYITEM']._serialized_end=64972 + _globals['_INVENTORYITEM_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_INVENTORYITEM_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_INVENTORYITEMROLE']._serialized_start=64975 + _globals['_INVENTORYITEMROLE']._serialized_end=65338 + _globals['_INVENTORYITEMROLE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_INVENTORYITEMROLE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_L2VPN']._serialized_start=65341 + _globals['_L2VPN']._serialized_end=66161 + _globals['_L2VPN_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_L2VPN_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_L2VPNTERMINATION']._serialized_start=66164 + _globals['_L2VPNTERMINATION']._serialized_end=74767 + _globals['_L2VPNTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_L2VPNTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_LOCATION']._serialized_start=74770 + _globals['_LOCATION']._serialized_end=75423 + _globals['_LOCATION_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_LOCATION_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_MACADDRESS']._serialized_start=75426 + _globals['_MACADDRESS']._serialized_end=75969 + _globals['_MACADDRESS_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_MACADDRESS_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_MANUFACTURER']._serialized_start=75972 + _globals['_MANUFACTURER']._serialized_end=76288 + _globals['_MANUFACTURER_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_MANUFACTURER_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_MODULE']._serialized_start=76291 + _globals['_MODULE']._serialized_end=76944 + _globals['_MODULE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_MODULE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_MODULEBAY']._serialized_start=76947 + _globals['_MODULEBAY']._serialized_end=77507 + _globals['_MODULEBAY_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_MODULEBAY_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_MODULETYPE']._serialized_start=77510 + _globals['_MODULETYPE']._serialized_end=78337 + _globals['_MODULETYPE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_MODULETYPE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_PLATFORM']._serialized_start=78340 + _globals['_PLATFORM']._serialized_end=78836 + _globals['_PLATFORM_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_PLATFORM_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_POWERFEED']._serialized_start=78839 + _globals['_POWERFEED']._serialized_end=79824 + _globals['_POWERFEED_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_POWERFEED_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_POWEROUTLET']._serialized_start=79827 + _globals['_POWEROUTLET']._serialized_end=81963 + _globals['_POWEROUTLET_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_POWEROUTLET_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_POWERPANEL']._serialized_start=81966 + _globals['_POWERPANEL']._serialized_end=82406 + _globals['_POWERPANEL_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_POWERPANEL_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_POWERPORT']._serialized_start=82409 + _globals['_POWERPORT']._serialized_end=84473 + _globals['_POWERPORT_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_POWERPORT_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_PREFIX']._serialized_start=84476 + _globals['_PREFIX']._serialized_end=85443 + _globals['_PREFIX_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_PREFIX_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_PROVIDER']._serialized_start=85446 + _globals['_PROVIDER']._serialized_end=85890 + _globals['_PROVIDER_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_PROVIDER_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_PROVIDERACCOUNT']._serialized_start=85893 + _globals['_PROVIDERACCOUNT']._serialized_end=86329 + _globals['_PROVIDERACCOUNT_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_PROVIDERACCOUNT_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_PROVIDERNETWORK']._serialized_start=86332 + _globals['_PROVIDERNETWORK']._serialized_end=86779 + _globals['_PROVIDERNETWORK_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_PROVIDERNETWORK_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_RIR']._serialized_start=86782 + _globals['_RIR']._serialized_end=87131 + _globals['_RIR_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_RIR_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_RACK']._serialized_start=87134 + _globals['_RACK']._serialized_end=88906 + _globals['_RACK_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_RACK_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_RACKRESERVATION']._serialized_start=88909 + _globals['_RACKRESERVATION']._serialized_end=89403 + _globals['_RACKRESERVATION_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_RACKRESERVATION_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_RACKROLE']._serialized_start=89406 + _globals['_RACKROLE']._serialized_end=89751 + _globals['_RACKROLE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_RACKROLE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_RACKTYPE']._serialized_start=89754 + _globals['_RACKTYPE']._serialized_end=91015 + _globals['_RACKTYPE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_RACKTYPE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_REARPORT']._serialized_start=91018 + _globals['_REARPORT']._serialized_end=92047 + _globals['_REARPORT_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_REARPORT_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_REGION']._serialized_start=92050 + _globals['_REGION']._serialized_end=92458 + _globals['_REGION_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_REGION_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_ROLE']._serialized_start=92461 + _globals['_ROLE']._serialized_end=92801 + _globals['_ROLE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_ROLE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_ROUTETARGET']._serialized_start=92804 + _globals['_ROUTETARGET']._serialized_end=93202 + _globals['_ROUTETARGET_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_ROUTETARGET_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_SERVICE']._serialized_start=93205 + _globals['_SERVICE']._serialized_end=94103 + _globals['_SERVICE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_SERVICE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_SITE']._serialized_start=94106 + _globals['_SITE']._serialized_end=95087 + _globals['_SITE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_SITE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_SITEGROUP']._serialized_start=95090 + _globals['_SITEGROUP']._serialized_end=95507 + _globals['_SITEGROUP_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_SITEGROUP_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_TAG']._serialized_start=95510 + _globals['_TAG']._serialized_end=97388 + _globals['_TENANT']._serialized_start=97391 + _globals['_TENANT']._serialized_end=97801 + _globals['_TENANT_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_TENANT_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_TENANTGROUP']._serialized_start=97804 + _globals['_TENANTGROUP']._serialized_end=98227 + _globals['_TENANTGROUP_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_TENANTGROUP_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_TUNNEL']._serialized_start=98230 + _globals['_TUNNEL']._serialized_end=98988 + _globals['_TUNNEL_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_TUNNEL_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_TUNNELGROUP']._serialized_start=98991 + _globals['_TUNNELGROUP']._serialized_end=99305 + _globals['_TUNNELGROUP_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_TUNNELGROUP_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_TUNNELTERMINATION']._serialized_start=99308 + _globals['_TUNNELTERMINATION']._serialized_end=107377 + _globals['_TUNNELTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_TUNNELTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_VLAN']._serialized_start=107380 + _globals['_VLAN']._serialized_end=108153 + _globals['_VLAN_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_VLAN_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_VLANGROUP']._serialized_start=108156 + _globals['_VLANGROUP']._serialized_end=108975 + _globals['_VLANGROUP_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_VLANGROUP_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_VLANTRANSLATIONPOLICY']._serialized_start=108977 + _globals['_VLANTRANSLATIONPOLICY']._serialized_end=109075 + _globals['_VLANTRANSLATIONRULE']._serialized_start=109078 + _globals['_VLANTRANSLATIONRULE']._serialized_end=109271 + _globals['_VMINTERFACE']._serialized_start=109274 + _globals['_VMINTERFACE']._serialized_end=110373 + _globals['_VMINTERFACE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_VMINTERFACE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_VRF']._serialized_start=110376 + _globals['_VRF']._serialized_end=110973 + _globals['_VRF_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_VRF_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_VIRTUALCHASSIS']._serialized_start=110976 + _globals['_VIRTUALCHASSIS']._serialized_end=111420 + _globals['_VIRTUALCHASSIS_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_VIRTUALCHASSIS_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_VIRTUALCIRCUIT']._serialized_start=111423 + _globals['_VIRTUALCIRCUIT']._serialized_end=112160 + _globals['_VIRTUALCIRCUIT_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_VIRTUALCIRCUIT_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_VIRTUALCIRCUITTERMINATION']._serialized_start=112163 + _globals['_VIRTUALCIRCUITTERMINATION']._serialized_end=112642 + _globals['_VIRTUALCIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_VIRTUALCIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_VIRTUALCIRCUITTYPE']._serialized_start=112645 + _globals['_VIRTUALCIRCUITTYPE']._serialized_end=113010 + _globals['_VIRTUALCIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_VIRTUALCIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_VIRTUALDEVICECONTEXT']._serialized_start=113013 + _globals['_VIRTUALDEVICECONTEXT']._serialized_end=113730 + _globals['_VIRTUALDEVICECONTEXT_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_VIRTUALDEVICECONTEXT_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_VIRTUALDISK']._serialized_start=113733 + _globals['_VIRTUALDISK']._serialized_end=114114 + _globals['_VIRTUALDISK_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_VIRTUALDISK_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_VIRTUALMACHINE']._serialized_start=114117 + _globals['_VIRTUALMACHINE']._serialized_end=115228 + _globals['_VIRTUALMACHINE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_VIRTUALMACHINE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_WIRELESSLAN']._serialized_start=115231 + _globals['_WIRELESSLAN']._serialized_end=116289 + _globals['_WIRELESSLAN_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_WIRELESSLAN_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_WIRELESSLANGROUP']._serialized_start=116292 + _globals['_WIRELESSLANGROUP']._serialized_end=116730 + _globals['_WIRELESSLANGROUP_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_WIRELESSLANGROUP_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_WIRELESSLINK']._serialized_start=116733 + _globals['_WIRELESSLINK']._serialized_end=117686 + _globals['_WIRELESSLINK_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_WIRELESSLINK_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CUSTOMFIELD']._serialized_start=117689 + _globals['_CUSTOMFIELD']._serialized_end=122552 + _globals['_CUSTOMFIELDCHOICESET']._serialized_start=122555 + _globals['_CUSTOMFIELDCHOICESET']._serialized_end=122861 + _globals['_JOURNALENTRY']._serialized_start=122864 + _globals['_JOURNALENTRY']._serialized_end=131521 + _globals['_JOURNALENTRY_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_JOURNALENTRY_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_MODULETYPEPROFILE']._serialized_start=131524 + _globals['_MODULETYPEPROFILE']._serialized_end=131916 + _globals['_MODULETYPEPROFILE_CUSTOMFIELDSENTRY']._serialized_start=6536 + _globals['_MODULETYPEPROFILE_CUSTOMFIELDSENTRY']._serialized_end=6627 + _globals['_CUSTOMLINK']._serialized_start=131919 + _globals['_CUSTOMLINK']._serialized_end=134007 + _globals['_INGESTERSERVICE']._serialized_start=134009 + _globals['_INGESTERSERVICE']._serialized_end=134087 # @@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 0a4268c..dc1f09b 100644 --- a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.pyi +++ b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.pyi @@ -1,3 +1,4 @@ +from google.protobuf import struct_pb2 as _struct_pb2 from google.protobuf import timestamp_pb2 as _timestamp_pb2 from netboxlabs.diode.sdk.validate import validate_pb2 as _validate_pb2 from google.protobuf.internal import containers as _containers @@ -8,7 +9,7 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor class Entity(_message.Message): - __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", "custom_field", "custom_field_choice_set", "journal_entry", "module_type_profile", "custom_link") + __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", "custom_field", "custom_field_choice_set", "journal_entry", "module_type_profile", "custom_link", "metadata") TIMESTAMP_FIELD_NUMBER: _ClassVar[int] ASN_FIELD_NUMBER: _ClassVar[int] ASN_RANGE_FIELD_NUMBER: _ClassVar[int] @@ -103,6 +104,7 @@ class Entity(_message.Message): JOURNAL_ENTRY_FIELD_NUMBER: _ClassVar[int] MODULE_TYPE_PROFILE_FIELD_NUMBER: _ClassVar[int] CUSTOM_LINK_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] timestamp: _timestamp_pb2.Timestamp asn: ASN asn_range: ASNRange @@ -197,10 +199,11 @@ class Entity(_message.Message): journal_entry: JournalEntry module_type_profile: ModuleTypeProfile custom_link: CustomLink - 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]] = ..., custom_field: _Optional[_Union[CustomField, _Mapping]] = ..., custom_field_choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., journal_entry: _Optional[_Union[JournalEntry, _Mapping]] = ..., module_type_profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., custom_link: _Optional[_Union[CustomLink, _Mapping]] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., custom_field: _Optional[_Union[CustomField, _Mapping]] = ..., custom_field_choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., journal_entry: _Optional[_Union[JournalEntry, _Mapping]] = ..., module_type_profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., custom_link: _Optional[_Union[CustomLink, _Mapping]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class IngestRequest(_message.Message): - __slots__ = ("stream", "entities", "id", "producer_app_name", "producer_app_version", "sdk_name", "sdk_version") + __slots__ = ("stream", "entities", "id", "producer_app_name", "producer_app_version", "sdk_name", "sdk_version", "metadata") STREAM_FIELD_NUMBER: _ClassVar[int] ENTITIES_FIELD_NUMBER: _ClassVar[int] ID_FIELD_NUMBER: _ClassVar[int] @@ -208,6 +211,7 @@ class IngestRequest(_message.Message): PRODUCER_APP_VERSION_FIELD_NUMBER: _ClassVar[int] SDK_NAME_FIELD_NUMBER: _ClassVar[int] SDK_VERSION_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] stream: str entities: _containers.RepeatedCompositeFieldContainer[Entity] id: str @@ -215,7 +219,8 @@ class IngestRequest(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class IngestResponse(_message.Message): __slots__ = ("errors",) diff --git a/netboxlabs/diode/sdk/ingester.py b/netboxlabs/diode/sdk/ingester.py index 09ff3d7..4b35fbf 100644 --- a/netboxlabs/diode/sdk/ingester.py +++ b/netboxlabs/diode/sdk/ingester.py @@ -2,7 +2,7 @@ # # Generated code. DO NOT EDIT. -# Timestamp: 2025-10-02 12:39:10Z +# Timestamp: 2025-11-04 12:25:51Z # # ruff: noqa: C901 @@ -11,7 +11,10 @@ import datetime import re from typing import Any + from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf import struct_pb2 as _struct_pb2 + import netboxlabs.diode.sdk.diode.v1.ingester_pb2 as pb PRIMARY_VALUE_MAP = { @@ -111,6 +114,15 @@ def is_field_set(value: Any, field_name: str) -> bool: return False +def convert_dict_to_struct(value: dict | None) -> _struct_pb2.Struct | None: + """Convert a Python dict to a protobuf Struct.""" + if value is None: + return None + struct = _struct_pb2.Struct() + struct.update(value) + return struct + + def convert_to_protobuf(value: Any, protobuf_class): """Convert a value to a protobuf message.""" if value is None: @@ -237,6 +249,7 @@ def __new__( journal_entry: str | JournalEntry | pb.JournalEntry | None = None, module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, custom_link: str | CustomLink | pb.CustomLink | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.Entity: """Create a new Entity.""" asn = convert_to_protobuf(asn, pb.ASN) @@ -332,11 +345,203 @@ def __new__( journal_entry = convert_to_protobuf(journal_entry, pb.JournalEntry) module_type_profile = convert_to_protobuf(module_type_profile, pb.ModuleTypeProfile) custom_link = convert_to_protobuf(custom_link, pb.CustomLink) + metadata = convert_dict_to_struct(metadata) if timestamp is None: ts = _timestamp_pb2.Timestamp() ts.GetCurrentTime() timestamp = ts - return pb.Entity( + + # Extract metadata from the entity if present + _entity_metadata = None + if asn is not None and hasattr(asn, '_metadata'): + _entity_metadata = asn._metadata + if asn_range is not None and hasattr(asn_range, '_metadata'): + _entity_metadata = asn_range._metadata + if aggregate is not None and hasattr(aggregate, '_metadata'): + _entity_metadata = aggregate._metadata + if cable is not None and hasattr(cable, '_metadata'): + _entity_metadata = cable._metadata + if cable_path is not None and hasattr(cable_path, '_metadata'): + _entity_metadata = cable_path._metadata + if cable_termination is not None and hasattr(cable_termination, '_metadata'): + _entity_metadata = cable_termination._metadata + if circuit is not None and hasattr(circuit, '_metadata'): + _entity_metadata = circuit._metadata + if circuit_group is not None and hasattr(circuit_group, '_metadata'): + _entity_metadata = circuit_group._metadata + if circuit_group_assignment is not None and hasattr(circuit_group_assignment, '_metadata'): + _entity_metadata = circuit_group_assignment._metadata + if circuit_termination is not None and hasattr(circuit_termination, '_metadata'): + _entity_metadata = circuit_termination._metadata + if circuit_type is not None and hasattr(circuit_type, '_metadata'): + _entity_metadata = circuit_type._metadata + if cluster is not None and hasattr(cluster, '_metadata'): + _entity_metadata = cluster._metadata + if cluster_group is not None and hasattr(cluster_group, '_metadata'): + _entity_metadata = cluster_group._metadata + if cluster_type is not None and hasattr(cluster_type, '_metadata'): + _entity_metadata = cluster_type._metadata + if console_port is not None and hasattr(console_port, '_metadata'): + _entity_metadata = console_port._metadata + if console_server_port is not None and hasattr(console_server_port, '_metadata'): + _entity_metadata = console_server_port._metadata + if contact is not None and hasattr(contact, '_metadata'): + _entity_metadata = contact._metadata + if contact_assignment is not None and hasattr(contact_assignment, '_metadata'): + _entity_metadata = contact_assignment._metadata + if contact_group is not None and hasattr(contact_group, '_metadata'): + _entity_metadata = contact_group._metadata + if contact_role is not None and hasattr(contact_role, '_metadata'): + _entity_metadata = contact_role._metadata + if device is not None and hasattr(device, '_metadata'): + _entity_metadata = device._metadata + if device_bay is not None and hasattr(device_bay, '_metadata'): + _entity_metadata = device_bay._metadata + if device_role is not None and hasattr(device_role, '_metadata'): + _entity_metadata = device_role._metadata + if device_type is not None and hasattr(device_type, '_metadata'): + _entity_metadata = device_type._metadata + if fhrp_group is not None and hasattr(fhrp_group, '_metadata'): + _entity_metadata = fhrp_group._metadata + if fhrp_group_assignment is not None and hasattr(fhrp_group_assignment, '_metadata'): + _entity_metadata = fhrp_group_assignment._metadata + if front_port is not None and hasattr(front_port, '_metadata'): + _entity_metadata = front_port._metadata + if ike_policy is not None and hasattr(ike_policy, '_metadata'): + _entity_metadata = ike_policy._metadata + if ike_proposal is not None and hasattr(ike_proposal, '_metadata'): + _entity_metadata = ike_proposal._metadata + if ip_address is not None and hasattr(ip_address, '_metadata'): + _entity_metadata = ip_address._metadata + if ip_range is not None and hasattr(ip_range, '_metadata'): + _entity_metadata = ip_range._metadata + if ip_sec_policy is not None and hasattr(ip_sec_policy, '_metadata'): + _entity_metadata = ip_sec_policy._metadata + if ip_sec_profile is not None and hasattr(ip_sec_profile, '_metadata'): + _entity_metadata = ip_sec_profile._metadata + if ip_sec_proposal is not None and hasattr(ip_sec_proposal, '_metadata'): + _entity_metadata = ip_sec_proposal._metadata + if interface is not None and hasattr(interface, '_metadata'): + _entity_metadata = interface._metadata + if inventory_item is not None and hasattr(inventory_item, '_metadata'): + _entity_metadata = inventory_item._metadata + if inventory_item_role is not None and hasattr(inventory_item_role, '_metadata'): + _entity_metadata = inventory_item_role._metadata + if l2vpn is not None and hasattr(l2vpn, '_metadata'): + _entity_metadata = l2vpn._metadata + if l2vpn_termination is not None and hasattr(l2vpn_termination, '_metadata'): + _entity_metadata = l2vpn_termination._metadata + if location is not None and hasattr(location, '_metadata'): + _entity_metadata = location._metadata + if mac_address is not None and hasattr(mac_address, '_metadata'): + _entity_metadata = mac_address._metadata + if manufacturer is not None and hasattr(manufacturer, '_metadata'): + _entity_metadata = manufacturer._metadata + if module is not None and hasattr(module, '_metadata'): + _entity_metadata = module._metadata + if module_bay is not None and hasattr(module_bay, '_metadata'): + _entity_metadata = module_bay._metadata + if module_type is not None and hasattr(module_type, '_metadata'): + _entity_metadata = module_type._metadata + if platform is not None and hasattr(platform, '_metadata'): + _entity_metadata = platform._metadata + if power_feed is not None and hasattr(power_feed, '_metadata'): + _entity_metadata = power_feed._metadata + if power_outlet is not None and hasattr(power_outlet, '_metadata'): + _entity_metadata = power_outlet._metadata + if power_panel is not None and hasattr(power_panel, '_metadata'): + _entity_metadata = power_panel._metadata + if power_port is not None and hasattr(power_port, '_metadata'): + _entity_metadata = power_port._metadata + if prefix is not None and hasattr(prefix, '_metadata'): + _entity_metadata = prefix._metadata + if provider is not None and hasattr(provider, '_metadata'): + _entity_metadata = provider._metadata + if provider_account is not None and hasattr(provider_account, '_metadata'): + _entity_metadata = provider_account._metadata + if provider_network is not None and hasattr(provider_network, '_metadata'): + _entity_metadata = provider_network._metadata + if rir is not None and hasattr(rir, '_metadata'): + _entity_metadata = rir._metadata + if rack is not None and hasattr(rack, '_metadata'): + _entity_metadata = rack._metadata + if rack_reservation is not None and hasattr(rack_reservation, '_metadata'): + _entity_metadata = rack_reservation._metadata + if rack_role is not None and hasattr(rack_role, '_metadata'): + _entity_metadata = rack_role._metadata + if rack_type is not None and hasattr(rack_type, '_metadata'): + _entity_metadata = rack_type._metadata + if rear_port is not None and hasattr(rear_port, '_metadata'): + _entity_metadata = rear_port._metadata + if region is not None and hasattr(region, '_metadata'): + _entity_metadata = region._metadata + if role is not None and hasattr(role, '_metadata'): + _entity_metadata = role._metadata + if route_target is not None and hasattr(route_target, '_metadata'): + _entity_metadata = route_target._metadata + if service is not None and hasattr(service, '_metadata'): + _entity_metadata = service._metadata + if site is not None and hasattr(site, '_metadata'): + _entity_metadata = site._metadata + if site_group is not None and hasattr(site_group, '_metadata'): + _entity_metadata = site_group._metadata + if tag is not None and hasattr(tag, '_metadata'): + _entity_metadata = tag._metadata + if tenant is not None and hasattr(tenant, '_metadata'): + _entity_metadata = tenant._metadata + if tenant_group is not None and hasattr(tenant_group, '_metadata'): + _entity_metadata = tenant_group._metadata + if tunnel is not None and hasattr(tunnel, '_metadata'): + _entity_metadata = tunnel._metadata + if tunnel_group is not None and hasattr(tunnel_group, '_metadata'): + _entity_metadata = tunnel_group._metadata + if tunnel_termination is not None and hasattr(tunnel_termination, '_metadata'): + _entity_metadata = tunnel_termination._metadata + if vlan is not None and hasattr(vlan, '_metadata'): + _entity_metadata = vlan._metadata + if vlan_group is not None and hasattr(vlan_group, '_metadata'): + _entity_metadata = vlan_group._metadata + if vlan_translation_policy is not None and hasattr(vlan_translation_policy, '_metadata'): + _entity_metadata = vlan_translation_policy._metadata + if vlan_translation_rule is not None and hasattr(vlan_translation_rule, '_metadata'): + _entity_metadata = vlan_translation_rule._metadata + if vm_interface is not None and hasattr(vm_interface, '_metadata'): + _entity_metadata = vm_interface._metadata + if vrf is not None and hasattr(vrf, '_metadata'): + _entity_metadata = vrf._metadata + if virtual_chassis is not None and hasattr(virtual_chassis, '_metadata'): + _entity_metadata = virtual_chassis._metadata + if virtual_circuit is not None and hasattr(virtual_circuit, '_metadata'): + _entity_metadata = virtual_circuit._metadata + if virtual_circuit_termination is not None and hasattr(virtual_circuit_termination, '_metadata'): + _entity_metadata = virtual_circuit_termination._metadata + if virtual_circuit_type is not None and hasattr(virtual_circuit_type, '_metadata'): + _entity_metadata = virtual_circuit_type._metadata + if virtual_device_context is not None and hasattr(virtual_device_context, '_metadata'): + _entity_metadata = virtual_device_context._metadata + if virtual_disk is not None and hasattr(virtual_disk, '_metadata'): + _entity_metadata = virtual_disk._metadata + if virtual_machine is not None and hasattr(virtual_machine, '_metadata'): + _entity_metadata = virtual_machine._metadata + if wireless_lan is not None and hasattr(wireless_lan, '_metadata'): + _entity_metadata = wireless_lan._metadata + if wireless_lan_group is not None and hasattr(wireless_lan_group, '_metadata'): + _entity_metadata = wireless_lan_group._metadata + if wireless_link is not None and hasattr(wireless_link, '_metadata'): + _entity_metadata = wireless_link._metadata + if custom_field is not None and hasattr(custom_field, '_metadata'): + _entity_metadata = custom_field._metadata + if custom_field_choice_set is not None and hasattr(custom_field_choice_set, '_metadata'): + _entity_metadata = custom_field_choice_set._metadata + if journal_entry is not None and hasattr(journal_entry, '_metadata'): + _entity_metadata = journal_entry._metadata + if module_type_profile is not None and hasattr(module_type_profile, '_metadata'): + _entity_metadata = module_type_profile._metadata + if custom_link is not None and hasattr(custom_link, '_metadata'): + _entity_metadata = custom_link._metadata + if _entity_metadata is not None: + metadata = _entity_metadata + result = pb.Entity( timestamp=timestamp, asn=asn, asn_range=asn_range, @@ -431,7 +636,9 @@ def __new__( journal_entry=journal_entry, module_type_profile=module_type_profile, custom_link=custom_link, + metadata=metadata, ) + return result class ASN: @@ -446,13 +653,19 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.ASN( asn=asn, rir=rir, tenant=tenant, @@ -461,6 +674,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class ASNRange: @@ -477,13 +693,19 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.ASNRange( name=name, slug=slug, rir=rir, @@ -494,6 +716,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class Aggregate: @@ -509,13 +734,19 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Aggregate( prefix=prefix, rir=rir, tenant=tenant, @@ -525,6 +756,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class Cable: @@ -545,6 +779,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, + metadata: dict[str, Any] | None = None, ) -> pb.Cable: """Create a new Cable.""" a_terminations = convert_to_protobuf_list(a_terminations, pb.GenericObject) @@ -552,7 +787,12 @@ 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) - return pb.Cable( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Cable( type=type, a_terminations=a_terminations, b_terminations=b_terminations, @@ -567,6 +807,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class CablePath: @@ -577,13 +820,22 @@ def __new__( is_active: bool | None = None, is_complete: bool | None = None, is_split: bool | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.CablePath: """Create a new CablePath.""" - return pb.CablePath( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.CablePath( is_active=is_active, is_complete=is_complete, is_split=is_split, ) + if _metadata is not None: + result._metadata = _metadata + return result class CableTermination: @@ -602,6 +854,7 @@ def __new__( 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, + metadata: dict[str, Any] | None = None, ) -> pb.CableTermination: """Create a new CableTermination.""" cable = convert_to_protobuf(cable, pb.Cable) @@ -614,7 +867,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.CableTermination( cable=cable, cable_end=cable_end, termination_circuit_termination=termination_circuit_termination, @@ -627,6 +885,9 @@ def __new__( termination_power_port=termination_power_port, termination_rear_port=termination_rear_port, ) + if _metadata is not None: + result._metadata = _metadata + return result class Circuit: @@ -650,6 +911,7 @@ def __new__( 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, + metadata: dict[str, Any] | None = None, ) -> pb.Circuit: """Create a new Circuit.""" provider = convert_to_protobuf(provider, pb.Provider) @@ -659,7 +921,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Circuit( cid=cid, provider=provider, provider_account=provider_account, @@ -677,6 +944,9 @@ def __new__( assignments=assignments, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class CircuitGroup: @@ -690,12 +960,18 @@ 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, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.CircuitGroup( name=name, slug=slug, description=description, @@ -703,6 +979,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class CircuitGroupAssignment: @@ -715,19 +994,28 @@ def __new__( member_virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, priority: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.CircuitGroupAssignment( group=group, member_circuit=member_circuit, member_virtual_circuit=member_virtual_circuit, priority=priority, tags=tags, ) + if _metadata is not None: + result._metadata = _metadata + return result class CircuitTermination: @@ -750,6 +1038,7 @@ def __new__( mark_connected: bool | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.CircuitTermination: """Create a new CircuitTermination.""" circuit = convert_to_protobuf(circuit, pb.Circuit) @@ -760,7 +1049,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.CircuitTermination( circuit=circuit, term_side=term_side, termination_location=termination_location, @@ -777,6 +1071,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class CircuitType: @@ -790,11 +1087,17 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.CircuitType( name=name, slug=slug, color=color, @@ -802,6 +1105,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class Cluster: @@ -822,6 +1128,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, + metadata: dict[str, Any] | None = None, ) -> pb.Cluster: """Create a new Cluster.""" type = convert_to_protobuf(type, pb.ClusterType) @@ -833,7 +1140,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Cluster( name=name, type=type, group=group, @@ -848,6 +1160,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class ClusterGroup: @@ -860,17 +1175,26 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.ClusterGroup( name=name, slug=slug, description=description, tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class ClusterType: @@ -883,17 +1207,26 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.ClusterType( name=name, slug=slug, description=description, tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class ConsolePort: @@ -911,13 +1244,19 @@ def __new__( mark_connected: bool | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.ConsolePort( device=device, module=module, name=name, @@ -929,6 +1268,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class ConsoleServerPort: @@ -946,13 +1288,19 @@ def __new__( mark_connected: bool | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.ConsoleServerPort( device=device, module=module, name=name, @@ -964,6 +1312,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class Contact: @@ -983,13 +1334,19 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, groups: list[str | ContactGroup | pb.ContactGroup] | None = None, + metadata: dict[str, Any] | 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) groups = convert_to_protobuf_list(groups, pb.ContactGroup) - return pb.Contact( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Contact( group=group, name=name, title=title, @@ -1003,6 +1360,9 @@ def __new__( custom_fields=custom_fields, groups=groups, ) + if _metadata is not None: + result._metadata = _metadata + return result class ContactAssignment: @@ -1108,6 +1468,7 @@ def __new__( priority: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.ContactAssignment: """Create a new ContactAssignment.""" object_asn = convert_to_protobuf(object_asn, pb.ASN) @@ -1207,7 +1568,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.ContactAssignment( object_asn=object_asn, object_asn_range=object_asn_range, object_aggregate=object_aggregate, @@ -1307,6 +1673,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class ContactGroup: @@ -1321,12 +1690,18 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, comments: str | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.ContactGroup( name=name, slug=slug, parent=parent, @@ -1335,6 +1710,9 @@ def __new__( custom_fields=custom_fields, comments=comments, ) + if _metadata is not None: + result._metadata = _metadata + return result class ContactRole: @@ -1347,17 +1725,26 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.ContactRole( name=name, slug=slug, description=description, tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class CustomFieldObjectReference: @@ -1458,6 +1845,7 @@ def __new__( journal_entry: str | JournalEntry | pb.JournalEntry | None = None, module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, custom_link: str | CustomLink | pb.CustomLink | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.CustomFieldObjectReference: """Create a new CustomFieldObjectReference.""" asn = convert_to_protobuf(asn, pb.ASN) @@ -1553,7 +1941,7 @@ def __new__( journal_entry = convert_to_protobuf(journal_entry, pb.JournalEntry) module_type_profile = convert_to_protobuf(module_type_profile, pb.ModuleTypeProfile) custom_link = convert_to_protobuf(custom_link, pb.CustomLink) - return pb.CustomFieldObjectReference( + result = pb.CustomFieldObjectReference( asn=asn, asn_range=asn_range, aggregate=aggregate, @@ -1648,6 +2036,7 @@ def __new__( module_type_profile=module_type_profile, custom_link=custom_link, ) + return result class CustomFieldValue: @@ -1668,11 +2057,12 @@ def __new__( json: str | None = None, selection: str | None = None, object: str | CustomFieldObjectReference | pb.CustomFieldObjectReference | None = None, + metadata: dict[str, Any] | 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) - return pb.CustomFieldValue( + result = pb.CustomFieldValue( multiple_selection=multiple_selection, multiple_objects=multiple_objects, text=text, @@ -1687,6 +2077,7 @@ def __new__( selection=selection, object=object, ) + return result class Device: @@ -1723,6 +2114,7 @@ def __new__( custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, # shortcuts manufacturer: str | Manufacturer | pb.Manufacturer = None, + metadata: dict[str, Any] | None = None, ) -> pb.Device: """Create a new Device.""" device_type = convert_to_protobuf(device_type, pb.DeviceType) @@ -1749,7 +2141,12 @@ def __new__( platform.manufacturer.CopyFrom(manufacturer) if device_type is not None and not device_type.HasField('manufacturer'): device_type.manufacturer.CopyFrom(manufacturer) - return pb.Device( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Device( name=name, device_type=device_type, role=role, @@ -1778,6 +2175,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class DeviceBay: @@ -1792,13 +2192,19 @@ def __new__( 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, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.DeviceBay( device=device, name=name, label=label, @@ -1807,6 +2213,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class DeviceRole: @@ -1823,12 +2232,18 @@ def __new__( custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, parent: str | DeviceRole | pb.DeviceRole | None = None, comments: str | None = None, + metadata: dict[str, Any] | 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) parent = convert_to_protobuf(parent, pb.DeviceRole) - return pb.DeviceRole( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.DeviceRole( name=name, slug=slug, color=color, @@ -1839,6 +2254,9 @@ def __new__( parent=parent, comments=comments, ) + if _metadata is not None: + result._metadata = _metadata + return result class DeviceType: @@ -1862,13 +2280,19 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.DeviceType( manufacturer=manufacturer, default_platform=default_platform, model=model, @@ -1886,6 +2310,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class FHRPGroup: @@ -1902,11 +2329,17 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.FHRPGroup( name=name, protocol=protocol, group_id=group_id, @@ -1917,6 +2350,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class FHRPGroupAssignment: @@ -2019,6 +2455,7 @@ def __new__( interface_module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, interface_custom_link: str | CustomLink | pb.CustomLink | None = None, priority: int | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.FHRPGroupAssignment: """Create a new FHRPGroupAssignment.""" group = convert_to_protobuf(group, pb.FHRPGroup) @@ -2115,7 +2552,12 @@ def __new__( interface_journal_entry = convert_to_protobuf(interface_journal_entry, pb.JournalEntry) interface_module_type_profile = convert_to_protobuf(interface_module_type_profile, pb.ModuleTypeProfile) interface_custom_link = convert_to_protobuf(interface_custom_link, pb.CustomLink) - return pb.FHRPGroupAssignment( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.FHRPGroupAssignment( group=group, interface_asn=interface_asn, interface_asn_range=interface_asn_range, @@ -2212,6 +2654,9 @@ def __new__( interface_custom_link=interface_custom_link, priority=priority, ) + if _metadata is not None: + result._metadata = _metadata + return result class FrontPort: @@ -2231,6 +2676,7 @@ def __new__( mark_connected: bool | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.FrontPort: """Create a new FrontPort.""" device = convert_to_protobuf(device, pb.Device) @@ -2238,7 +2684,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.FrontPort( device=device, module=module, name=name, @@ -2252,6 +2703,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class GenericObject: @@ -2352,6 +2806,7 @@ def __new__( object_journal_entry: str | JournalEntry | pb.JournalEntry | None = None, object_module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, object_custom_link: str | CustomLink | pb.CustomLink | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.GenericObject: """Create a new GenericObject.""" object_asn = convert_to_protobuf(object_asn, pb.ASN) @@ -2447,7 +2902,7 @@ def __new__( object_journal_entry = convert_to_protobuf(object_journal_entry, pb.JournalEntry) object_module_type_profile = convert_to_protobuf(object_module_type_profile, pb.ModuleTypeProfile) object_custom_link = convert_to_protobuf(object_custom_link, pb.CustomLink) - return pb.GenericObject( + result = pb.GenericObject( object_asn=object_asn, object_asn_range=object_asn_range, object_aggregate=object_aggregate, @@ -2542,6 +2997,7 @@ def __new__( object_module_type_profile=object_module_type_profile, object_custom_link=object_custom_link, ) + return result class IKEPolicy: @@ -2558,12 +3014,18 @@ def __new__( 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, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.IKEPolicy( name=name, description=description, version=version, @@ -2574,6 +3036,9 @@ def __new__( custom_fields=custom_fields, proposals=proposals, ) + if _metadata is not None: + result._metadata = _metadata + return result class IKEProposal: @@ -2591,11 +3056,17 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.IKEProposal( name=name, description=description, authentication_method=authentication_method, @@ -2607,6 +3078,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class IPAddress: @@ -2635,6 +3109,7 @@ def __new__( site: str | Site | pb.Site = None, device_role: str | DeviceRole | pb.DeviceRole = None, device: str | Device | pb.Device = None, + metadata: dict[str, Any] | None = None, ) -> pb.IPAddress: """Create a new IPAddress.""" vrf = convert_to_protobuf(vrf, pb.VRF) @@ -2677,7 +3152,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.IPAddress( address=address, vrf=vrf, tenant=tenant, @@ -2693,6 +3173,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class IPRange: @@ -2712,6 +3195,7 @@ def __new__( mark_utilized: bool | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, mark_populated: bool | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.IPRange: """Create a new IPRange.""" vrf = convert_to_protobuf(vrf, pb.VRF) @@ -2719,7 +3203,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.IPRange( start_address=start_address, end_address=end_address, vrf=vrf, @@ -2733,6 +3222,9 @@ def __new__( custom_fields=custom_fields, mark_populated=mark_populated, ) + if _metadata is not None: + result._metadata = _metadata + return result class IPSecPolicy: @@ -2747,12 +3239,18 @@ def __new__( 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, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.IPSecPolicy( name=name, description=description, pfs_group=pfs_group, @@ -2761,6 +3259,9 @@ def __new__( custom_fields=custom_fields, proposals=proposals, ) + if _metadata is not None: + result._metadata = _metadata + return result class IPSecProfile: @@ -2776,13 +3277,19 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.IPSecProfile( name=name, description=description, mode=mode, @@ -2792,6 +3299,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class IPSecProposal: @@ -2808,11 +3318,17 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.IPSecProposal( name=name, description=description, encryption_algorithm=encryption_algorithm, @@ -2823,6 +3339,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class Interface: @@ -2870,6 +3389,7 @@ def __new__( platform: str | Platform | pb.Platform = None, site: str | Site | pb.Site = None, role: str | DeviceRole | pb.DeviceRole = None, + metadata: dict[str, Any] | None = None, ) -> pb.Interface: """Create a new Interface.""" device = convert_to_protobuf(device, pb.Device) @@ -2913,7 +3433,12 @@ def __new__( if role is not None: if device is not None and not device.HasField('role'): device.role.CopyFrom(role) - return pb.Interface( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Interface( device=device, module=module, name=name, @@ -2949,6 +3474,9 @@ def __new__( tagged_vlans=tagged_vlans, wireless_lans=wireless_lans, ) + if _metadata is not None: + result._metadata = _metadata + return result class InventoryItem: @@ -2977,6 +3505,7 @@ def __new__( 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, + metadata: dict[str, Any] | None = None, ) -> pb.InventoryItem: """Create a new InventoryItem.""" device = convert_to_protobuf(device, pb.Device) @@ -2992,7 +3521,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.InventoryItem( device=device, parent=parent, name=name, @@ -3015,6 +3549,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class InventoryItemRole: @@ -3028,11 +3565,17 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.InventoryItemRole( name=name, slug=slug, color=color, @@ -3040,6 +3583,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class L2VPN: @@ -3059,6 +3605,7 @@ def __new__( import_targets: list[str | RouteTarget | pb.RouteTarget] | None = None, export_targets: list[str | RouteTarget | pb.RouteTarget] | None = None, status: str | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.L2VPN: """Create a new L2VPN.""" tenant = convert_to_protobuf(tenant, pb.Tenant) @@ -3066,7 +3613,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.L2VPN( identifier=identifier, name=name, slug=slug, @@ -3080,6 +3632,9 @@ def __new__( export_targets=export_targets, status=status, ) + if _metadata is not None: + result._metadata = _metadata + return result class L2VPNTermination: @@ -3183,6 +3738,7 @@ def __new__( assigned_object_custom_link: str | CustomLink | pb.CustomLink | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.L2VPNTermination: """Create a new L2VPNTermination.""" l2vpn = convert_to_protobuf(l2vpn, pb.L2VPN) @@ -3281,7 +3837,12 @@ def __new__( assigned_object_custom_link = convert_to_protobuf(assigned_object_custom_link, pb.CustomLink) tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) - return pb.L2VPNTermination( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.L2VPNTermination( l2vpn=l2vpn, assigned_object_interface=assigned_object_interface, assigned_object_vlan=assigned_object_vlan, @@ -3379,6 +3940,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class Location: @@ -3397,6 +3961,7 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, comments: str | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.Location: """Create a new Location.""" site = convert_to_protobuf(site, pb.Site) @@ -3404,7 +3969,12 @@ 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) - return pb.Location( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Location( name=name, slug=slug, site=site, @@ -3417,6 +3987,9 @@ def __new__( custom_fields=custom_fields, comments=comments, ) + if _metadata is not None: + result._metadata = _metadata + return result class MACAddress: @@ -3431,13 +4004,19 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.MACAddress( mac_address=mac_address, assigned_object_interface=assigned_object_interface, assigned_object_vm_interface=assigned_object_vm_interface, @@ -3446,6 +4025,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class Manufacturer: @@ -3458,17 +4040,26 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Manufacturer( name=name, slug=slug, description=description, tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class Module: @@ -3486,6 +4077,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, + metadata: dict[str, Any] | None = None, ) -> pb.Module: """Create a new Module.""" device = convert_to_protobuf(device, pb.Device) @@ -3493,7 +4085,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Module( device=device, module_bay=module_bay, module_type=module_type, @@ -3505,6 +4102,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class ModuleBay: @@ -3521,6 +4121,7 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.ModuleBay: """Create a new ModuleBay.""" device = convert_to_protobuf(device, pb.Device) @@ -3528,7 +4129,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.ModuleBay( device=device, module=module, name=name, @@ -3539,6 +4145,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class ModuleType: @@ -3558,13 +4167,19 @@ def __new__( custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, attributes: str | None = None, + metadata: dict[str, Any] | 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) profile = convert_to_protobuf(profile, pb.ModuleTypeProfile) - return pb.ModuleType( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.ModuleType( manufacturer=manufacturer, model=model, part_number=part_number, @@ -3578,6 +4193,9 @@ def __new__( profile=profile, attributes=attributes, ) + if _metadata is not None: + result._metadata = _metadata + return result class Platform: @@ -3593,13 +4211,19 @@ def __new__( custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, parent: str | Platform | pb.Platform | None = None, comments: str | None = None, + metadata: dict[str, Any] | 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) parent = convert_to_protobuf(parent, pb.Platform) - return pb.Platform( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Platform( name=name, slug=slug, manufacturer=manufacturer, @@ -3609,6 +4233,9 @@ def __new__( parent=parent, comments=comments, ) + if _metadata is not None: + result._metadata = _metadata + return result class PowerFeed: @@ -3632,6 +4259,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, + metadata: dict[str, Any] | None = None, ) -> pb.PowerFeed: """Create a new PowerFeed.""" power_panel = convert_to_protobuf(power_panel, pb.PowerPanel) @@ -3639,7 +4267,12 @@ 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) - return pb.PowerFeed( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.PowerFeed( power_panel=power_panel, rack=rack, name=name, @@ -3657,6 +4290,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class PowerOutlet: @@ -3677,6 +4313,7 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, status: str | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.PowerOutlet: """Create a new PowerOutlet.""" device = convert_to_protobuf(device, pb.Device) @@ -3684,7 +4321,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.PowerOutlet( device=device, module=module, name=name, @@ -3699,6 +4341,9 @@ def __new__( custom_fields=custom_fields, status=status, ) + if _metadata is not None: + result._metadata = _metadata + return result class PowerPanel: @@ -3713,13 +4358,19 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.PowerPanel( site=site, location=location, name=name, @@ -3728,6 +4379,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class PowerPort: @@ -3746,13 +4400,19 @@ def __new__( mark_connected: bool | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.PowerPort( device=device, module=module, name=name, @@ -3765,6 +4425,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class Prefix: @@ -3788,6 +4451,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, + metadata: dict[str, Any] | None = None, ) -> pb.Prefix: """Create a new Prefix.""" vrf = convert_to_protobuf(vrf, pb.VRF) @@ -3800,7 +4464,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Prefix( prefix=prefix, vrf=vrf, scope_location=scope_location, @@ -3818,6 +4487,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class Provider: @@ -3833,13 +4505,19 @@ def __new__( 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, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Provider( name=name, slug=slug, description=description, @@ -3849,6 +4527,9 @@ def __new__( accounts=accounts, asns=asns, ) + if _metadata is not None: + result._metadata = _metadata + return result class ProviderAccount: @@ -3863,12 +4544,18 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.ProviderAccount( provider=provider, name=name, account=account, @@ -3877,6 +4564,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class ProviderNetwork: @@ -3891,12 +4581,18 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.ProviderNetwork( provider=provider, name=name, service_id=service_id, @@ -3905,6 +4601,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class RIR: @@ -3918,11 +4617,17 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.RIR( name=name, slug=slug, is_private=is_private, @@ -3930,6 +4635,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class Rack: @@ -3965,6 +4673,7 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, outer_height: int | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.Rack: """Create a new Rack.""" site = convert_to_protobuf(site, pb.Site) @@ -3974,7 +4683,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Rack( name=name, facility_id=facility_id, site=site, @@ -4004,6 +4718,9 @@ def __new__( custom_fields=custom_fields, outer_height=outer_height, ) + if _metadata is not None: + result._metadata = _metadata + return result class RackReservation: @@ -4019,13 +4736,19 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, status: str | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.RackReservation( rack=rack, units=units, tenant=tenant, @@ -4035,6 +4758,9 @@ def __new__( custom_fields=custom_fields, status=status, ) + if _metadata is not None: + result._metadata = _metadata + return result class RackRole: @@ -4048,11 +4774,17 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.RackRole( name=name, slug=slug, color=color, @@ -4060,6 +4792,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class RackType: @@ -4087,12 +4822,18 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, outer_height: int | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.RackType( manufacturer=manufacturer, model=model, slug=slug, @@ -4114,6 +4855,9 @@ def __new__( custom_fields=custom_fields, outer_height=outer_height, ) + if _metadata is not None: + result._metadata = _metadata + return result class RearPort: @@ -4132,13 +4876,19 @@ def __new__( mark_connected: bool | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.RearPort( device=device, module=module, name=name, @@ -4151,6 +4901,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class Region: @@ -4165,12 +4918,18 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, comments: str | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Region( name=name, slug=slug, parent=parent, @@ -4179,6 +4938,9 @@ def __new__( custom_fields=custom_fields, comments=comments, ) + if _metadata is not None: + result._metadata = _metadata + return result class Role: @@ -4192,11 +4954,17 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Role( name=name, slug=slug, weight=weight, @@ -4204,6 +4972,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class RouteTarget: @@ -4217,12 +4988,18 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.RouteTarget( name=name, tenant=tenant, description=description, @@ -4230,6 +5007,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class Service: @@ -4250,6 +5030,7 @@ def __new__( parent_object_device: str | Device | pb.Device | None = None, parent_object_fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, parent_object_virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.Service: """Create a new Service.""" device = convert_to_protobuf(device, pb.Device) @@ -4260,7 +5041,12 @@ def __new__( parent_object_device = convert_to_protobuf(parent_object_device, pb.Device) parent_object_fhrp_group = convert_to_protobuf(parent_object_fhrp_group, pb.FHRPGroup) parent_object_virtual_machine = convert_to_protobuf(parent_object_virtual_machine, pb.VirtualMachine) - return pb.Service( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Service( device=device, virtual_machine=virtual_machine, name=name, @@ -4275,6 +5061,9 @@ def __new__( parent_object_fhrp_group=parent_object_fhrp_group, parent_object_virtual_machine=parent_object_virtual_machine, ) + if _metadata is not None: + result._metadata = _metadata + return result class Site: @@ -4299,6 +5088,7 @@ def __new__( 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, + metadata: dict[str, Any] | None = None, ) -> pb.Site: """Create a new Site.""" region = convert_to_protobuf(region, pb.Region) @@ -4307,7 +5097,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Site( name=name, slug=slug, status=status, @@ -4326,6 +5121,9 @@ def __new__( custom_fields=custom_fields, asns=asns, ) + if _metadata is not None: + result._metadata = _metadata + return result class SiteGroup: @@ -4340,12 +5138,18 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, comments: str | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.SiteGroup( name=name, slug=slug, parent=parent, @@ -4354,6 +5158,9 @@ def __new__( custom_fields=custom_fields, comments=comments, ) + if _metadata is not None: + result._metadata = _metadata + return result class Tag: @@ -4367,9 +5174,15 @@ def __new__( description: str | None = None, weight: int | None = None, object_types: list[str] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.Tag: """Create a new Tag.""" - return pb.Tag( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Tag( name=name, slug=slug, color=color, @@ -4377,6 +5190,9 @@ def __new__( weight=weight, object_types=object_types, ) + if _metadata is not None: + result._metadata = _metadata + return result class Tenant: @@ -4391,12 +5207,18 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Tenant( name=name, slug=slug, group=group, @@ -4405,6 +5227,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class TenantGroup: @@ -4419,12 +5244,18 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, comments: str | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.TenantGroup( name=name, slug=slug, parent=parent, @@ -4433,6 +5264,9 @@ def __new__( custom_fields=custom_fields, comments=comments, ) + if _metadata is not None: + result._metadata = _metadata + return result class Tunnel: @@ -4451,6 +5285,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, + metadata: dict[str, Any] | None = None, ) -> pb.Tunnel: """Create a new Tunnel.""" group = convert_to_protobuf(group, pb.TunnelGroup) @@ -4458,7 +5293,12 @@ 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) - return pb.Tunnel( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.Tunnel( name=name, status=status, group=group, @@ -4471,6 +5311,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class TunnelGroup: @@ -4483,17 +5326,26 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.TunnelGroup( name=name, slug=slug, description=description, tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class TunnelTermination: @@ -4599,6 +5451,7 @@ def __new__( 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, + metadata: dict[str, Any] | None = None, ) -> pb.TunnelTermination: """Create a new TunnelTermination.""" tunnel = convert_to_protobuf(tunnel, pb.Tunnel) @@ -4698,7 +5551,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.TunnelTermination( tunnel=tunnel, role=role, termination_asn=termination_asn, @@ -4798,6 +5656,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class VLAN: @@ -4818,6 +5679,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, + metadata: dict[str, Any] | None = None, ) -> pb.VLAN: """Create a new VLAN.""" site = convert_to_protobuf(site, pb.Site) @@ -4827,7 +5689,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.VLAN( site=site, group=group, vid=vid, @@ -4842,6 +5709,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class VLANGroup: @@ -4863,6 +5733,7 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, tenant: str | Tenant | pb.Tenant | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.VLANGroup: """Create a new VLANGroup.""" scope_cluster = convert_to_protobuf(scope_cluster, pb.Cluster) @@ -4875,7 +5746,12 @@ def __new__( tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) tenant = convert_to_protobuf(tenant, pb.Tenant) - return pb.VLANGroup( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.VLANGroup( name=name, slug=slug, scope_cluster=scope_cluster, @@ -4891,6 +5767,9 @@ def __new__( custom_fields=custom_fields, tenant=tenant, ) + if _metadata is not None: + result._metadata = _metadata + return result class VLANTranslationPolicy: @@ -4900,12 +5779,21 @@ def __new__( cls, name: str | None = None, description: str | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.VLANTranslationPolicy: """Create a new VLANTranslationPolicy.""" - return pb.VLANTranslationPolicy( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.VLANTranslationPolicy( name=name, description=description, ) + if _metadata is not None: + result._metadata = _metadata + return result class VLANTranslationRule: @@ -4917,15 +5805,24 @@ def __new__( local_vid: int | None = None, remote_vid: int | None = None, description: str | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.VLANTranslationRule: """Create a new VLANTranslationRule.""" policy = convert_to_protobuf(policy, pb.VLANTranslationPolicy) - return pb.VLANTranslationRule( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.VLANTranslationRule( policy=policy, local_vid=local_vid, remote_vid=remote_vid, description=description, ) + if _metadata is not None: + result._metadata = _metadata + return result class VMInterface: @@ -4949,6 +5846,7 @@ def __new__( 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, + metadata: dict[str, Any] | None = None, ) -> pb.VMInterface: """Create a new VMInterface.""" virtual_machine = convert_to_protobuf(virtual_machine, pb.VirtualMachine) @@ -4962,7 +5860,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.VMInterface( virtual_machine=virtual_machine, name=name, enabled=enabled, @@ -4980,6 +5883,9 @@ def __new__( custom_fields=custom_fields, tagged_vlans=tagged_vlans, ) + if _metadata is not None: + result._metadata = _metadata + return result class VRF: @@ -4997,6 +5903,7 @@ def __new__( 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, + metadata: dict[str, Any] | None = None, ) -> pb.VRF: """Create a new VRF.""" tenant = convert_to_protobuf(tenant, pb.Tenant) @@ -5004,7 +5911,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.VRF( name=name, rd=rd, tenant=tenant, @@ -5016,6 +5928,9 @@ def __new__( import_targets=import_targets, export_targets=export_targets, ) + if _metadata is not None: + result._metadata = _metadata + return result class VirtualChassis: @@ -5030,12 +5945,18 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.VirtualChassis( name=name, domain=domain, master=master, @@ -5044,6 +5965,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class VirtualCircuit: @@ -5061,6 +5985,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, + metadata: dict[str, Any] | None = None, ) -> pb.VirtualCircuit: """Create a new VirtualCircuit.""" provider_network = convert_to_protobuf(provider_network, pb.ProviderNetwork) @@ -5069,7 +5994,12 @@ 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) - return pb.VirtualCircuit( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.VirtualCircuit( cid=cid, provider_network=provider_network, provider_account=provider_account, @@ -5081,6 +6011,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class VirtualCircuitTermination: @@ -5094,13 +6027,19 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.VirtualCircuitTermination( virtual_circuit=virtual_circuit, role=role, interface=interface, @@ -5108,6 +6047,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class VirtualCircuitType: @@ -5121,11 +6063,17 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.VirtualCircuitType( name=name, slug=slug, color=color, @@ -5133,6 +6081,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class VirtualDeviceContext: @@ -5151,6 +6102,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, + metadata: dict[str, Any] | None = None, ) -> pb.VirtualDeviceContext: """Create a new VirtualDeviceContext.""" device = convert_to_protobuf(device, pb.Device) @@ -5159,7 +6111,12 @@ def __new__( 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.VirtualDeviceContext( name=name, device=device, identifier=identifier, @@ -5172,6 +6129,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class VirtualDisk: @@ -5185,12 +6145,18 @@ def __new__( size: int | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.VirtualDisk( virtual_machine=virtual_machine, name=name, description=description, @@ -5198,6 +6164,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class VirtualMachine: @@ -5223,6 +6192,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, + metadata: dict[str, Any] | None = None, ) -> pb.VirtualMachine: """Create a new VirtualMachine.""" site = convert_to_protobuf(site, pb.Site) @@ -5248,7 +6218,12 @@ def __new__( if role is not None: if device is not None and not device.HasField('role'): device.role.CopyFrom(role) - return pb.VirtualMachine( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.VirtualMachine( name=name, status=status, site=site, @@ -5268,6 +6243,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class WirelessLAN: @@ -5291,6 +6269,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, + metadata: dict[str, Any] | None = None, ) -> pb.WirelessLAN: """Create a new WirelessLAN.""" group = convert_to_protobuf(group, pb.WirelessLANGroup) @@ -5302,7 +6281,12 @@ 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) - return pb.WirelessLAN( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.WirelessLAN( ssid=ssid, description=description, group=group, @@ -5320,6 +6304,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class WirelessLANGroup: @@ -5334,12 +6321,18 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, comments: str | None = None, + metadata: dict[str, Any] | 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( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.WirelessLANGroup( name=name, slug=slug, parent=parent, @@ -5348,6 +6341,9 @@ def __new__( custom_fields=custom_fields, comments=comments, ) + if _metadata is not None: + result._metadata = _metadata + return result class WirelessLink: @@ -5369,6 +6365,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, + metadata: dict[str, Any] | None = None, ) -> pb.WirelessLink: """Create a new WirelessLink.""" interface_a = convert_to_protobuf(interface_a, pb.Interface) @@ -5376,7 +6373,12 @@ 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) - return pb.WirelessLink( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.WirelessLink( interface_a=interface_a, interface_b=interface_b, ssid=ssid, @@ -5392,6 +6394,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class CustomField: @@ -5421,10 +6426,16 @@ def __new__( choice_set: str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None = None, comments: str | None = None, object_types: list[str] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.CustomField: """Create a new CustomField.""" choice_set = convert_to_protobuf(choice_set, pb.CustomFieldChoiceSet) - return pb.CustomField( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.CustomField( type=type, related_object_type=related_object_type, name=name, @@ -5448,6 +6459,9 @@ def __new__( comments=comments, object_types=object_types, ) + if _metadata is not None: + result._metadata = _metadata + return result class CustomFieldChoiceSet: @@ -5460,15 +6474,24 @@ def __new__( base_choices: str | None = None, order_alphabetically: bool | None = None, extra_choices: list[str] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.CustomFieldChoiceSet: """Create a new CustomFieldChoiceSet.""" - return pb.CustomFieldChoiceSet( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.CustomFieldChoiceSet( name=name, description=description, base_choices=base_choices, order_alphabetically=order_alphabetically, extra_choices=extra_choices, ) + if _metadata is not None: + result._metadata = _metadata + return result class JournalEntry: @@ -5573,6 +6596,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, + metadata: dict[str, Any] | None = None, ) -> pb.JournalEntry: """Create a new JournalEntry.""" assigned_object_asn = convert_to_protobuf(assigned_object_asn, pb.ASN) @@ -5670,7 +6694,12 @@ def __new__( assigned_object_custom_link = convert_to_protobuf(assigned_object_custom_link, pb.CustomLink) tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) - return pb.JournalEntry( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.JournalEntry( assigned_object_asn=assigned_object_asn, assigned_object_asn_range=assigned_object_asn_range, assigned_object_aggregate=assigned_object_aggregate, @@ -5769,6 +6798,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class ModuleTypeProfile: @@ -5782,11 +6814,17 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.ModuleTypeProfile: """Create a new ModuleTypeProfile.""" tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) - return pb.ModuleTypeProfile( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.ModuleTypeProfile( name=name, description=description, schema=schema, @@ -5794,6 +6832,9 @@ def __new__( tags=tags, custom_fields=custom_fields, ) + if _metadata is not None: + result._metadata = _metadata + return result class CustomLink: @@ -5810,9 +6851,15 @@ def __new__( button_class: str | None = None, new_window: bool | None = None, object_types: list[str] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.CustomLink: """Create a new CustomLink.""" - return pb.CustomLink( + # Store metadata on the protobuf message for later extraction + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None + result = pb.CustomLink( name=name, enabled=enabled, link_text=link_text, @@ -5823,3 +6870,6 @@ def __new__( new_window=new_window, object_types=object_types, ) + if _metadata is not None: + result._metadata = _metadata + return result From 6393f960b6fbc0539770702945cd8ed0183ef33b Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Tue, 4 Nov 2025 17:26:09 +0100 Subject: [PATCH 2/9] feat: add request-level metadata support to DiodeClient and Entity classes Signed-off-by: Michal Fiedorowicz --- netboxlabs/diode/sdk/client.py | 79 ++++++++- netboxlabs/diode/sdk/client.pyi | 6 +- tests/test_client.py | 306 ++++++++++++++++++++++++++++++++ tests/test_ingester.py | 158 +++++++++++++++++ 4 files changed, 543 insertions(+), 6 deletions(-) diff --git a/netboxlabs/diode/sdk/client.py b/netboxlabs/diode/sdk/client.py index e41aa09..230d721 100644 --- a/netboxlabs/diode/sdk/client.py +++ b/netboxlabs/diode/sdk/client.py @@ -14,6 +14,7 @@ import uuid from collections.abc import Iterable from pathlib import Path +from typing import Any from urllib.parse import urlencode, urlparse import certifi @@ -33,9 +34,11 @@ DiodeConfigError, OTLPClientError, ) -from netboxlabs.diode.sdk.ingester import Entity +from netboxlabs.diode.sdk.ingester import Entity, convert_dict_to_struct from netboxlabs.diode.sdk.version import version_semver +Metadata = dict[str, Any] + _CLIENT_ID_ENVVAR_NAME = "DIODE_CLIENT_ID" _CLIENT_SECRET_ENVVAR_NAME = "DIODE_CLIENT_SECRET" _DEFAULT_STREAM = "latest" @@ -295,10 +298,13 @@ def ingest( self, entities: Iterable[Entity | ingester_pb2.Entity | None], stream: str | None = _DEFAULT_STREAM, + *, + metadata: Metadata | None = None, ) -> ingester_pb2.IngestResponse: - """Ingest entities.""" + """Ingest entities with optional request-level metadata.""" for attempt in range(self._max_auth_retries): try: + request_metadata = convert_dict_to_struct(metadata) if metadata else None request = ingester_pb2.IngestRequest( stream=stream, id=str(uuid.uuid4()), @@ -308,6 +314,8 @@ def ingest( producer_app_name=self.app_name, producer_app_version=self.app_version, ) + if request_metadata is not None: + request.metadata.CopyFrom(request_metadata) return self._stub.Ingest(request, metadata=self._metadata) except grpc.RpcError as err: if err.code() == grpc.StatusCode.UNAUTHENTICATED: @@ -397,8 +405,11 @@ def ingest( self, entities: Iterable[Entity | ingester_pb2.Entity | None], stream: str | None = _DEFAULT_STREAM, + *, + metadata: Metadata | None = None, ) -> ingester_pb2.IngestResponse: - """Ingest entities in dry run mode.""" + """Ingest entities in dry run mode with optional request-level metadata.""" + request_metadata = convert_dict_to_struct(metadata) if metadata else None request = ingester_pb2.IngestRequest( stream=stream, id=str(uuid.uuid4()), @@ -407,6 +418,8 @@ def ingest( sdk_name=self.name, sdk_version=self.version, ) + if request_metadata is not None: + request.metadata.CopyFrom(request_metadata) output = MessageToJson(request, preserving_proto_field_name=True) if self._output_dir: @@ -551,8 +564,10 @@ def ingest( self, entities: Iterable[Entity | ingester_pb2.Entity | None], stream: str | None = _DEFAULT_STREAM, + *, + metadata: Metadata | None = None, ) -> ingester_pb2.IngestResponse: - """Export entities as OTLP logs.""" + """Export entities as OTLP logs with optional request-level metadata.""" stream = stream or _DEFAULT_STREAM log_records = [ self._entity_to_log_record(entity) @@ -562,7 +577,7 @@ def ingest( if not log_records: return ingester_pb2.IngestResponse() - request = self._build_export_request(log_records, stream) + request = self._build_export_request(log_records, stream, metadata) try: self._stub.Export( @@ -591,12 +606,21 @@ def _build_export_request( self, log_records: list[logs_pb2.LogRecord], stream: str | None, + metadata: Metadata | None = None, ) -> logs_service_pb2.ExportLogsServiceRequest: resource_logs = logs_pb2.ResourceLogs() resource_logs.resource.attributes.extend(self._resource_attributes()) resource_logs.resource.attributes.append( self._string_kv("diode.stream", stream) ) + + # Add request-level metadata as resource attributes with diode.metadata.* prefix + if metadata: + for key, value in metadata.items(): + resource_attr = self._metadata_value_to_kv(f"diode.metadata.{key}", value) + if resource_attr: + resource_logs.resource.attributes.append(resource_attr) + scope_logs = resource_logs.scope_logs.add() scope_logs.scope.CopyFrom( common_pb2.InstrumentationScope( @@ -644,6 +668,51 @@ def _string_kv(key: str, value: str) -> common_pb2.KeyValue: key=key, value=common_pb2.AnyValue(string_value=value) ) + @staticmethod + def _value_to_any_value(value: Any) -> common_pb2.AnyValue | None: # noqa: C901 + """Convert a Python value to OTLP AnyValue recursively.""" + if value is None: + return None + if isinstance(value, bool): + # Check bool before int since bool is a subclass of int in Python + return common_pb2.AnyValue(bool_value=value) + if isinstance(value, str): + return common_pb2.AnyValue(string_value=value) + if isinstance(value, int): + return common_pb2.AnyValue(int_value=value) + if isinstance(value, float): + return common_pb2.AnyValue(double_value=value) + if isinstance(value, list): + # Recursively convert list items + array_values = [] + for item in value: + any_value = DiodeOTLPClient._value_to_any_value(item) + if any_value: + array_values.append(any_value) + return common_pb2.AnyValue( + array_value=common_pb2.ArrayValue(values=array_values) + ) + if isinstance(value, dict): + # Recursively convert dict to KeyValueList + kvlist = common_pb2.KeyValueList() + for k, v in value.items(): + any_value = DiodeOTLPClient._value_to_any_value(v) + if any_value: + kvlist.values.append( + common_pb2.KeyValue(key=k, value=any_value) + ) + return common_pb2.AnyValue(kvlist_value=kvlist) + # Skip unsupported types + return None + + @staticmethod + def _metadata_value_to_kv(key: str, value: Any) -> common_pb2.KeyValue | None: + """Convert metadata key-value pair to OTLP KeyValue with appropriate type.""" + any_value = DiodeOTLPClient._value_to_any_value(value) + if any_value: + return common_pb2.KeyValue(key=key, value=any_value) + return None + class _DiodeAuthentication: def __init__( diff --git a/netboxlabs/diode/sdk/client.pyi b/netboxlabs/diode/sdk/client.pyi index 16deeaf..43022d0 100644 --- a/netboxlabs/diode/sdk/client.pyi +++ b/netboxlabs/diode/sdk/client.pyi @@ -1,13 +1,15 @@ from __future__ import annotations from collections.abc import Iterable -from typing import Protocol, runtime_checkable +from typing import Any, Protocol, runtime_checkable from netboxlabs.diode.sdk.diode.v1 import ingester_pb2 from netboxlabs.diode.sdk.ingester import Entity _DEFAULT_STREAM: str +Metadata = dict[str, Any] + @runtime_checkable class DiodeClientInterface(Protocol): """Interface implemented by diode clients.""" @@ -20,6 +22,8 @@ class DiodeClientInterface(Protocol): self, entities: Iterable[Entity | ingester_pb2.Entity | None], stream: str | None = _DEFAULT_STREAM, + *, + metadata: Metadata | None = None, ) -> ingester_pb2.IngestResponse: ... def __enter__(self) -> DiodeClientInterface: ... def __exit__(self, exc_type, exc_value, exc_traceback) -> None: ... diff --git a/tests/test_client.py b/tests/test_client.py index 09f288a..3e9d81e 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -1286,3 +1286,309 @@ def test_certificate_loading_efficiency(tmp_path): # Verify _load_certs was NOT called again (certificates reused) mock_load_certs.assert_not_called() + +# ==================== Request-Level Metadata Tests ==================== + + +def test_grpc_client_ingest_with_request_metadata(mock_diode_authentication): + """Test DiodeClient includes request-level metadata in IngestRequest.""" + with patch("netboxlabs.diode.sdk.client.grpc.insecure_channel") as mock_channel: + mock_stub = MagicMock() + mock_channel.return_value = MagicMock() + + client = DiodeClient( + target="grpc://localhost:8081", + app_name="test-app", + app_version="1.0.0", + client_id="test-id", + client_secret="test-secret", + ) + client._stub = mock_stub + mock_stub.Ingest.return_value = ingester_pb2.IngestResponse() + + # Ingest with request-level metadata + metadata = { + "batch_id": "batch-123", + "record_count": 150, + "validated": True, + } + + response = client.ingest( + entities=[Entity(site="TestSite")], + metadata=metadata, + ) + + # Verify Ingest was called + assert mock_stub.Ingest.called + call_args = mock_stub.Ingest.call_args[0] + request = call_args[0] + + # Verify metadata is in the request + assert request.HasField("metadata") + assert "batch_id" in request.metadata.fields + assert request.metadata.fields["batch_id"].string_value == "batch-123" + assert "record_count" in request.metadata.fields + assert request.metadata.fields["record_count"].number_value == 150 + assert "validated" in request.metadata.fields + assert request.metadata.fields["validated"].bool_value is True + + assert isinstance(response, ingester_pb2.IngestResponse) + + +def test_grpc_client_ingest_without_metadata(mock_diode_authentication): + """Test DiodeClient works without metadata (backward compatibility).""" + with patch("netboxlabs.diode.sdk.client.grpc.insecure_channel") as mock_channel: + mock_stub = MagicMock() + mock_channel.return_value = MagicMock() + + client = DiodeClient( + target="grpc://localhost:8081", + app_name="test-app", + app_version="1.0.0", + client_id="test-id", + client_secret="test-secret", + ) + client._stub = mock_stub + mock_stub.Ingest.return_value = ingester_pb2.IngestResponse() + + # Ingest without metadata + response = client.ingest(entities=[Entity(site="TestSite")]) + + # Verify Ingest was called + assert mock_stub.Ingest.called + call_args = mock_stub.Ingest.call_args[0] + request = call_args[0] + + # Verify metadata field exists but is empty + assert not request.HasField("metadata") or len(request.metadata.fields) == 0 + assert isinstance(response, ingester_pb2.IngestResponse) + + +def test_dryrun_client_includes_metadata_in_output(tmp_path): + """Test DiodeDryRunClient includes request-level metadata in JSON output.""" + output_dir = tmp_path / "dryrun_output" + output_dir.mkdir() + + client = DiodeDryRunClient( + app_name="test-producer", + output_dir=str(output_dir), + ) + + metadata = { + "import_id": "imp-456", + "source": "csv-import", + "priority": 5, + } + + client.ingest( + entities=[Entity(site="Site1"), Entity(device="Device1")], + metadata=metadata, + ) + + # Find the generated JSON file + json_files = list(output_dir.glob("*.json")) + assert len(json_files) == 1 + + with open(json_files[0]) as f: + data = json.load(f) + + # Verify metadata is in the output + assert "metadata" in data + assert data["metadata"]["import_id"] == "imp-456" + assert data["metadata"]["source"] == "csv-import" + assert data["metadata"]["priority"] == 5 + + # Verify entities are present + assert "entities" in data + assert len(data["entities"]) == 2 + + +def test_otlp_client_maps_metadata_to_resource_attributes(): + """Test DiodeOTLPClient maps request metadata to OTLP resource attributes.""" + with ( + patch("netboxlabs.diode.sdk.client.grpc.insecure_channel") as mock_insecure_channel, + patch("netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub") as mock_stub_cls, + ): + mock_insecure_channel.return_value = mock.Mock() + stub_instance = mock_stub_cls.return_value + + client = DiodeOTLPClient( + target="grpc://collector:4317", + app_name="test-app", + app_version="1.0.0", + ) + + metadata = { + "environment": "production", + "region": "us-west", + "instance_count": 10, + } + + client.ingest( + entities=[Entity(site="TestSite")], + metadata=metadata, + ) + + # Get the Export call arguments + stub_instance.Export.assert_called_once() + export_args, _ = stub_instance.Export.call_args + request = export_args[0] + resource_logs = request.resource_logs[0] + + # Extract resource attributes + attributes = { + kv.key: kv.value for kv in resource_logs.resource.attributes + } + + # Verify metadata is mapped with diode.metadata.* prefix + assert "diode.metadata.environment" in attributes + assert attributes["diode.metadata.environment"].string_value == "production" + assert "diode.metadata.region" in attributes + assert attributes["diode.metadata.region"].string_value == "us-west" + assert "diode.metadata.instance_count" in attributes + assert attributes["diode.metadata.instance_count"].int_value == 10 + + +def test_otlp_client_handles_nested_metadata(): + """Test DiodeOTLPClient handles nested metadata structures.""" + with ( + patch("netboxlabs.diode.sdk.client.grpc.insecure_channel") as mock_insecure_channel, + patch("netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub") as mock_stub_cls, + ): + mock_insecure_channel.return_value = mock.Mock() + stub_instance = mock_stub_cls.return_value + + client = DiodeOTLPClient( + target="grpc://collector:4317", + app_name="test-app", + app_version="1.0.0", + ) + + metadata = { + "tags": ["prod", "critical"], + "config": { + "retry_count": 3, + "timeout": 30.5, + "features": { + "validation": True, + "auto_sync": False, + } + } + } + + client.ingest( + entities=[Entity(site="TestSite")], + metadata=metadata, + ) + + # Get the Export call arguments + stub_instance.Export.assert_called_once() + export_args, _ = stub_instance.Export.call_args + request = export_args[0] + resource_logs = request.resource_logs[0] + + # Extract resource attributes + attributes = { + kv.key: kv.value for kv in resource_logs.resource.attributes + } + + # Verify nested metadata is present + assert "diode.metadata.tags" in attributes + assert attributes["diode.metadata.tags"].HasField("array_value") + tags_array = attributes["diode.metadata.tags"].array_value.values + assert len(tags_array) == 2 + assert tags_array[0].string_value == "prod" + assert tags_array[1].string_value == "critical" + + assert "diode.metadata.config" in attributes + assert attributes["diode.metadata.config"].HasField("kvlist_value") + config_kvlist = attributes["diode.metadata.config"].kvlist_value.values + config_dict = {kv.key: kv.value for kv in config_kvlist} + + assert "retry_count" in config_dict + assert config_dict["retry_count"].int_value == 3 + assert "timeout" in config_dict + assert config_dict["timeout"].double_value == 30.5 + assert "features" in config_dict + assert config_dict["features"].HasField("kvlist_value") + + +def test_otlp_client_metadata_type_conversion(): + """Test DiodeOTLPClient correctly converts different Python types.""" + with ( + patch("netboxlabs.diode.sdk.client.grpc.insecure_channel") as mock_insecure_channel, + patch("netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub") as mock_stub_cls, + ): + mock_insecure_channel.return_value = mock.Mock() + stub_instance = mock_stub_cls.return_value + + client = DiodeOTLPClient( + target="grpc://collector:4317", + app_name="test-app", + app_version="1.0.0", + ) + + metadata = { + "string_val": "test", + "int_val": 42, + "float_val": 3.14, + "bool_true": True, + "bool_false": False, + } + + client.ingest( + entities=[Entity(site="TestSite")], + metadata=metadata, + ) + + # Get the Export call arguments + stub_instance.Export.assert_called_once() + export_args, _ = stub_instance.Export.call_args + request = export_args[0] + resource_logs = request.resource_logs[0] + + # Extract resource attributes + attributes = { + kv.key: kv.value for kv in resource_logs.resource.attributes + } + + # Verify type conversions + assert attributes["diode.metadata.string_val"].string_value == "test" + assert attributes["diode.metadata.int_val"].int_value == 42 + assert attributes["diode.metadata.float_val"].double_value == 3.14 + assert attributes["diode.metadata.bool_true"].bool_value is True + assert attributes["diode.metadata.bool_false"].bool_value is False + + +def test_otlp_client_without_metadata(): + """Test DiodeOTLPClient works without metadata (backward compatibility).""" + with ( + patch("netboxlabs.diode.sdk.client.grpc.insecure_channel") as mock_insecure_channel, + patch("netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub") as mock_stub_cls, + ): + mock_insecure_channel.return_value = mock.Mock() + stub_instance = mock_stub_cls.return_value + + client = DiodeOTLPClient( + target="grpc://collector:4317", + app_name="test-app", + app_version="1.0.0", + ) + + # Ingest without metadata + client.ingest(entities=[Entity(site="TestSite")]) + + # Get the Export call arguments + stub_instance.Export.assert_called_once() + export_args, _ = stub_instance.Export.call_args + request = export_args[0] + resource_logs = request.resource_logs[0] + + # Extract resource attributes + attributes = { + kv.key for kv in resource_logs.resource.attributes + } + + # Verify no diode.metadata.* attributes are present + metadata_attrs = [k for k in attributes if k.startswith("diode.metadata.")] + assert len(metadata_attrs) == 0 diff --git a/tests/test_ingester.py b/tests/test_ingester.py index 56cf014..4339bfe 100644 --- a/tests/test_ingester.py +++ b/tests/test_ingester.py @@ -831,3 +831,161 @@ def test_entity_instantiation_with_vm_interface(): assert isinstance(entity, EntityPb) assert isinstance(entity.vm_interface, VMInterfacePb) assert entity.vm_interface.name == "VMInterface1" + +# ==================== Entity-Level Metadata Tests ==================== + + +def test_entity_with_metadata(): + """Test Entity with entity-level metadata.""" + metadata = { + "source": "import-script", + "import_id": "batch-123", + "priority": 5, + } + + entity = Entity( + site="TestSite", + metadata=metadata, + ) + + assert isinstance(entity, EntityPb) + assert entity.HasField("site") + assert entity.site.name == "TestSite" + + # Verify metadata is present + assert entity.HasField("metadata") + assert "source" in entity.metadata.fields + assert entity.metadata.fields["source"].string_value == "import-script" + assert "import_id" in entity.metadata.fields + assert entity.metadata.fields["import_id"].string_value == "batch-123" + assert "priority" in entity.metadata.fields + assert entity.metadata.fields["priority"].number_value == 5 + + +def test_entity_with_nested_metadata(): + """Test Entity with nested metadata structures.""" + metadata = { + "tags": ["production", "critical"], + "config": { + "auto_sync": True, + "retry_count": 3, + } + } + + entity = Entity( + device="TestDevice", + metadata=metadata, + ) + + assert isinstance(entity, EntityPb) + assert entity.HasField("device") + assert entity.device.name == "TestDevice" + + # Verify metadata structure + assert entity.HasField("metadata") + assert "tags" in entity.metadata.fields + assert entity.metadata.fields["tags"].HasField("list_value") + tags_list = entity.metadata.fields["tags"].list_value.values + assert len(tags_list) == 2 + assert tags_list[0].string_value == "production" + assert tags_list[1].string_value == "critical" + + assert "config" in entity.metadata.fields + assert entity.metadata.fields["config"].HasField("struct_value") + config_struct = entity.metadata.fields["config"].struct_value.fields + assert "auto_sync" in config_struct + assert config_struct["auto_sync"].bool_value is True + assert "retry_count" in config_struct + assert config_struct["retry_count"].number_value == 3 + + +def test_entity_without_metadata(): + """Test Entity without metadata (backward compatibility).""" + entity = Entity(site="TestSite") + + assert isinstance(entity, EntityPb) + assert entity.HasField("site") + assert entity.site.name == "TestSite" + + # Verify metadata field exists but is empty + assert not entity.HasField("metadata") or len(entity.metadata.fields) == 0 + + +def test_entity_metadata_type_conversion(): + """Test Entity metadata with different Python types.""" + metadata = { + "string_val": "test", + "int_val": 42, + "float_val": 3.14, + "bool_true": True, + "bool_false": False, + "null_val": None, + } + + entity = Entity( + site="TestSite", + metadata=metadata, + ) + + assert isinstance(entity, EntityPb) + assert entity.HasField("metadata") + + # Verify type conversions + assert entity.metadata.fields["string_val"].string_value == "test" + assert entity.metadata.fields["int_val"].number_value == 42 + assert entity.metadata.fields["float_val"].number_value == 3.14 + assert entity.metadata.fields["bool_true"].bool_value is True + assert entity.metadata.fields["bool_false"].bool_value is False + assert entity.metadata.fields["null_val"].HasField("null_value") + + +def test_device_with_metadata(): + """Test Device entity with metadata.""" + metadata = { + "rack_position": "A1", + "warranty_expires": "2025-12-31", + } + + entity = Entity( + device=Device( + name="switch-01", + device_type="Catalyst 9300", + site="DC1", + ), + metadata=metadata, + ) + + assert isinstance(entity, EntityPb) + assert entity.HasField("device") + assert entity.device.name == "switch-01" + assert entity.HasField("metadata") + assert entity.metadata.fields["rack_position"].string_value == "A1" + assert entity.metadata.fields["warranty_expires"].string_value == "2025-12-31" + + +def test_multiple_entities_with_different_metadata(): + """Test multiple entities each with their own metadata.""" + entities = [ + Entity( + site="Site1", + metadata={"region": "us-west", "priority": 1} + ), + Entity( + site="Site2", + metadata={"region": "us-east", "priority": 2} + ), + Entity( + device="Device1", + metadata={"rack": "A1", "power_source": "UPS-1"} + ), + ] + + # Verify each entity has its own metadata + assert entities[0].metadata.fields["region"].string_value == "us-west" + assert entities[0].metadata.fields["priority"].number_value == 1 + + assert entities[1].metadata.fields["region"].string_value == "us-east" + assert entities[1].metadata.fields["priority"].number_value == 2 + + assert entities[2].metadata.fields["rack"].string_value == "A1" + assert entities[2].metadata.fields["power_source"].string_value == "UPS-1" From be9217be21d3583ca19d1fe0e461db5709e98b5a Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Tue, 4 Nov 2025 17:54:00 +0100 Subject: [PATCH 3/9] feat: update README to include metadata usage examples and prerequisites Signed-off-by: Michal Fiedorowicz --- README.md | 225 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 225 insertions(+) diff --git a/README.md b/README.md index 134a6dc..01ec71e 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,9 @@ pipelines. More information about Diode can be found at [https://netboxlabs.com/blog/introducing-diode-streamlining-data-ingestion-in-netbox/](https://netboxlabs.com/blog/introducing-diode-streamlining-data-ingestion-in-netbox/). +## Prerequisites +- Python 3.10 or later installed + ## Installation ```bash @@ -79,6 +82,131 @@ if __name__ == "__main__": ``` +See all [examples](./examples) for reference. + +### Using Metadata + +Entities support attaching custom metadata as key-value pairs. Metadata can be used to store additional context, tracking information, or custom attributes that don't fit into the standard NetBox fields. + +```python +from netboxlabs.diode.sdk import DiodeClient, Entity +from netboxlabs.diode.sdk.ingester import Device, Site + +with DiodeClient( + target="grpc://localhost:8080/diode", + app_name="my-app", + app_version="1.0.0", +) as client: + # Create a device with metadata + # Note: Both the device and its nested site can have metadata + device_entity = Entity( + device=Device( + name="Device A", + device_type="Device Type A", + site=Site( + name="Site ABC", + # Nested entities can also have metadata + metadata={ + "site_region": "us-west", + "site_cost_center": "CC-001", + } + ), + role="Role ABC", + ), + # Add metadata to track additional information about the device + metadata={ + "source": "network_discovery", + "discovered_at": "2024-01-15T10:30:00Z", + "import_batch": "batch-123", + "priority": 1, + "verified": True, + } + ) + + # Create an IP address with metadata + from netboxlabs.diode.sdk.ingester import IPAddress + ip_entity = Entity( + ip_address=IPAddress( + address="192.168.1.10/24", + status="active", + ), + # Metadata can store various data types + metadata={ + "last_scan": "2024-01-15T12:00:00Z", + "scan_id": "scan-456", + "response_time": 23.5, + "reachable": True, + "owner_team": "network-ops", + } + ) + + # Create a site with metadata + site_entity = Entity( + site=Site( + name="Data Center 1", + status="active", + ), + metadata={ + "region": "us-west", + "cost_center": "CC-001", + "capacity": 500, + "is_primary": True, + "contact_email": "dc1-ops@example.com", + } + ) + + entities = [device_entity, ip_entity, site_entity] + response = client.ingest(entities=entities) + if response.errors: + print(f"Errors: {response.errors}") +``` + +#### Adding request-level metadata + +In addition to entity-level metadata, you can attach metadata to the entire ingestion request using the `metadata` keyword argument. This is useful for tracking information about the ingestion batch itself, such as the data source, batch ID, or processing context. + +```python +from netboxlabs.diode.sdk import DiodeClient, Entity +from netboxlabs.diode.sdk.ingester import Device, Site + +with DiodeClient( + target="grpc://localhost:8080/diode", + app_name="my-app", + app_version="1.0.0", +) as client: + # Create entities + entities = [ + Entity(device=Device( + name="Device A", + site=Site(name="Site ABC"), + )), + Entity(device=Device( + name="Device B", + site=Site(name="Site XYZ"), + )), + ] + + # Add request-level metadata to track the ingestion batch + response = client.ingest( + entities=entities, + metadata={ + "batch_id": "import-2024-01-15", + "source_system": "network_scanner", + "import_type": "automated", + "record_count": len(entities), + "validated": True, + } + ) + if response.errors: + print(f"Errors: {response.errors}") +``` + +Request-level metadata is included in the `IngestRequest` and can be useful for: +- Tracking data sources and ingestion pipelines +- Correlating entities within a batch +- Debugging and auditing data imports +- Adding contextual information for downstream processing + ### TLS verification and certificates TLS verification is controlled by the target URL scheme: @@ -109,6 +237,18 @@ export DIODE_CERT_FILE=/path/to/cert.pem export DIODE_SKIP_TLS_VERIFY=true ``` +#### For legacy certificates (CN-only, no SANs) + +```python +client = DiodeClient( + target="grpcs://example.com", + app_name="my-app", + app_version="1.0.0", + cert_file="/path/to/cert.pem", + skip_tls_verify=True, +) +``` + ### Dry run mode `DiodeDryRunClient` generates ingestion requests without contacting a Diode server. Requests are printed to stdout by default, or written to JSON files when `output_dir` (or the `DIODE_DRY_RUN_OUTPUT_DIR` environment variable) is specified. The `app_name` parameter serves as the filename prefix; if not provided, `dryrun` is used as the default prefix. The file name is suffixed with a nanosecond-precision timestamp, resulting in the format `_.json`. @@ -149,6 +289,58 @@ diode-replay-dryrun \ my_app_92722156890707.json ``` +#### Adding request-level metadata to dry run output + +You can include request-level metadata in the dry run output using the `metadata` keyword argument. This metadata will be included in the JSON output file as part of the `IngestRequest`: + +```python +from netboxlabs.diode.sdk import DiodeDryRunClient, Entity +from netboxlabs.diode.sdk.ingester import Device + +with DiodeDryRunClient(app_name="my_app", output_dir="/tmp") as client: + # Add request-level metadata + client.ingest( + [Entity(device=Device(name="Device A"))], + metadata={ + "batch_id": "import-2024-01", + "source": "csv_import", + "validated": True, + "record_count": 150, + } + ) +``` + +The resulting JSON file will include the metadata in the `IngestRequest`, making it visible when reviewing the dry run output. + +### CLI to replay dry-run files + +A small helper command is included to ingest JSON files created by the +`DiodeDryRunClient` and send them to a running Diode service. + +Install the helper using `pip`: + +```bash +pip install netboxlabs-diode-sdk +``` + +Run it by providing one or more JSON files and connection details. The command supports replaying multiple dry-run files in a single request: + +```bash +diode-replay-dryrun \ + --file /tmp/my_app_92722156890707.json \ + --file /tmp/other.json \ + --target grpc://localhost:8080/diode \ + --app-name my-test-app \ + --app-version 0.0.1 \ + --client-id YOUR_CLIENT_ID \ + --client-secret YOUR_CLIENT_SECRET +``` + +The `--file`, `--target`, `--app-name`, and `--app-version` arguments are required. You may +repeat `--file` to specify multiple files. OAuth2 +credentials can be supplied using `--client-id` and `--client-secret` or the +`DIODE_CLIENT_ID` and `DIODE_CLIENT_SECRET` environment variables. + ### OTLP client `DiodeOTLPClient` converts ingestion entities into OpenTelemetry log records and exports them to an OTLP endpoint (gRPC). This is useful when a collector ingests log data and forwards it to Diode. @@ -166,6 +358,39 @@ with DiodeOTLPClient( Each entity is serialised to JSON and sent as a log record with producer metadata so downstream collectors can enrich and forward the payload. The client raises `OTLPClientError` when the export fails. TLS behaviour honours the existing `DIODE_SKIP_TLS_VERIFY` and `DIODE_CERT_FILE` environment variables. +#### Adding request-level metadata as OTLP resource attributes + +You can add request-level metadata to OTLP exports using the `metadata` keyword argument. This metadata is automatically mapped to OTLP resource attributes with a `diode.metadata.` prefix: + +```python +from netboxlabs.diode.sdk import DiodeOTLPClient, Entity +from netboxlabs.diode.sdk.ingester import Site + +with DiodeOTLPClient( + target="grpc://localhost:4317", + app_name="otlp-producer", + app_version="1.0.0", +) as client: + # Add request-level metadata + client.ingest( + [Entity(site=Site(name="Site 1"))], + metadata={ + "environment": "production", + "deployment": "us-west-2", + "version": "1.2.3", + "priority": 5, + } + ) +``` + +The resulting OTLP log records will include resource attributes like: +- `diode.metadata.environment="production"` +- `diode.metadata.deployment="us-west-2"` +- `diode.metadata.version="1.2.3"` +- `diode.metadata.priority=5` (as integer) + +These attributes are added alongside standard OTLP resource attributes (`service.name`, `service.version`, `diode.stream`, etc.), allowing downstream collectors and observability platforms to filter, route, and enrich the data based on this metadata. + ## Supported entities (object types) * ASN From 6421af745c724157bfc123f494171e0a825710ed Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Tue, 4 Nov 2025 19:58:48 +0100 Subject: [PATCH 4/9] fix: ingester wrapper metadata Signed-off-by: Michal Fiedorowicz --- netboxlabs/diode/sdk/ingester.py | 945 +------------------------------ 1 file changed, 7 insertions(+), 938 deletions(-) diff --git a/netboxlabs/diode/sdk/ingester.py b/netboxlabs/diode/sdk/ingester.py index 4b35fbf..f694117 100644 --- a/netboxlabs/diode/sdk/ingester.py +++ b/netboxlabs/diode/sdk/ingester.py @@ -2,7 +2,7 @@ # # Generated code. DO NOT EDIT. -# Timestamp: 2025-11-04 12:25:51Z +# Timestamp: 2025-11-04 18:56:03Z # # ruff: noqa: C901 @@ -346,201 +346,17 @@ def __new__( module_type_profile = convert_to_protobuf(module_type_profile, pb.ModuleTypeProfile) custom_link = convert_to_protobuf(custom_link, pb.CustomLink) metadata = convert_dict_to_struct(metadata) + # Handle metadata for Entity + if metadata is not None: + _metadata = convert_dict_to_struct(metadata) + else: + _metadata = None if timestamp is None: ts = _timestamp_pb2.Timestamp() ts.GetCurrentTime() timestamp = ts - # Extract metadata from the entity if present - _entity_metadata = None - if asn is not None and hasattr(asn, '_metadata'): - _entity_metadata = asn._metadata - if asn_range is not None and hasattr(asn_range, '_metadata'): - _entity_metadata = asn_range._metadata - if aggregate is not None and hasattr(aggregate, '_metadata'): - _entity_metadata = aggregate._metadata - if cable is not None and hasattr(cable, '_metadata'): - _entity_metadata = cable._metadata - if cable_path is not None and hasattr(cable_path, '_metadata'): - _entity_metadata = cable_path._metadata - if cable_termination is not None and hasattr(cable_termination, '_metadata'): - _entity_metadata = cable_termination._metadata - if circuit is not None and hasattr(circuit, '_metadata'): - _entity_metadata = circuit._metadata - if circuit_group is not None and hasattr(circuit_group, '_metadata'): - _entity_metadata = circuit_group._metadata - if circuit_group_assignment is not None and hasattr(circuit_group_assignment, '_metadata'): - _entity_metadata = circuit_group_assignment._metadata - if circuit_termination is not None and hasattr(circuit_termination, '_metadata'): - _entity_metadata = circuit_termination._metadata - if circuit_type is not None and hasattr(circuit_type, '_metadata'): - _entity_metadata = circuit_type._metadata - if cluster is not None and hasattr(cluster, '_metadata'): - _entity_metadata = cluster._metadata - if cluster_group is not None and hasattr(cluster_group, '_metadata'): - _entity_metadata = cluster_group._metadata - if cluster_type is not None and hasattr(cluster_type, '_metadata'): - _entity_metadata = cluster_type._metadata - if console_port is not None and hasattr(console_port, '_metadata'): - _entity_metadata = console_port._metadata - if console_server_port is not None and hasattr(console_server_port, '_metadata'): - _entity_metadata = console_server_port._metadata - if contact is not None and hasattr(contact, '_metadata'): - _entity_metadata = contact._metadata - if contact_assignment is not None and hasattr(contact_assignment, '_metadata'): - _entity_metadata = contact_assignment._metadata - if contact_group is not None and hasattr(contact_group, '_metadata'): - _entity_metadata = contact_group._metadata - if contact_role is not None and hasattr(contact_role, '_metadata'): - _entity_metadata = contact_role._metadata - if device is not None and hasattr(device, '_metadata'): - _entity_metadata = device._metadata - if device_bay is not None and hasattr(device_bay, '_metadata'): - _entity_metadata = device_bay._metadata - if device_role is not None and hasattr(device_role, '_metadata'): - _entity_metadata = device_role._metadata - if device_type is not None and hasattr(device_type, '_metadata'): - _entity_metadata = device_type._metadata - if fhrp_group is not None and hasattr(fhrp_group, '_metadata'): - _entity_metadata = fhrp_group._metadata - if fhrp_group_assignment is not None and hasattr(fhrp_group_assignment, '_metadata'): - _entity_metadata = fhrp_group_assignment._metadata - if front_port is not None and hasattr(front_port, '_metadata'): - _entity_metadata = front_port._metadata - if ike_policy is not None and hasattr(ike_policy, '_metadata'): - _entity_metadata = ike_policy._metadata - if ike_proposal is not None and hasattr(ike_proposal, '_metadata'): - _entity_metadata = ike_proposal._metadata - if ip_address is not None and hasattr(ip_address, '_metadata'): - _entity_metadata = ip_address._metadata - if ip_range is not None and hasattr(ip_range, '_metadata'): - _entity_metadata = ip_range._metadata - if ip_sec_policy is not None and hasattr(ip_sec_policy, '_metadata'): - _entity_metadata = ip_sec_policy._metadata - if ip_sec_profile is not None and hasattr(ip_sec_profile, '_metadata'): - _entity_metadata = ip_sec_profile._metadata - if ip_sec_proposal is not None and hasattr(ip_sec_proposal, '_metadata'): - _entity_metadata = ip_sec_proposal._metadata - if interface is not None and hasattr(interface, '_metadata'): - _entity_metadata = interface._metadata - if inventory_item is not None and hasattr(inventory_item, '_metadata'): - _entity_metadata = inventory_item._metadata - if inventory_item_role is not None and hasattr(inventory_item_role, '_metadata'): - _entity_metadata = inventory_item_role._metadata - if l2vpn is not None and hasattr(l2vpn, '_metadata'): - _entity_metadata = l2vpn._metadata - if l2vpn_termination is not None and hasattr(l2vpn_termination, '_metadata'): - _entity_metadata = l2vpn_termination._metadata - if location is not None and hasattr(location, '_metadata'): - _entity_metadata = location._metadata - if mac_address is not None and hasattr(mac_address, '_metadata'): - _entity_metadata = mac_address._metadata - if manufacturer is not None and hasattr(manufacturer, '_metadata'): - _entity_metadata = manufacturer._metadata - if module is not None and hasattr(module, '_metadata'): - _entity_metadata = module._metadata - if module_bay is not None and hasattr(module_bay, '_metadata'): - _entity_metadata = module_bay._metadata - if module_type is not None and hasattr(module_type, '_metadata'): - _entity_metadata = module_type._metadata - if platform is not None and hasattr(platform, '_metadata'): - _entity_metadata = platform._metadata - if power_feed is not None and hasattr(power_feed, '_metadata'): - _entity_metadata = power_feed._metadata - if power_outlet is not None and hasattr(power_outlet, '_metadata'): - _entity_metadata = power_outlet._metadata - if power_panel is not None and hasattr(power_panel, '_metadata'): - _entity_metadata = power_panel._metadata - if power_port is not None and hasattr(power_port, '_metadata'): - _entity_metadata = power_port._metadata - if prefix is not None and hasattr(prefix, '_metadata'): - _entity_metadata = prefix._metadata - if provider is not None and hasattr(provider, '_metadata'): - _entity_metadata = provider._metadata - if provider_account is not None and hasattr(provider_account, '_metadata'): - _entity_metadata = provider_account._metadata - if provider_network is not None and hasattr(provider_network, '_metadata'): - _entity_metadata = provider_network._metadata - if rir is not None and hasattr(rir, '_metadata'): - _entity_metadata = rir._metadata - if rack is not None and hasattr(rack, '_metadata'): - _entity_metadata = rack._metadata - if rack_reservation is not None and hasattr(rack_reservation, '_metadata'): - _entity_metadata = rack_reservation._metadata - if rack_role is not None and hasattr(rack_role, '_metadata'): - _entity_metadata = rack_role._metadata - if rack_type is not None and hasattr(rack_type, '_metadata'): - _entity_metadata = rack_type._metadata - if rear_port is not None and hasattr(rear_port, '_metadata'): - _entity_metadata = rear_port._metadata - if region is not None and hasattr(region, '_metadata'): - _entity_metadata = region._metadata - if role is not None and hasattr(role, '_metadata'): - _entity_metadata = role._metadata - if route_target is not None and hasattr(route_target, '_metadata'): - _entity_metadata = route_target._metadata - if service is not None and hasattr(service, '_metadata'): - _entity_metadata = service._metadata - if site is not None and hasattr(site, '_metadata'): - _entity_metadata = site._metadata - if site_group is not None and hasattr(site_group, '_metadata'): - _entity_metadata = site_group._metadata - if tag is not None and hasattr(tag, '_metadata'): - _entity_metadata = tag._metadata - if tenant is not None and hasattr(tenant, '_metadata'): - _entity_metadata = tenant._metadata - if tenant_group is not None and hasattr(tenant_group, '_metadata'): - _entity_metadata = tenant_group._metadata - if tunnel is not None and hasattr(tunnel, '_metadata'): - _entity_metadata = tunnel._metadata - if tunnel_group is not None and hasattr(tunnel_group, '_metadata'): - _entity_metadata = tunnel_group._metadata - if tunnel_termination is not None and hasattr(tunnel_termination, '_metadata'): - _entity_metadata = tunnel_termination._metadata - if vlan is not None and hasattr(vlan, '_metadata'): - _entity_metadata = vlan._metadata - if vlan_group is not None and hasattr(vlan_group, '_metadata'): - _entity_metadata = vlan_group._metadata - if vlan_translation_policy is not None and hasattr(vlan_translation_policy, '_metadata'): - _entity_metadata = vlan_translation_policy._metadata - if vlan_translation_rule is not None and hasattr(vlan_translation_rule, '_metadata'): - _entity_metadata = vlan_translation_rule._metadata - if vm_interface is not None and hasattr(vm_interface, '_metadata'): - _entity_metadata = vm_interface._metadata - if vrf is not None and hasattr(vrf, '_metadata'): - _entity_metadata = vrf._metadata - if virtual_chassis is not None and hasattr(virtual_chassis, '_metadata'): - _entity_metadata = virtual_chassis._metadata - if virtual_circuit is not None and hasattr(virtual_circuit, '_metadata'): - _entity_metadata = virtual_circuit._metadata - if virtual_circuit_termination is not None and hasattr(virtual_circuit_termination, '_metadata'): - _entity_metadata = virtual_circuit_termination._metadata - if virtual_circuit_type is not None and hasattr(virtual_circuit_type, '_metadata'): - _entity_metadata = virtual_circuit_type._metadata - if virtual_device_context is not None and hasattr(virtual_device_context, '_metadata'): - _entity_metadata = virtual_device_context._metadata - if virtual_disk is not None and hasattr(virtual_disk, '_metadata'): - _entity_metadata = virtual_disk._metadata - if virtual_machine is not None and hasattr(virtual_machine, '_metadata'): - _entity_metadata = virtual_machine._metadata - if wireless_lan is not None and hasattr(wireless_lan, '_metadata'): - _entity_metadata = wireless_lan._metadata - if wireless_lan_group is not None and hasattr(wireless_lan_group, '_metadata'): - _entity_metadata = wireless_lan_group._metadata - if wireless_link is not None and hasattr(wireless_link, '_metadata'): - _entity_metadata = wireless_link._metadata - if custom_field is not None and hasattr(custom_field, '_metadata'): - _entity_metadata = custom_field._metadata - if custom_field_choice_set is not None and hasattr(custom_field_choice_set, '_metadata'): - _entity_metadata = custom_field_choice_set._metadata - if journal_entry is not None and hasattr(journal_entry, '_metadata'): - _entity_metadata = journal_entry._metadata - if module_type_profile is not None and hasattr(module_type_profile, '_metadata'): - _entity_metadata = module_type_profile._metadata - if custom_link is not None and hasattr(custom_link, '_metadata'): - _entity_metadata = custom_link._metadata - if _entity_metadata is not None: - metadata = _entity_metadata + # Use the metadata parameter if provided result = pb.Entity( timestamp=timestamp, asn=asn, @@ -653,18 +469,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, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.ASN( asn=asn, rir=rir, @@ -674,8 +484,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -693,18 +501,12 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.ASNRange( name=name, slug=slug, @@ -716,8 +518,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -734,18 +534,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, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Aggregate( prefix=prefix, rir=rir, @@ -756,8 +550,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -779,7 +571,6 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.Cable: """Create a new Cable.""" a_terminations = convert_to_protobuf_list(a_terminations, pb.GenericObject) @@ -787,11 +578,6 @@ 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Cable( type=type, a_terminations=a_terminations, @@ -807,8 +593,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -820,21 +604,13 @@ def __new__( is_active: bool | None = None, is_complete: bool | None = None, is_split: bool | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.CablePath: """Create a new CablePath.""" - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.CablePath( is_active=is_active, is_complete=is_complete, is_split=is_split, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -854,7 +630,6 @@ def __new__( 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, - metadata: dict[str, Any] | None = None, ) -> pb.CableTermination: """Create a new CableTermination.""" cable = convert_to_protobuf(cable, pb.Cable) @@ -867,11 +642,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.CableTermination( cable=cable, cable_end=cable_end, @@ -885,8 +655,6 @@ def __new__( termination_power_port=termination_power_port, termination_rear_port=termination_rear_port, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -911,7 +679,6 @@ def __new__( 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, - metadata: dict[str, Any] | None = None, ) -> pb.Circuit: """Create a new Circuit.""" provider = convert_to_protobuf(provider, pb.Provider) @@ -921,11 +688,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Circuit( cid=cid, provider=provider, @@ -944,8 +706,6 @@ def __new__( assignments=assignments, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -960,17 +720,11 @@ 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, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.CircuitGroup( name=name, slug=slug, @@ -979,8 +733,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -994,18 +746,12 @@ def __new__( member_virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, priority: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.CircuitGroupAssignment( group=group, member_circuit=member_circuit, @@ -1013,8 +759,6 @@ def __new__( priority=priority, tags=tags, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -1038,7 +782,6 @@ def __new__( mark_connected: bool | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.CircuitTermination: """Create a new CircuitTermination.""" circuit = convert_to_protobuf(circuit, pb.Circuit) @@ -1049,11 +792,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.CircuitTermination( circuit=circuit, term_side=term_side, @@ -1071,8 +809,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -1087,16 +823,10 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.CircuitType( name=name, slug=slug, @@ -1105,8 +835,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -1128,7 +856,6 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.Cluster: """Create a new Cluster.""" type = convert_to_protobuf(type, pb.ClusterType) @@ -1140,11 +867,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Cluster( name=name, type=type, @@ -1160,8 +882,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -1175,16 +895,10 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.ClusterGroup( name=name, slug=slug, @@ -1192,8 +906,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -1207,16 +919,10 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.ClusterType( name=name, slug=slug, @@ -1224,8 +930,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -1244,18 +948,12 @@ def __new__( mark_connected: bool | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.ConsolePort( device=device, module=module, @@ -1268,8 +966,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -1288,18 +984,12 @@ def __new__( mark_connected: bool | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.ConsoleServerPort( device=device, module=module, @@ -1312,8 +1002,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -1334,18 +1022,12 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, groups: list[str | ContactGroup | pb.ContactGroup] | None = None, - metadata: dict[str, Any] | 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) groups = convert_to_protobuf_list(groups, pb.ContactGroup) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Contact( group=group, name=name, @@ -1360,8 +1042,6 @@ def __new__( custom_fields=custom_fields, groups=groups, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -1468,7 +1148,6 @@ def __new__( priority: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.ContactAssignment: """Create a new ContactAssignment.""" object_asn = convert_to_protobuf(object_asn, pb.ASN) @@ -1568,11 +1247,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.ContactAssignment( object_asn=object_asn, object_asn_range=object_asn_range, @@ -1673,8 +1347,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -1690,17 +1362,11 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, comments: str | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.ContactGroup( name=name, slug=slug, @@ -1710,8 +1376,6 @@ def __new__( custom_fields=custom_fields, comments=comments, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -1725,16 +1389,10 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.ContactRole( name=name, slug=slug, @@ -1742,8 +1400,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -1845,7 +1501,6 @@ def __new__( journal_entry: str | JournalEntry | pb.JournalEntry | None = None, module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, custom_link: str | CustomLink | pb.CustomLink | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.CustomFieldObjectReference: """Create a new CustomFieldObjectReference.""" asn = convert_to_protobuf(asn, pb.ASN) @@ -2057,7 +1712,6 @@ def __new__( json: str | None = None, selection: str | None = None, object: str | CustomFieldObjectReference | pb.CustomFieldObjectReference | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.CustomFieldValue: """Create a new CustomFieldValue.""" multiple_objects = convert_to_protobuf_list(multiple_objects, pb.CustomFieldObjectReference) @@ -2114,7 +1768,6 @@ def __new__( custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, # shortcuts manufacturer: str | Manufacturer | pb.Manufacturer = None, - metadata: dict[str, Any] | None = None, ) -> pb.Device: """Create a new Device.""" device_type = convert_to_protobuf(device_type, pb.DeviceType) @@ -2141,11 +1794,6 @@ def __new__( platform.manufacturer.CopyFrom(manufacturer) if device_type is not None and not device_type.HasField('manufacturer'): device_type.manufacturer.CopyFrom(manufacturer) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Device( name=name, device_type=device_type, @@ -2175,8 +1823,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -2192,18 +1838,12 @@ def __new__( 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, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.DeviceBay( device=device, name=name, @@ -2213,8 +1853,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -2232,17 +1870,11 @@ def __new__( custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, parent: str | DeviceRole | pb.DeviceRole | None = None, comments: str | None = None, - metadata: dict[str, Any] | 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) parent = convert_to_protobuf(parent, pb.DeviceRole) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.DeviceRole( name=name, slug=slug, @@ -2254,8 +1886,6 @@ def __new__( parent=parent, comments=comments, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -2280,18 +1910,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, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.DeviceType( manufacturer=manufacturer, default_platform=default_platform, @@ -2310,8 +1934,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -2329,16 +1951,10 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.FHRPGroup( name=name, protocol=protocol, @@ -2350,8 +1966,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -2455,7 +2069,6 @@ def __new__( interface_module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, interface_custom_link: str | CustomLink | pb.CustomLink | None = None, priority: int | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.FHRPGroupAssignment: """Create a new FHRPGroupAssignment.""" group = convert_to_protobuf(group, pb.FHRPGroup) @@ -2552,11 +2165,6 @@ def __new__( interface_journal_entry = convert_to_protobuf(interface_journal_entry, pb.JournalEntry) interface_module_type_profile = convert_to_protobuf(interface_module_type_profile, pb.ModuleTypeProfile) interface_custom_link = convert_to_protobuf(interface_custom_link, pb.CustomLink) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.FHRPGroupAssignment( group=group, interface_asn=interface_asn, @@ -2654,8 +2262,6 @@ def __new__( interface_custom_link=interface_custom_link, priority=priority, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -2676,7 +2282,6 @@ def __new__( mark_connected: bool | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.FrontPort: """Create a new FrontPort.""" device = convert_to_protobuf(device, pb.Device) @@ -2684,11 +2289,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.FrontPort( device=device, module=module, @@ -2703,8 +2303,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -2806,7 +2404,6 @@ def __new__( object_journal_entry: str | JournalEntry | pb.JournalEntry | None = None, object_module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, object_custom_link: str | CustomLink | pb.CustomLink | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.GenericObject: """Create a new GenericObject.""" object_asn = convert_to_protobuf(object_asn, pb.ASN) @@ -3014,17 +2611,11 @@ def __new__( 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, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.IKEPolicy( name=name, description=description, @@ -3036,8 +2627,6 @@ def __new__( custom_fields=custom_fields, proposals=proposals, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -3056,16 +2645,10 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.IKEProposal( name=name, description=description, @@ -3078,8 +2661,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -3109,7 +2690,6 @@ def __new__( site: str | Site | pb.Site = None, device_role: str | DeviceRole | pb.DeviceRole = None, device: str | Device | pb.Device = None, - metadata: dict[str, Any] | None = None, ) -> pb.IPAddress: """Create a new IPAddress.""" vrf = convert_to_protobuf(vrf, pb.VRF) @@ -3152,11 +2732,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.IPAddress( address=address, vrf=vrf, @@ -3173,8 +2748,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -3195,7 +2768,6 @@ def __new__( mark_utilized: bool | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, mark_populated: bool | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.IPRange: """Create a new IPRange.""" vrf = convert_to_protobuf(vrf, pb.VRF) @@ -3203,11 +2775,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.IPRange( start_address=start_address, end_address=end_address, @@ -3222,8 +2789,6 @@ def __new__( custom_fields=custom_fields, mark_populated=mark_populated, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -3239,17 +2804,11 @@ def __new__( 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, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.IPSecPolicy( name=name, description=description, @@ -3259,8 +2818,6 @@ def __new__( custom_fields=custom_fields, proposals=proposals, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -3277,18 +2834,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, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.IPSecProfile( name=name, description=description, @@ -3299,8 +2850,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -3318,16 +2867,10 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.IPSecProposal( name=name, description=description, @@ -3339,8 +2882,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -3389,7 +2930,6 @@ def __new__( platform: str | Platform | pb.Platform = None, site: str | Site | pb.Site = None, role: str | DeviceRole | pb.DeviceRole = None, - metadata: dict[str, Any] | None = None, ) -> pb.Interface: """Create a new Interface.""" device = convert_to_protobuf(device, pb.Device) @@ -3433,11 +2973,6 @@ def __new__( if role is not None: if device is not None and not device.HasField('role'): device.role.CopyFrom(role) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Interface( device=device, module=module, @@ -3474,8 +3009,6 @@ def __new__( tagged_vlans=tagged_vlans, wireless_lans=wireless_lans, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -3505,7 +3038,6 @@ def __new__( 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, - metadata: dict[str, Any] | None = None, ) -> pb.InventoryItem: """Create a new InventoryItem.""" device = convert_to_protobuf(device, pb.Device) @@ -3521,11 +3053,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.InventoryItem( device=device, parent=parent, @@ -3549,8 +3076,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -3565,16 +3090,10 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.InventoryItemRole( name=name, slug=slug, @@ -3583,8 +3102,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -3605,7 +3122,6 @@ def __new__( import_targets: list[str | RouteTarget | pb.RouteTarget] | None = None, export_targets: list[str | RouteTarget | pb.RouteTarget] | None = None, status: str | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.L2VPN: """Create a new L2VPN.""" tenant = convert_to_protobuf(tenant, pb.Tenant) @@ -3613,11 +3129,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.L2VPN( identifier=identifier, name=name, @@ -3632,8 +3143,6 @@ def __new__( export_targets=export_targets, status=status, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -3738,7 +3247,6 @@ def __new__( assigned_object_custom_link: str | CustomLink | pb.CustomLink | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.L2VPNTermination: """Create a new L2VPNTermination.""" l2vpn = convert_to_protobuf(l2vpn, pb.L2VPN) @@ -3837,11 +3345,6 @@ def __new__( assigned_object_custom_link = convert_to_protobuf(assigned_object_custom_link, pb.CustomLink) tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.L2VPNTermination( l2vpn=l2vpn, assigned_object_interface=assigned_object_interface, @@ -3940,8 +3443,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -3961,7 +3462,6 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, comments: str | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.Location: """Create a new Location.""" site = convert_to_protobuf(site, pb.Site) @@ -3969,11 +3469,6 @@ 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Location( name=name, slug=slug, @@ -3987,8 +3482,6 @@ def __new__( custom_fields=custom_fields, comments=comments, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4004,18 +3497,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, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.MACAddress( mac_address=mac_address, assigned_object_interface=assigned_object_interface, @@ -4025,8 +3512,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4040,16 +3525,10 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Manufacturer( name=name, slug=slug, @@ -4057,8 +3536,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4077,7 +3554,6 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.Module: """Create a new Module.""" device = convert_to_protobuf(device, pb.Device) @@ -4085,11 +3561,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Module( device=device, module_bay=module_bay, @@ -4102,8 +3573,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4121,7 +3590,6 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.ModuleBay: """Create a new ModuleBay.""" device = convert_to_protobuf(device, pb.Device) @@ -4129,11 +3597,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.ModuleBay( device=device, module=module, @@ -4145,8 +3608,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4167,18 +3628,12 @@ def __new__( custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, attributes: str | None = None, - metadata: dict[str, Any] | 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) profile = convert_to_protobuf(profile, pb.ModuleTypeProfile) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.ModuleType( manufacturer=manufacturer, model=model, @@ -4193,8 +3648,6 @@ def __new__( profile=profile, attributes=attributes, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4211,18 +3664,12 @@ def __new__( custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, parent: str | Platform | pb.Platform | None = None, comments: str | None = None, - metadata: dict[str, Any] | 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) parent = convert_to_protobuf(parent, pb.Platform) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Platform( name=name, slug=slug, @@ -4233,8 +3680,6 @@ def __new__( parent=parent, comments=comments, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4259,7 +3704,6 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.PowerFeed: """Create a new PowerFeed.""" power_panel = convert_to_protobuf(power_panel, pb.PowerPanel) @@ -4267,11 +3711,6 @@ 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.PowerFeed( power_panel=power_panel, rack=rack, @@ -4290,8 +3729,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4313,7 +3750,6 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, status: str | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.PowerOutlet: """Create a new PowerOutlet.""" device = convert_to_protobuf(device, pb.Device) @@ -4321,11 +3757,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.PowerOutlet( device=device, module=module, @@ -4341,8 +3772,6 @@ def __new__( custom_fields=custom_fields, status=status, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4358,18 +3787,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, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.PowerPanel( site=site, location=location, @@ -4379,8 +3802,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4400,18 +3821,12 @@ def __new__( mark_connected: bool | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.PowerPort( device=device, module=module, @@ -4425,8 +3840,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4451,7 +3864,6 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.Prefix: """Create a new Prefix.""" vrf = convert_to_protobuf(vrf, pb.VRF) @@ -4464,11 +3876,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Prefix( prefix=prefix, vrf=vrf, @@ -4487,8 +3894,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4505,18 +3910,12 @@ def __new__( 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, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Provider( name=name, slug=slug, @@ -4527,8 +3926,6 @@ def __new__( accounts=accounts, asns=asns, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4544,17 +3941,11 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.ProviderAccount( provider=provider, name=name, @@ -4564,8 +3955,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4581,17 +3970,11 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.ProviderNetwork( provider=provider, name=name, @@ -4601,8 +3984,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4617,16 +3998,10 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.RIR( name=name, slug=slug, @@ -4635,8 +4010,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4673,7 +4046,6 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, outer_height: int | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.Rack: """Create a new Rack.""" site = convert_to_protobuf(site, pb.Site) @@ -4683,11 +4055,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Rack( name=name, facility_id=facility_id, @@ -4718,8 +4085,6 @@ def __new__( custom_fields=custom_fields, outer_height=outer_height, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4736,18 +4101,12 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, status: str | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.RackReservation( rack=rack, units=units, @@ -4758,8 +4117,6 @@ def __new__( custom_fields=custom_fields, status=status, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4774,16 +4131,10 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.RackRole( name=name, slug=slug, @@ -4792,8 +4143,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4822,17 +4171,11 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, outer_height: int | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.RackType( manufacturer=manufacturer, model=model, @@ -4855,8 +4198,6 @@ def __new__( custom_fields=custom_fields, outer_height=outer_height, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4876,18 +4217,12 @@ def __new__( mark_connected: bool | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.RearPort( device=device, module=module, @@ -4901,8 +4236,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4918,17 +4251,11 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, comments: str | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Region( name=name, slug=slug, @@ -4938,8 +4265,6 @@ def __new__( custom_fields=custom_fields, comments=comments, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4954,16 +4279,10 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Role( name=name, slug=slug, @@ -4972,8 +4291,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -4988,17 +4305,11 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.RouteTarget( name=name, tenant=tenant, @@ -5007,8 +4318,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5030,7 +4339,6 @@ def __new__( parent_object_device: str | Device | pb.Device | None = None, parent_object_fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, parent_object_virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.Service: """Create a new Service.""" device = convert_to_protobuf(device, pb.Device) @@ -5041,11 +4349,6 @@ def __new__( parent_object_device = convert_to_protobuf(parent_object_device, pb.Device) parent_object_fhrp_group = convert_to_protobuf(parent_object_fhrp_group, pb.FHRPGroup) parent_object_virtual_machine = convert_to_protobuf(parent_object_virtual_machine, pb.VirtualMachine) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Service( device=device, virtual_machine=virtual_machine, @@ -5061,8 +4364,6 @@ def __new__( parent_object_fhrp_group=parent_object_fhrp_group, parent_object_virtual_machine=parent_object_virtual_machine, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5088,7 +4389,6 @@ def __new__( 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, - metadata: dict[str, Any] | None = None, ) -> pb.Site: """Create a new Site.""" region = convert_to_protobuf(region, pb.Region) @@ -5097,11 +4397,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Site( name=name, slug=slug, @@ -5121,8 +4416,6 @@ def __new__( custom_fields=custom_fields, asns=asns, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5138,17 +4431,11 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, comments: str | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.SiteGroup( name=name, slug=slug, @@ -5158,8 +4445,6 @@ def __new__( custom_fields=custom_fields, comments=comments, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5174,14 +4459,8 @@ def __new__( description: str | None = None, weight: int | None = None, object_types: list[str] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.Tag: """Create a new Tag.""" - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Tag( name=name, slug=slug, @@ -5190,8 +4469,6 @@ def __new__( weight=weight, object_types=object_types, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5207,17 +4484,11 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Tenant( name=name, slug=slug, @@ -5227,8 +4498,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5244,17 +4513,11 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, comments: str | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.TenantGroup( name=name, slug=slug, @@ -5264,8 +4527,6 @@ def __new__( custom_fields=custom_fields, comments=comments, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5285,7 +4546,6 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.Tunnel: """Create a new Tunnel.""" group = convert_to_protobuf(group, pb.TunnelGroup) @@ -5293,11 +4553,6 @@ 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.Tunnel( name=name, status=status, @@ -5311,8 +4566,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5326,16 +4579,10 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.TunnelGroup( name=name, slug=slug, @@ -5343,8 +4590,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5451,7 +4696,6 @@ def __new__( 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, - metadata: dict[str, Any] | None = None, ) -> pb.TunnelTermination: """Create a new TunnelTermination.""" tunnel = convert_to_protobuf(tunnel, pb.Tunnel) @@ -5551,11 +4795,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.TunnelTermination( tunnel=tunnel, role=role, @@ -5656,8 +4895,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5679,7 +4916,6 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.VLAN: """Create a new VLAN.""" site = convert_to_protobuf(site, pb.Site) @@ -5689,11 +4925,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.VLAN( site=site, group=group, @@ -5709,8 +4940,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5733,7 +4962,6 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, tenant: str | Tenant | pb.Tenant | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.VLANGroup: """Create a new VLANGroup.""" scope_cluster = convert_to_protobuf(scope_cluster, pb.Cluster) @@ -5746,11 +4974,6 @@ def __new__( tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) tenant = convert_to_protobuf(tenant, pb.Tenant) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.VLANGroup( name=name, slug=slug, @@ -5767,8 +4990,6 @@ def __new__( custom_fields=custom_fields, tenant=tenant, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5779,20 +5000,12 @@ def __new__( cls, name: str | None = None, description: str | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.VLANTranslationPolicy: """Create a new VLANTranslationPolicy.""" - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.VLANTranslationPolicy( name=name, description=description, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5805,23 +5018,15 @@ def __new__( local_vid: int | None = None, remote_vid: int | None = None, description: str | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.VLANTranslationRule: """Create a new VLANTranslationRule.""" policy = convert_to_protobuf(policy, pb.VLANTranslationPolicy) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.VLANTranslationRule( policy=policy, local_vid=local_vid, remote_vid=remote_vid, description=description, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5846,7 +5051,6 @@ def __new__( 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, - metadata: dict[str, Any] | None = None, ) -> pb.VMInterface: """Create a new VMInterface.""" virtual_machine = convert_to_protobuf(virtual_machine, pb.VirtualMachine) @@ -5860,11 +5064,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.VMInterface( virtual_machine=virtual_machine, name=name, @@ -5883,8 +5082,6 @@ def __new__( custom_fields=custom_fields, tagged_vlans=tagged_vlans, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5903,7 +5100,6 @@ def __new__( 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, - metadata: dict[str, Any] | None = None, ) -> pb.VRF: """Create a new VRF.""" tenant = convert_to_protobuf(tenant, pb.Tenant) @@ -5911,11 +5107,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.VRF( name=name, rd=rd, @@ -5928,8 +5119,6 @@ def __new__( import_targets=import_targets, export_targets=export_targets, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5945,17 +5134,11 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.VirtualChassis( name=name, domain=domain, @@ -5965,8 +5148,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -5985,7 +5166,6 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.VirtualCircuit: """Create a new VirtualCircuit.""" provider_network = convert_to_protobuf(provider_network, pb.ProviderNetwork) @@ -5994,11 +5174,6 @@ 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.VirtualCircuit( cid=cid, provider_network=provider_network, @@ -6011,8 +5186,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -6027,18 +5200,12 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.VirtualCircuitTermination( virtual_circuit=virtual_circuit, role=role, @@ -6047,8 +5214,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -6063,16 +5228,10 @@ def __new__( description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.VirtualCircuitType( name=name, slug=slug, @@ -6081,8 +5240,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -6102,7 +5259,6 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.VirtualDeviceContext: """Create a new VirtualDeviceContext.""" device = convert_to_protobuf(device, pb.Device) @@ -6111,11 +5267,6 @@ def __new__( 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.VirtualDeviceContext( name=name, device=device, @@ -6129,8 +5280,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -6145,17 +5294,11 @@ def __new__( size: int | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.VirtualDisk( virtual_machine=virtual_machine, name=name, @@ -6164,8 +5307,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -6192,7 +5333,6 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.VirtualMachine: """Create a new VirtualMachine.""" site = convert_to_protobuf(site, pb.Site) @@ -6218,11 +5358,6 @@ def __new__( if role is not None: if device is not None and not device.HasField('role'): device.role.CopyFrom(role) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.VirtualMachine( name=name, status=status, @@ -6243,8 +5378,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -6269,7 +5402,6 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.WirelessLAN: """Create a new WirelessLAN.""" group = convert_to_protobuf(group, pb.WirelessLANGroup) @@ -6281,11 +5413,6 @@ 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.WirelessLAN( ssid=ssid, description=description, @@ -6304,8 +5431,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -6321,17 +5446,11 @@ def __new__( tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, comments: str | None = None, - metadata: dict[str, Any] | 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.WirelessLANGroup( name=name, slug=slug, @@ -6341,8 +5460,6 @@ def __new__( custom_fields=custom_fields, comments=comments, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -6365,7 +5482,6 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.WirelessLink: """Create a new WirelessLink.""" interface_a = convert_to_protobuf(interface_a, pb.Interface) @@ -6373,11 +5489,6 @@ 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) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.WirelessLink( interface_a=interface_a, interface_b=interface_b, @@ -6394,8 +5505,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -6426,15 +5535,9 @@ def __new__( choice_set: str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None = None, comments: str | None = None, object_types: list[str] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.CustomField: """Create a new CustomField.""" choice_set = convert_to_protobuf(choice_set, pb.CustomFieldChoiceSet) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.CustomField( type=type, related_object_type=related_object_type, @@ -6459,8 +5562,6 @@ def __new__( comments=comments, object_types=object_types, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -6474,14 +5575,8 @@ def __new__( base_choices: str | None = None, order_alphabetically: bool | None = None, extra_choices: list[str] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.CustomFieldChoiceSet: """Create a new CustomFieldChoiceSet.""" - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.CustomFieldChoiceSet( name=name, description=description, @@ -6489,8 +5584,6 @@ def __new__( order_alphabetically=order_alphabetically, extra_choices=extra_choices, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -6596,7 +5689,6 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.JournalEntry: """Create a new JournalEntry.""" assigned_object_asn = convert_to_protobuf(assigned_object_asn, pb.ASN) @@ -6694,11 +5786,6 @@ def __new__( assigned_object_custom_link = convert_to_protobuf(assigned_object_custom_link, pb.CustomLink) tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.JournalEntry( assigned_object_asn=assigned_object_asn, assigned_object_asn_range=assigned_object_asn_range, @@ -6798,8 +5885,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -6814,16 +5899,10 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.ModuleTypeProfile: """Create a new ModuleTypeProfile.""" tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.ModuleTypeProfile( name=name, description=description, @@ -6832,8 +5911,6 @@ def __new__( tags=tags, custom_fields=custom_fields, ) - if _metadata is not None: - result._metadata = _metadata return result @@ -6851,14 +5928,8 @@ def __new__( button_class: str | None = None, new_window: bool | None = None, object_types: list[str] | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.CustomLink: """Create a new CustomLink.""" - # Store metadata on the protobuf message for later extraction - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None result = pb.CustomLink( name=name, enabled=enabled, @@ -6870,6 +5941,4 @@ def __new__( new_window=new_window, object_types=object_types, ) - if _metadata is not None: - result._metadata = _metadata return result From 8cb1aa6e15a438689c6961de4c128ce5272b580a Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Fri, 14 Nov 2025 19:19:01 +0100 Subject: [PATCH 5/9] feat: add metadata to all entity types wrappers Signed-off-by: Michal Fiedorowicz --- netboxlabs/diode/sdk/diode/v1/ingester_pb2.py | 921 +++-- .../diode/sdk/diode/v1/ingester_pb2.pyi | 567 ++- netboxlabs/diode/sdk/ingester.py | 3130 +++++++++++++---- 3 files changed, 3292 insertions(+), 1326 deletions(-) diff --git a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py index fc8b236..68d475c 100644 --- a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py +++ b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py @@ -12,12 +12,13 @@ _sym_db = _symbol_database.Default() +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 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\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17validate/validate.proto\"\xa2,\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\x0cwirelessLink\x12:\n\x0c\x63ustom_field\x18Z \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x0b\x63ustomField\x12W\n\x17\x63ustom_field_choice_set\x18[ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x14\x63ustomFieldChoiceSet\x12=\n\rjournal_entry\x18\\ \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x0cjournalEntry\x12M\n\x13module_type_profile\x18] \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x11moduleTypeProfile\x12\x37\n\x0b\x63ustom_link\x18^ \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\ncustomLink\x12\x33\n\x08metadata\x18_ \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadataB\x08\n\x06\x65ntity\"\x99\x03\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\x12\x33\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"(\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\"\xf9\x04\n\x07\x43ontact\x12\x35\n\x05group\x18\x01 \x01(\x0b\x32\x16.diode.v1.ContactGroupB\x02\x18\x01H\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\x12.\n\x06groups\x18\x0c \x03(\x0b\x32\x16.diode.v1.ContactGroupR\x06groups\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\"\x82\x38\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\x12G\n\x13object_custom_field\x18^ \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x11objectCustomField\x12\x64\n\x1eobject_custom_field_choice_set\x18_ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1aobjectCustomFieldChoiceSet\x12J\n\x14object_journal_entry\x18` \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x12objectJournalEntry\x12Z\n\x1aobject_module_type_profile\x18\x61 \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x17objectModuleTypeProfile\x12\x44\n\x12object_custom_link\x18\x62 \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x10objectCustomLink\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\"\xaa\x03\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\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\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\"\xbb+\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\x0cwirelessLink\x12:\n\x0c\x63ustom_field\x18Y \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x0b\x63ustomField\x12W\n\x17\x63ustom_field_choice_set\x18Z \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x14\x63ustomFieldChoiceSet\x12=\n\rjournal_entry\x18[ \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x0cjournalEntry\x12M\n\x13module_type_profile\x18\\ \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x11moduleTypeProfile\x12\x37\n\x0b\x63ustom_link\x18] \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\ncustomLinkB\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\"\xf3\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\x12\x31\n\x06parent\x18\x08 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x03R\x06parent\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\t \x01(\tH\x04R\x08\x63omments\x88\x01\x01\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_descriptionB\t\n\x07_parentB\x0b\n\t_comments\"\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\"\xe5\x39\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\x12M\n\x16interface_custom_field\x18[ \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x14interfaceCustomField\x12j\n!interface_custom_field_choice_set\x18\\ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1dinterfaceCustomFieldChoiceSet\x12P\n\x17interface_journal_entry\x18] \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x15interfaceJournalEntry\x12`\n\x1dinterface_module_type_profile\x18^ \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x1ainterfaceModuleTypeProfile\x12J\n\x15interface_custom_link\x18_ \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x13interfaceCustomLink\x12\x1a\n\x08priority\x18Z \x01(\x03R\x08priorityB\x0b\n\tinterface\"\xd1\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\xc4\x03\n\x04type\x18\x05 \x01(\tB\xaf\x03\xfa\x42\xab\x03r\xa8\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\x06\x66\x63-apcR\x05\x66\x63-pcR\x06\x66\x63-upcR\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\"\xe7\x34\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\x12objectWirelessLink\x12G\n\x13object_custom_field\x18Y \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x11objectCustomField\x12\x64\n\x1eobject_custom_field_choice_set\x18Z \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1aobjectCustomFieldChoiceSet\x12J\n\x14object_journal_entry\x18[ \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x12objectJournalEntry\x12Z\n\x1aobject_module_type_profile\x18\\ \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x17objectModuleTypeProfile\x12\x44\n\x12object_custom_link\x18] \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x10objectCustomLinkB\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 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x1d\x61ssignedObjectProviderAccount\x12\x64\n assigned_object_provider_network\x18? \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1d\x61ssignedObjectProviderNetwork\x12?\n\x13\x61ssigned_object_rir\x18@ \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x11\x61ssignedObjectRir\x12\x42\n\x14\x61ssigned_object_rack\x18\x41 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x12\x61ssignedObjectRack\x12\x64\n assigned_object_rack_reservation\x18\x42 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x1d\x61ssignedObjectRackReservation\x12O\n\x19\x61ssigned_object_rack_role\x18\x43 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x16\x61ssignedObjectRackRole\x12O\n\x19\x61ssigned_object_rack_type\x18\x44 \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x16\x61ssignedObjectRackType\x12O\n\x19\x61ssigned_object_rear_port\x18\x45 \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x16\x61ssignedObjectRearPort\x12H\n\x16\x61ssigned_object_region\x18\x46 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x14\x61ssignedObjectRegion\x12\x42\n\x14\x61ssigned_object_role\x18G \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x12\x61ssignedObjectRole\x12X\n\x1c\x61ssigned_object_route_target\x18H \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x19\x61ssignedObjectRouteTarget\x12K\n\x17\x61ssigned_object_service\x18I \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x15\x61ssignedObjectService\x12\x42\n\x14\x61ssigned_object_site\x18J \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x12\x61ssignedObjectSite\x12R\n\x1a\x61ssigned_object_site_group\x18K \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x17\x61ssignedObjectSiteGroup\x12?\n\x13\x61ssigned_object_tag\x18L \x01(\x0b\x32\r.diode.v1.TagH\x00R\x11\x61ssignedObjectTag\x12H\n\x16\x61ssigned_object_tenant\x18M \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x14\x61ssignedObjectTenant\x12X\n\x1c\x61ssigned_object_tenant_group\x18N \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x19\x61ssignedObjectTenantGroup\x12H\n\x16\x61ssigned_object_tunnel\x18O \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x14\x61ssignedObjectTunnel\x12X\n\x1c\x61ssigned_object_tunnel_group\x18P \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x19\x61ssignedObjectTunnelGroup\x12j\n\"assigned_object_tunnel_termination\x18Q \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1f\x61ssignedObjectTunnelTermination\x12R\n\x1a\x61ssigned_object_vlan_group\x18R \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x17\x61ssignedObjectVlanGroup\x12w\n\'assigned_object_vlan_translation_policy\x18S \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R#assignedObjectVlanTranslationPolicy\x12q\n%assigned_object_vlan_translation_rule\x18T \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R!assignedObjectVlanTranslationRule\x12?\n\x13\x61ssigned_object_vrf\x18U \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x11\x61ssignedObjectVrf\x12\x61\n\x1f\x61ssigned_object_virtual_chassis\x18V \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x1c\x61ssignedObjectVirtualChassis\x12\x61\n\x1f\x61ssigned_object_virtual_circuit\x18W \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x1c\x61ssignedObjectVirtualCircuit\x12\x83\x01\n+assigned_object_virtual_circuit_termination\x18X \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\'assignedObjectVirtualCircuitTermination\x12n\n$assigned_object_virtual_circuit_type\x18Y \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R assignedObjectVirtualCircuitType\x12t\n&assigned_object_virtual_device_context\x18Z \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\"assignedObjectVirtualDeviceContext\x12X\n\x1c\x61ssigned_object_virtual_disk\x18[ \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x19\x61ssignedObjectVirtualDisk\x12\x61\n\x1f\x61ssigned_object_virtual_machine\x18\\ \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x1c\x61ssignedObjectVirtualMachine\x12X\n\x1c\x61ssigned_object_wireless_lan\x18] \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x19\x61ssignedObjectWirelessLan\x12h\n\"assigned_object_wireless_lan_group\x18^ \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x1e\x61ssignedObjectWirelessLanGroup\x12[\n\x1d\x61ssigned_object_wireless_link\x18_ \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x1a\x61ssignedObjectWirelessLink\x12U\n\x1b\x61ssigned_object_custom_link\x18` \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x18\x61ssignedObjectCustomLink\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12Q\n\rcustom_fields\x18\x06 \x03(\x0b\x32,.diode.v1.L2VPNTermination.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\x11\n\x0f\x61ssigned_object\"\x8d\x05\n\x08Location\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\"\n\x04site\x18\x03 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12/\n\x06parent\x18\x04 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x06parent\x88\x01\x01\x12V\n\x06status\x18\x05 \x01(\tB9\xfa\x42\x36r4R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x07plannedR\x07retiredR\x07stagingH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x1f\n\x08\x66\x61\x63ility\x18\x07 \x01(\tH\x03R\x08\x66\x61\x63ility\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\n \x03(\x0b\x32$.diode.v1.Location.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x05R\x08\x63omments\x88\x01\x01\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\t\n\x07_statusB\t\n\x07_tenantB\x0b\n\t_facilityB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\x9f\x04\n\nMACAddress\x12\x1f\n\x0bmac_address\x18\x01 \x01(\tR\nmacAddress\x12Q\n\x19\x61ssigned_object_interface\x18\x02 \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x17\x61ssignedObjectInterface\x12X\n\x1c\x61ssigned_object_vm_interface\x18\x03 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x19\x61ssignedObjectVmInterface\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\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.MACAddress.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\x11\n\x0f\x61ssigned_objectB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x02\n\x0cManufacturer\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.Manufacturer.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\"\x8d\x05\n\x06Module\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12\x32\n\nmodule_bay\x18\x02 \x01(\x0b\x32\x13.diode.v1.ModuleBayR\tmoduleBay\x12\x35\n\x0bmodule_type\x18\x03 \x01(\x0b\x32\x14.diode.v1.ModuleTypeR\nmoduleType\x12]\n\x06status\x18\x04 \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\x1b\n\x06serial\x18\x05 \x01(\tH\x01R\x06serial\x88\x01\x01\x12 \n\tasset_tag\x18\x06 \x01(\tH\x02R\x08\x61ssetTag\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\x12G\n\rcustom_fields\x18\n \x03(\x0b\x32\".diode.v1.Module.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\t\n\x07_serialB\x0c\n\n_asset_tagB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xb0\x04\n\tModuleBay\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@\n\x10installed_module\x18\x04 \x01(\x0b\x32\x10.diode.v1.ModuleH\x01R\x0finstalledModule\x88\x01\x01\x12\x19\n\x05label\x18\x05 \x01(\tH\x02R\x05label\x88\x01\x01\x12\x1f\n\x08position\x18\x06 \x01(\tH\x03R\x08position\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\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.ModuleBay.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\x13\n\x11_installed_moduleB\x08\n\x06_labelB\x0b\n\t_positionB\x0e\n\x0c_description\"\xbb\x06\n\nModuleType\x12:\n\x0cmanufacturer\x18\x01 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12\x14\n\x05model\x18\x02 \x01(\tR\x05model\x12$\n\x0bpart_number\x18\x03 \x01(\tH\x00R\npartNumber\x88\x01\x01\x12w\n\x07\x61irflow\x18\x04 \x01(\tBX\xfa\x42UrSR\rfront-to-rearR\rleft-to-rightR\x07passiveR\rrear-to-frontR\rright-to-leftR\x0cside-to-rearH\x01R\x07\x61irflow\x88\x01\x01\x12\x1b\n\x06weight\x18\x05 \x01(\x01H\x02R\x06weight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x06 \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x03R\nweightUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x08 \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12K\n\rcustom_fields\x18\n \x03(\x0b\x32&.diode.v1.ModuleType.CustomFieldsEntryR\x0c\x63ustomFields\x12:\n\x07profile\x18\x0b \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x06R\x07profile\x88\x01\x01\x12#\n\nattributes\x18\x0c \x01(\tH\x07R\nattributes\x88\x01\x01\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_part_numberB\n\n\x08_airflowB\t\n\x07_weightB\x0e\n\x0c_weight_unitB\x0e\n\x0c_descriptionB\x0b\n\t_commentsB\n\n\x08_profileB\r\n\x0b_attributes\"\xf0\x03\n\x08Platform\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12?\n\x0cmanufacturer\x18\x03 \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\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\x12I\n\rcustom_fields\x18\x06 \x03(\x0b\x32$.diode.v1.Platform.CustomFieldsEntryR\x0c\x63ustomFields\x12/\n\x06parent\x18\x07 \x01(\x0b\x32\x12.diode.v1.PlatformH\x02R\x06parent\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x08 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\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\x0f\n\r_manufacturerB\x0e\n\x0c_descriptionB\t\n\x07_parentB\x0b\n\t_comments\"\xd9\x07\n\tPowerFeed\x12\x35\n\x0bpower_panel\x18\x01 \x01(\x0b\x32\x14.diode.v1.PowerPanelR\npowerPanel\x12\'\n\x04rack\x18\x02 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x04rack\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x44\n\x06status\x18\x04 \x01(\tB\'\xfa\x42$r\"R\x06\x61\x63tiveR\x06\x66\x61iledR\x07offlineR\x07plannedH\x01R\x06status\x88\x01\x01\x12\x32\n\x04type\x18\x05 \x01(\tB\x19\xfa\x42\x16r\x14R\x07primaryR\tredundantH\x02R\x04type\x88\x01\x01\x12*\n\x06supply\x18\x06 \x01(\tB\r\xfa\x42\nr\x08R\x02\x61\x63R\x02\x64\x63H\x03R\x06supply\x88\x01\x01\x12;\n\x05phase\x18\x07 \x01(\tB \xfa\x42\x1dr\x1bR\x0csingle-phaseR\x0bthree-phaseH\x04R\x05phase\x88\x01\x01\x12\x1d\n\x07voltage\x18\x08 \x01(\x03H\x05R\x07voltage\x88\x01\x01\x12\x1f\n\x08\x61mperage\x18\t \x01(\x03H\x06R\x08\x61mperage\x88\x01\x01\x12,\n\x0fmax_utilization\x18\n \x01(\x03H\x07R\x0emaxUtilization\x88\x01\x01\x12*\n\x0emark_connected\x18\x0b \x01(\x08H\x08R\rmarkConnected\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0c \x01(\tH\tR\x0b\x64\x65scription\x88\x01\x01\x12-\n\x06tenant\x18\r \x01(\x0b\x32\x10.diode.v1.TenantH\nR\x06tenant\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\x0bR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x10 \x03(\x0b\x32%.diode.v1.PowerFeed.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_rackB\t\n\x07_statusB\x07\n\x05_typeB\t\n\x07_supplyB\x08\n\x06_phaseB\n\n\x08_voltageB\x0b\n\t_amperageB\x12\n\x10_max_utilizationB\x11\n\x0f_mark_connectedB\x0e\n\x0c_descriptionB\t\n\x07_tenantB\x0b\n\t_comments\"\xd8\x10\n\x0bPowerOutlet\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\xea\n\n\x04type\x18\x05 \x01(\tB\xd0\n\xfa\x42\xcc\nr\xc9\nR\x07\x43S6360CR\x07\x43S6364CR\x07\x43S8164CR\x07\x43S8264CR\x07\x43S8364CR\x07\x43S8464CR\x0b\x64\x63-terminalR\teaton-c39R\thardwiredR\x07hdot-cxR\x11iec-60309-2p-e-4hR\x11iec-60309-2p-e-6hR\x11iec-60309-2p-e-9hR\x11iec-60309-3p-e-4hR\x11iec-60309-3p-e-6hR\x11iec-60309-3p-e-9hR\x13iec-60309-3p-n-e-4hR\x13iec-60309-3p-n-e-6hR\x13iec-60309-3p-n-e-9hR\x12iec-60309-p-n-e-4hR\x12iec-60309-p-n-e-6hR\x12iec-60309-p-n-e-9hR\riec-60320-c13R\riec-60320-c15R\riec-60320-c17R\riec-60320-c19R\riec-60320-c21R\x0ciec-60320-c5R\x0ciec-60320-c7R\x0biec-60906-1R\x05ita-eR\x05ita-fR\x05ita-gR\x05ita-hR\x05ita-iR\x05ita-jR\x05ita-kR\x05ita-lR\x05ita-mR\x11ita-multistandardR\x05ita-nR\x05ita-oR\x13molex-micro-fit-1x2R\x13molex-micro-fit-2x2R\x13molex-micro-fit-2x4R\rnbr-14136-10aR\rnbr-14136-20aR\nnema-1-15rR\x0bnema-10-30rR\x0bnema-10-50rR\x0bnema-14-20rR\x0bnema-14-30rR\x0bnema-14-50rR\x0bnema-14-60rR\x0bnema-15-15rR\x0bnema-15-20rR\x0bnema-15-30rR\x0bnema-15-50rR\x0bnema-15-60rR\nnema-5-15rR\nnema-5-20rR\nnema-5-30rR\nnema-5-50rR\nnema-6-15rR\nnema-6-20rR\nnema-6-30rR\nnema-6-50rR\x0bnema-l1-15rR\x0cnema-l10-30rR\x0cnema-l14-20rR\x0cnema-l14-30rR\x0cnema-l14-50rR\x0cnema-l14-60rR\x0cnema-l15-20rR\x0cnema-l15-30rR\x0cnema-l15-50rR\x0cnema-l15-60rR\x0cnema-l21-20rR\x0cnema-l21-30rR\x0cnema-l22-20rR\x0cnema-l22-30rR\x0bnema-l5-15rR\x0bnema-l5-20rR\x0bnema-l5-30rR\x0bnema-l5-50rR\x0bnema-l6-15rR\x0bnema-l6-20rR\x0bnema-l6-30rR\x0bnema-l6-50rR\x14neutrik-powercon-20aR\x14neutrik-powercon-32aR\x16neutrik-powercon-true1R\x1aneutrik-powercon-true1-topR\x05otherR\nsaf-d-gridR\x13ubiquiti-smartpowerR\x05usb-aR\x05usb-cR\x0busb-micro-bH\x02R\x04type\x88\x01\x01\x12\x19\n\x05\x63olor\x18\x06 \x01(\tH\x03R\x05\x63olor\x88\x01\x01\x12\x37\n\npower_port\x18\x07 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x04R\tpowerPort\x88\x01\x01\x12.\n\x08\x66\x65\x65\x64_leg\x18\x08 \x01(\tB\x0e\xfa\x42\x0br\tR\x01\x41R\x01\x42R\x01\x43H\x05R\x07\x66\x65\x65\x64Leg\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\t \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\n \x01(\x08H\x07R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\x0b \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x0c \x03(\x0b\x32\'.diode.v1.PowerOutlet.CustomFieldsEntryR\x0c\x63ustomFields\x12=\n\x06status\x18\r \x01(\tB \xfa\x42\x1dr\x1bR\x08\x64isabledR\x07\x65nabledR\x06\x66\x61ultyH\x08R\x06status\x88\x01\x01\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_colorB\r\n\x0b_power_portB\x0b\n\t_feed_legB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connectedB\t\n\x07_status\"\xb8\x03\n\nPowerPanel\x12\"\n\x04site\x18\x01 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12\x33\n\x08location\x18\x02 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x08location\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\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.PowerPanel.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\x0b\n\t_locationB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\x90\x10\n\tPowerPort\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\xa2\x0b\n\x04type\x18\x05 \x01(\tB\x88\x0b\xfa\x42\x84\x0br\x81\x0bR\x07\x63s6361cR\x07\x63s6365cR\x07\x63s8165cR\x07\x63s8265cR\x07\x63s8365cR\x07\x63s8465cR\x0b\x64\x63-terminalR\thardwiredR\x11iec-60309-2p-e-4hR\x11iec-60309-2p-e-6hR\x11iec-60309-2p-e-9hR\x11iec-60309-3p-e-4hR\x11iec-60309-3p-e-6hR\x11iec-60309-3p-e-9hR\x13iec-60309-3p-n-e-4hR\x13iec-60309-3p-n-e-6hR\x13iec-60309-3p-n-e-9hR\x12iec-60309-p-n-e-4hR\x12iec-60309-p-n-e-6hR\x12iec-60309-p-n-e-9hR\riec-60320-c14R\riec-60320-c16R\riec-60320-c18R\riec-60320-c20R\riec-60320-c22R\x0ciec-60320-c6R\x0ciec-60320-c8R\x0biec-60906-1R\x05ita-cR\x05ita-eR\x06ita-efR\x05ita-fR\x05ita-gR\x05ita-hR\x05ita-iR\x05ita-jR\x05ita-kR\x05ita-lR\x05ita-mR\x05ita-nR\x05ita-oR\x13molex-micro-fit-1x2R\x13molex-micro-fit-2x2R\x13molex-micro-fit-2x4R\rnbr-14136-10aR\rnbr-14136-20aR\nnema-1-15pR\x0bnema-10-30pR\x0bnema-10-50pR\x0bnema-14-20pR\x0bnema-14-30pR\x0bnema-14-50pR\x0bnema-14-60pR\x0bnema-15-15pR\x0bnema-15-20pR\x0bnema-15-30pR\x0bnema-15-50pR\x0bnema-15-60pR\nnema-5-15pR\nnema-5-20pR\nnema-5-30pR\nnema-5-50pR\nnema-6-15pR\nnema-6-20pR\nnema-6-30pR\nnema-6-50pR\x0bnema-l1-15pR\x0cnema-l10-30pR\x0cnema-l14-20pR\x0cnema-l14-30pR\x0cnema-l14-50pR\x0cnema-l14-60pR\x0cnema-l15-20pR\x0cnema-l15-30pR\x0cnema-l15-50pR\x0cnema-l15-60pR\x0cnema-l21-20pR\x0cnema-l21-30pR\x0cnema-l22-20pR\x0cnema-l22-30pR\x0bnema-l5-15pR\x0bnema-l5-20pR\x0bnema-l5-30pR\x0bnema-l5-50pR\x0bnema-l6-15pR\x0bnema-l6-20pR\x0bnema-l6-30pR\x0bnema-l6-50pR\x13neutrik-powercon-20R\x13neutrik-powercon-32R\x16neutrik-powercon-true1R\x1aneutrik-powercon-true1-topR\x05otherR\nsaf-d-gridR\x13ubiquiti-smartpowerR\x07usb-3-bR\rusb-3-micro-bR\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\x0cmaximum_draw\x18\x06 \x01(\x03H\x03R\x0bmaximumDraw\x88\x01\x01\x12*\n\x0e\x61llocated_draw\x18\x07 \x01(\x03H\x04R\rallocatedDraw\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\t \x01(\x08H\x06R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x0b \x03(\x0b\x32%.diode.v1.PowerPort.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\x0f\n\r_maximum_drawB\x11\n\x0f_allocated_drawB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xc7\x07\n\x06Prefix\x12\x16\n\x06prefix\x18\x01 \x01(\tR\x06prefix\x12$\n\x03vrf\x18\x02 \x01(\x0b\x32\r.diode.v1.VRFH\x01R\x03vrf\x88\x01\x01\x12;\n\x0escope_location\x18\x03 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12\x35\n\x0cscope_region\x18\x04 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x05 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\x06 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12-\n\x06tenant\x18\x07 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\'\n\x04vlan\x18\x08 \x01(\x0b\x32\x0e.diode.v1.VLANH\x03R\x04vlan\x88\x01\x01\x12K\n\x06status\x18\t \x01(\tB.\xfa\x42+r)R\x06\x61\x63tiveR\tcontainerR\ndeprecatedR\x08reservedH\x04R\x06status\x88\x01\x01\x12\'\n\x04role\x18\n \x01(\x0b\x32\x0e.diode.v1.RoleH\x05R\x04role\x88\x01\x01\x12\x1c\n\x07is_pool\x18\x0b \x01(\x08H\x06R\x06isPool\x88\x01\x01\x12(\n\rmark_utilized\x18\x0c \x01(\x08H\x07R\x0cmarkUtilized\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\r \x01(\tH\x08R\x0b\x64\x65scription\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\x12G\n\rcustom_fields\x18\x10 \x03(\x0b\x32\".diode.v1.Prefix.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\x06\n\x04_vrfB\t\n\x07_tenantB\x07\n\x05_vlanB\t\n\x07_statusB\x07\n\x05_roleB\n\n\x08_is_poolB\x10\n\x0e_mark_utilizedB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x03\n\x08Provider\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\x1f\n\x08\x63omments\x18\x04 \x01(\tH\x01R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\x06 \x03(\x0b\x32$.diode.v1.Provider.CustomFieldsEntryR\x0c\x63ustomFields\x12\x35\n\x08\x61\x63\x63ounts\x18\x07 \x03(\x0b\x32\x19.diode.v1.ProviderAccountR\x08\x61\x63\x63ounts\x12!\n\x04\x61sns\x18\x08 \x03(\x0b\x32\r.diode.v1.ASNR\x04\x61sns\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\x0b\n\t_comments\"\xb4\x03\n\x0fProviderAccount\x12.\n\x08provider\x18\x01 \x01(\x0b\x32\x12.diode.v1.ProviderR\x08provider\x12\x17\n\x04name\x18\x02 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x18\n\x07\x61\x63\x63ount\x18\x03 \x01(\tR\x07\x61\x63\x63ount\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12P\n\rcustom_fields\x18\x07 \x03(\x0b\x32+.diode.v1.ProviderAccount.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\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbf\x03\n\x0fProviderNetwork\x12.\n\x08provider\x18\x01 \x01(\x0b\x32\x12.diode.v1.ProviderR\x08provider\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\"\n\nservice_id\x18\x03 \x01(\tH\x00R\tserviceId\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12P\n\rcustom_fields\x18\x07 \x03(\x0b\x32+.diode.v1.ProviderNetwork.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_service_idB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xdd\x02\n\x03RIR\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\"\n\nis_private\x18\x03 \x01(\x08H\x00R\tisPrivate\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\x12\x44\n\rcustom_fields\x18\x06 \x03(\x0b\x32\x1f.diode.v1.RIR.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_is_privateB\x0e\n\x0c_description\"\xec\r\n\x04Rack\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12$\n\x0b\x66\x61\x63ility_id\x18\x02 \x01(\tH\x00R\nfacilityId\x88\x01\x01\x12\"\n\x04site\x18\x03 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12\x33\n\x08location\x18\x04 \x01(\x0b\x32\x12.diode.v1.LocationH\x01R\x08location\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12T\n\x06status\x18\x06 \x01(\tB7\xfa\x42\x34r2R\x06\x61\x63tiveR\tavailableR\ndeprecatedR\x07plannedR\x08reservedH\x03R\x06status\x88\x01\x01\x12+\n\x04role\x18\x07 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x04R\x04role\x88\x01\x01\x12\x1b\n\x06serial\x18\x08 \x01(\tH\x05R\x06serial\x88\x01\x01\x12 \n\tasset_tag\x18\t \x01(\tH\x06R\x08\x61ssetTag\x88\x01\x01\x12\x34\n\track_type\x18\n \x01(\x0b\x32\x12.diode.v1.RackTypeH\x07R\x08rackType\x88\x01\x01\x12\x9d\x01\n\x0b\x66orm_factor\x18\x0b \x01(\tBw\xfa\x42trrR\x0c\x32-post-frameR\x0e\x34-post-cabinetR\x0c\x34-post-frameR\x0cwall-cabinetR\x15wall-cabinet-verticalR\nwall-frameR\x13wall-frame-verticalH\x08R\nformFactor\x88\x01\x01\x12(\n\x05width\x18\x0c \x01(\x03\x42\r\xfa\x42\n\"\x08\x30\n0\x13\x30\x15\x30\x17H\tR\x05width\x88\x01\x01\x12\x1e\n\x08u_height\x18\r \x01(\x03H\nR\x07uHeight\x88\x01\x01\x12(\n\rstarting_unit\x18\x0e \x01(\x03H\x0bR\x0cstartingUnit\x88\x01\x01\x12\x1b\n\x06weight\x18\x0f \x01(\x01H\x0cR\x06weight\x88\x01\x01\x12\"\n\nmax_weight\x18\x10 \x01(\x03H\rR\tmaxWeight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x11 \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x0eR\nweightUnit\x88\x01\x01\x12\"\n\ndesc_units\x18\x12 \x01(\x08H\x0fR\tdescUnits\x88\x01\x01\x12$\n\x0bouter_width\x18\x13 \x01(\x03H\x10R\nouterWidth\x88\x01\x01\x12$\n\x0bouter_depth\x18\x14 \x01(\x03H\x11R\nouterDepth\x88\x01\x01\x12\x31\n\nouter_unit\x18\x15 \x01(\tB\r\xfa\x42\nr\x08R\x02inR\x02mmH\x12R\touterUnit\x88\x01\x01\x12*\n\x0emounting_depth\x18\x16 \x01(\x03H\x13R\rmountingDepth\x88\x01\x01\x12\x42\n\x07\x61irflow\x18\x17 \x01(\tB#\xfa\x42 r\x1eR\rfront-to-rearR\rrear-to-frontH\x14R\x07\x61irflow\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x18 \x01(\tH\x15R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x19 \x01(\tH\x16R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x1a \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x45\n\rcustom_fields\x18\x1b \x03(\x0b\x32 .diode.v1.Rack.CustomFieldsEntryR\x0c\x63ustomFields\x12&\n\x0couter_height\x18\x1c \x01(\x03H\x17R\x0bouterHeight\x88\x01\x01\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_facility_idB\x0b\n\t_locationB\t\n\x07_tenantB\t\n\x07_statusB\x07\n\x05_roleB\t\n\x07_serialB\x0c\n\n_asset_tagB\x0c\n\n_rack_typeB\x0e\n\x0c_form_factorB\x08\n\x06_widthB\x0b\n\t_u_heightB\x10\n\x0e_starting_unitB\t\n\x07_weightB\r\n\x0b_max_weightB\x0e\n\x0c_weight_unitB\r\n\x0b_desc_unitsB\x0e\n\x0c_outer_widthB\x0e\n\x0c_outer_depthB\r\n\x0b_outer_unitB\x11\n\x0f_mounting_depthB\n\n\x08_airflowB\x0e\n\x0c_descriptionB\x0b\n\t_commentsB\x0f\n\r_outer_height\"\xee\x03\n\x0fRackReservation\x12\"\n\x04rack\x18\x01 \x01(\x0b\x32\x0e.diode.v1.RackR\x04rack\x12\x14\n\x05units\x18\x02 \x03(\x03R\x05units\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12 \n\x0b\x64\x65scription\x18\x04 \x01(\tR\x0b\x64\x65scription\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x01R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12P\n\rcustom_fields\x18\x07 \x03(\x0b\x32+.diode.v1.RackReservation.CustomFieldsEntryR\x0c\x63ustomFields\x12:\n\x06status\x18\x08 \x01(\tB\x1d\xfa\x42\x1ar\x18R\x06\x61\x63tiveR\x07pendingR\x05staleH\x02R\x06status\x88\x01\x01\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\x0b\n\t_commentsB\t\n\x07_status\"\xd9\x02\n\x08RackRole\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\x12I\n\rcustom_fields\x18\x06 \x03(\x0b\x32$.diode.v1.RackRole.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\"\xed\t\n\x08RackType\x12:\n\x0cmanufacturer\x18\x01 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12\x14\n\x05model\x18\x02 \x01(\tR\x05model\x12\x12\n\x04slug\x18\x03 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x9d\x01\n\x0b\x66orm_factor\x18\x05 \x01(\tBw\xfa\x42trrR\x0c\x32-post-frameR\x0e\x34-post-cabinetR\x0c\x34-post-frameR\x0cwall-cabinetR\x15wall-cabinet-verticalR\nwall-frameR\x13wall-frame-verticalH\x01R\nformFactor\x88\x01\x01\x12(\n\x05width\x18\x06 \x01(\x03\x42\r\xfa\x42\n\"\x08\x30\n0\x13\x30\x15\x30\x17H\x02R\x05width\x88\x01\x01\x12\x1e\n\x08u_height\x18\x07 \x01(\x03H\x03R\x07uHeight\x88\x01\x01\x12(\n\rstarting_unit\x18\x08 \x01(\x03H\x04R\x0cstartingUnit\x88\x01\x01\x12\"\n\ndesc_units\x18\t \x01(\x08H\x05R\tdescUnits\x88\x01\x01\x12$\n\x0bouter_width\x18\n \x01(\x03H\x06R\nouterWidth\x88\x01\x01\x12$\n\x0bouter_depth\x18\x0b \x01(\x03H\x07R\nouterDepth\x88\x01\x01\x12\x31\n\nouter_unit\x18\x0c \x01(\tB\r\xfa\x42\nr\x08R\x02inR\x02mmH\x08R\touterUnit\x88\x01\x01\x12\x1b\n\x06weight\x18\r \x01(\x01H\tR\x06weight\x88\x01\x01\x12\"\n\nmax_weight\x18\x0e \x01(\x03H\nR\tmaxWeight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x0f \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x0bR\nweightUnit\x88\x01\x01\x12*\n\x0emounting_depth\x18\x10 \x01(\x03H\x0cR\rmountingDepth\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x11 \x01(\tH\rR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x12 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\x13 \x03(\x0b\x32$.diode.v1.RackType.CustomFieldsEntryR\x0c\x63ustomFields\x12&\n\x0couter_height\x18\x14 \x01(\x03H\x0eR\x0bouterHeight\x88\x01\x01\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\x0e\n\x0c_form_factorB\x08\n\x06_widthB\x0b\n\t_u_heightB\x10\n\x0e_starting_unitB\r\n\x0b_desc_unitsB\x0e\n\x0c_outer_widthB\x0e\n\x0c_outer_depthB\r\n\x0b_outer_unitB\t\n\x07_weightB\r\n\x0b_max_weightB\x0e\n\x0c_weight_unitB\x11\n\x0f_mounting_depthB\x0b\n\t_commentsB\x0f\n\r_outer_height\"\x85\x08\n\x08RearPort\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\xc4\x03\n\x04type\x18\x05 \x01(\tB\xaf\x03\xfa\x42\xab\x03r\xa8\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\x06\x66\x63-apcR\x05\x66\x63-pcR\x06\x66\x63-upcR\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\tpositions\x18\x07 \x01(\x03H\x03R\tpositions\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\t \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\x0b \x03(\x0b\x32$.diode.v1.RearPort.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\x0c\n\n_positionsB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\x98\x03\n\x06Region\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12-\n\x06parent\x18\x03 \x01(\x0b\x32\x10.diode.v1.RegionH\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\x12G\n\rcustom_fields\x18\x06 \x03(\x0b\x32\".diode.v1.Region.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\xd4\x02\n\x04Role\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x1b\n\x06weight\x18\x03 \x01(\x03H\x00R\x06weight\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\x12\x45\n\rcustom_fields\x18\x06 \x03(\x0b\x32 .diode.v1.Role.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_weightB\x0e\n\x0c_description\"\x8e\x03\n\x0bRouteTarget\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x06tenant\x18\x02 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x04 \x01(\tH\x02R\x08\x63omments\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.RouteTarget.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_descriptionB\x0b\n\t_comments\"\x82\x07\n\x07Service\x12\x31\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceB\x02\x18\x01H\x01R\x06\x64\x65vice\x88\x01\x01\x12J\n\x0fvirtual_machine\x18\x02 \x01(\x0b\x32\x18.diode.v1.VirtualMachineB\x02\x18\x01H\x02R\x0evirtualMachine\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x36\n\x08protocol\x18\x04 \x01(\tB\x15\xfa\x42\x12r\x10R\x04sctpR\x03tcpR\x03udpH\x03R\x08protocol\x88\x01\x01\x12\x14\n\x05ports\x18\x05 \x03(\x03R\x05ports\x12%\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12H\n\rcustom_fields\x18\t \x03(\x0b\x32#.diode.v1.Service.CustomFieldsEntryR\x0c\x63ustomFields\x12\x35\n\x0bipaddresses\x18\n \x03(\x0b\x32\x13.diode.v1.IPAddressR\x0bipaddresses\x12\x44\n\x14parent_object_device\x18\x0b \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x12parentObjectDevice\x12N\n\x18parent_object_fhrp_group\x18\x0c \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x15parentObjectFhrpGroup\x12]\n\x1dparent_object_virtual_machine\x18\r \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x1aparentObjectVirtualMachine\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\x0f\n\rparent_objectB\t\n\x07_deviceB\x12\n\x10_virtual_machineB\x0b\n\t_protocolB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xd5\x07\n\x04Site\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12V\n\x06status\x18\x03 \x01(\tB9\xfa\x42\x36r4R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x07plannedR\x07retiredR\x07stagingH\x00R\x06status\x88\x01\x01\x12-\n\x06region\x18\x04 \x01(\x0b\x32\x10.diode.v1.RegionH\x01R\x06region\x88\x01\x01\x12.\n\x05group\x18\x05 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x02R\x05group\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x03R\x06tenant\x88\x01\x01\x12\x1f\n\x08\x66\x61\x63ility\x18\x07 \x01(\tH\x04R\x08\x66\x61\x63ility\x88\x01\x01\x12 \n\ttime_zone\x18\x08 \x01(\tH\x05R\x08timeZone\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\t \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12.\n\x10physical_address\x18\n \x01(\tH\x07R\x0fphysicalAddress\x88\x01\x01\x12.\n\x10shipping_address\x18\x0b \x01(\tH\x08R\x0fshippingAddress\x88\x01\x01\x12\x1f\n\x08latitude\x18\x0c \x01(\x01H\tR\x08latitude\x88\x01\x01\x12!\n\tlongitude\x18\r \x01(\x01H\nR\tlongitude\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\x0bR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x45\n\rcustom_fields\x18\x10 \x03(\x0b\x32 .diode.v1.Site.CustomFieldsEntryR\x0c\x63ustomFields\x12!\n\x04\x61sns\x18\x11 \x03(\x0b\x32\r.diode.v1.ASNR\x04\x61sns\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\t\n\x07_regionB\x08\n\x06_groupB\t\n\x07_tenantB\x0b\n\t_facilityB\x0c\n\n_time_zoneB\x0e\n\x0c_descriptionB\x13\n\x11_physical_addressB\x13\n\x11_shipping_addressB\x0b\n\t_latitudeB\x0c\n\n_longitudeB\x0b\n\t_comments\"\xa1\x03\n\tSiteGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x30\n\x06parent\x18\x03 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\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\x12J\n\rcustom_fields\x18\x06 \x03(\x0b\x32%.diode.v1.SiteGroup.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\xd6\x0e\n\x03Tag\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\x1b\n\x06weight\x18\x05 \x01(\x03H\x02R\x06weight\x88\x01\x01\x12\xa2\r\n\x0cobject_types\x18\x06 \x03(\tB\xfe\x0c\xfa\x42\xfa\x0c\x92\x01\xf6\x0c\"\xf3\x0cr\xf0\x0cR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1f\x63ircuits.circuitgroupassignmentR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x13\x65xtras.journalentryR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x19tenancy.contactassignmentR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkR\x0bobjectTypesB\x08\n\x06_colorB\x0e\n\x0c_descriptionB\t\n\x07_weight\"\x9a\x03\n\x06Tenant\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x30\n\x05group\x18\x03 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x05group\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12G\n\rcustom_fields\x18\x07 \x03(\x0b\x32\".diode.v1.Tenant.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\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xa7\x03\n\x0bTenantGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x32\n\x06parent\x18\x03 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\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\x12L\n\rcustom_fields\x18\x06 \x03(\x0b\x32\'.diode.v1.TenantGroup.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\xf6\x05\n\x06Tunnel\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x38\n\x06status\x18\x02 \x01(\tB \xfa\x42\x1dr\x1bR\x06\x61\x63tiveR\x08\x64isabledR\x07plannedR\x06status\x12\x30\n\x05group\x18\x03 \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x05group\x88\x01\x01\x12v\n\rencapsulation\x18\x04 \x01(\tBP\xfa\x42MrKR\x03greR\x05ip-ipR\x0fipsec-transportR\x0cipsec-tunnelR\x04l2tpR\x07openvpnR\x04pptpR\twireguardR\rencapsulation\x12@\n\ripsec_profile\x18\x05 \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x01R\x0cipsecProfile\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12 \n\ttunnel_id\x18\x07 \x01(\x03H\x03R\x08tunnelId\x88\x01\x01\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\x12G\n\rcustom_fields\x18\x0b \x03(\x0b\x32\".diode.v1.Tunnel.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\x10\n\x0e_ipsec_profileB\t\n\x07_tenantB\x0c\n\n_tunnel_idB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xba\x02\n\x0bTunnelGroup\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.TunnelGroup.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\"\x85?\n\x11TunnelTermination\x12(\n\x06tunnel\x18\x01 \x01(\x0b\x32\x10.diode.v1.TunnelR\x06tunnel\x12+\n\x04role\x18\x02 \x01(\tB\x17\xfa\x42\x14r\x12R\x03hubR\x04peerR\x05spokeR\x04role\x12\x38\n\x0ftermination_asn\x18\x03 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x0eterminationAsn\x12H\n\x15termination_asn_range\x18\x04 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x13terminationAsnRange\x12J\n\x15termination_aggregate\x18\x05 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x14terminationAggregate\x12>\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\x12Q\n\x18termination_custom_field\x18^ \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x16terminationCustomField\x12n\n#termination_custom_field_choice_set\x18_ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1fterminationCustomFieldChoiceSet\x12T\n\x19termination_journal_entry\x18` \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x17terminationJournalEntry\x12\x64\n\x1ftermination_module_type_profile\x18\x61 \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x1cterminationModuleTypeProfile\x12N\n\x17termination_custom_link\x18\x62 \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x15terminationCustomLink\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\"\xb3\x06\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\x12-\n\x06tenant\x18\x0e \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\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\t\n\x07_tenant\"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\"\xd7\x08\n\x0eVirtualMachine\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x65\n\x06status\x18\x02 \x01(\tBH\xfa\x42\x45rCR\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x06\x66\x61iledR\x07offlineR\x06pausedR\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\"\xb6\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\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\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_descriptionB\x0b\n\t_comments\"\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_comments\"\xff%\n\x0b\x43ustomField\x12\x89\x01\n\x04type\x18\x01 \x01(\tBu\xfa\x42rrpR\x07\x62ooleanR\x04\x64\x61teR\x08\x64\x61tetimeR\x07\x64\x65\x63imalR\x07integerR\x04jsonR\x08longtextR\x0bmultiobjectR\x0bmultiselectR\x06objectR\x06selectR\x04textR\x03urlR\x04type\x12\xbe\x0e\n\x13related_object_type\x18\x02 \x01(\tB\x88\x0e\xfa\x42\x84\x0er\x81\x0eR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1f\x63ircuits.circuitgroupassignmentR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x0e\x64\x63im.cablepathR\x15\x64\x63im.cableterminationR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x12\x65xtras.customfieldR\x1b\x65xtras.customfieldchoicesetR\x11\x65xtras.customlinkR\x13\x65xtras.journalentryR\nextras.tagR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x18ipam.fhrpgroupassignmentR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x19tenancy.contactassignmentR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkH\x00R\x11relatedObjectType\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\"\n\ngroup_name\x18\x05 \x01(\tH\x02R\tgroupName\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08required\x18\x07 \x01(\x08H\x04R\x08required\x88\x01\x01\x12\x1b\n\x06unique\x18\x08 \x01(\x08H\x05R\x06unique\x88\x01\x01\x12(\n\rsearch_weight\x18\t \x01(\x03H\x06R\x0csearchWeight\x88\x01\x01\x12\x45\n\x0c\x66ilter_logic\x18\n \x01(\tB\x1d\xfa\x42\x1ar\x18R\x08\x64isabledR\x05\x65xactR\x05looseH\x07R\x0b\x66ilterLogic\x88\x01\x01\x12\x41\n\nui_visible\x18\x0b \x01(\tB\x1d\xfa\x42\x1ar\x18R\x06\x61lwaysR\x06hiddenR\x06if-setH\x08R\tuiVisible\x88\x01\x01\x12<\n\x0bui_editable\x18\x0c \x01(\tB\x16\xfa\x42\x13r\x11R\x06hiddenR\x02noR\x03yesH\tR\nuiEditable\x88\x01\x01\x12&\n\x0cis_cloneable\x18\r \x01(\x08H\nR\x0bisCloneable\x88\x01\x01\x12\x1d\n\x07\x64\x65\x66\x61ult\x18\x0e \x01(\tH\x0bR\x07\x64\x65\x66\x61ult\x88\x01\x01\x12\x37\n\x15related_object_filter\x18\x0f \x01(\tH\x0cR\x13relatedObjectFilter\x88\x01\x01\x12\x1b\n\x06weight\x18\x10 \x01(\x03H\rR\x06weight\x88\x01\x01\x12\x32\n\x12validation_minimum\x18\x11 \x01(\x01H\x0eR\x11validationMinimum\x88\x01\x01\x12\x32\n\x12validation_maximum\x18\x12 \x01(\x01H\x0fR\x11validationMaximum\x88\x01\x01\x12.\n\x10validation_regex\x18\x13 \x01(\tH\x10R\x0fvalidationRegex\x88\x01\x01\x12\x42\n\nchoice_set\x18\x14 \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x11R\tchoiceSet\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x15 \x01(\tH\x12R\x08\x63omments\x88\x01\x01\x12\xa2\r\n\x0cobject_types\x18\x16 \x03(\tB\xfe\x0c\xfa\x42\xfa\x0c\x92\x01\xf6\x0c\"\xf3\x0cr\xf0\x0cR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1f\x63ircuits.circuitgroupassignmentR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x13\x65xtras.journalentryR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x19tenancy.contactassignmentR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkR\x0bobjectTypesB\x16\n\x14_related_object_typeB\x08\n\x06_labelB\r\n\x0b_group_nameB\x0e\n\x0c_descriptionB\x0b\n\t_requiredB\t\n\x07_uniqueB\x10\n\x0e_search_weightB\x0f\n\r_filter_logicB\r\n\x0b_ui_visibleB\x0e\n\x0c_ui_editableB\x0f\n\r_is_cloneableB\n\n\x08_defaultB\x18\n\x16_related_object_filterB\t\n\x07_weightB\x15\n\x13_validation_minimumB\x15\n\x13_validation_maximumB\x13\n\x11_validation_regexB\r\n\x0b_choice_setB\x0b\n\t_comments\"\xb2\x02\n\x14\x43ustomFieldChoiceSet\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\x12H\n\x0c\x62\x61se_choices\x18\x03 \x01(\tB \xfa\x42\x1dr\x1bR\x04IATAR\x08ISO_3166R\tUN_LOCODEH\x01R\x0b\x62\x61seChoices\x88\x01\x01\x12\x36\n\x14order_alphabetically\x18\x04 \x01(\x08H\x02R\x13orderAlphabetically\x88\x01\x01\x12#\n\rextra_choices\x18\x05 \x03(\tR\x0c\x65xtraChoicesB\x0e\n\x0c_descriptionB\x0f\n\r_base_choicesB\x17\n\x15_order_alphabetically\"\xd1\x43\n\x0cJournalEntry\x12?\n\x13\x61ssigned_object_asn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x11\x61ssignedObjectAsn\x12O\n\x19\x61ssigned_object_asn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x16\x61ssignedObjectAsnRange\x12Q\n\x19\x61ssigned_object_aggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x17\x61ssignedObjectAggregate\x12\x45\n\x15\x61ssigned_object_cable\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x13\x61ssignedObjectCable\x12R\n\x1a\x61ssigned_object_cable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x17\x61ssignedObjectCablePath\x12g\n!assigned_object_cable_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x1e\x61ssignedObjectCableTermination\x12K\n\x17\x61ssigned_object_circuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x15\x61ssignedObjectCircuit\x12[\n\x1d\x61ssigned_object_circuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x1a\x61ssignedObjectCircuitGroup\x12z\n(assigned_object_circuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R$assignedObjectCircuitGroupAssignment\x12m\n#assigned_object_circuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R assignedObjectCircuitTermination\x12X\n\x1c\x61ssigned_object_circuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x19\x61ssignedObjectCircuitType\x12K\n\x17\x61ssigned_object_cluster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x15\x61ssignedObjectCluster\x12[\n\x1d\x61ssigned_object_cluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x1a\x61ssignedObjectClusterGroup\x12X\n\x1c\x61ssigned_object_cluster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x19\x61ssignedObjectClusterType\x12X\n\x1c\x61ssigned_object_console_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x19\x61ssignedObjectConsolePort\x12k\n#assigned_object_console_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1f\x61ssignedObjectConsoleServerPort\x12K\n\x17\x61ssigned_object_contact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x15\x61ssignedObjectContact\x12j\n\"assigned_object_contact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x1f\x61ssignedObjectContactAssignment\x12[\n\x1d\x61ssigned_object_contact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x1a\x61ssignedObjectContactGroup\x12X\n\x1c\x61ssigned_object_contact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x19\x61ssignedObjectContactRole\x12X\n\x1c\x61ssigned_object_custom_field\x18\x15 \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x19\x61ssignedObjectCustomField\x12u\n\'assigned_object_custom_field_choice_set\x18\x16 \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\"assignedObjectCustomFieldChoiceSet\x12H\n\x16\x61ssigned_object_device\x18\x17 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x14\x61ssignedObjectDevice\x12R\n\x1a\x61ssigned_object_device_bay\x18\x18 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x17\x61ssignedObjectDeviceBay\x12U\n\x1b\x61ssigned_object_device_role\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x18\x61ssignedObjectDeviceRole\x12U\n\x1b\x61ssigned_object_device_type\x18\x1a \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x18\x61ssignedObjectDeviceType\x12R\n\x1a\x61ssigned_object_fhrp_group\x18\x1b \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x17\x61ssignedObjectFhrpGroup\x12q\n%assigned_object_fhrp_group_assignment\x18\x1c \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R!assignedObjectFhrpGroupAssignment\x12R\n\x1a\x61ssigned_object_front_port\x18\x1d \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x17\x61ssignedObjectFrontPort\x12R\n\x1a\x61ssigned_object_ike_policy\x18\x1e \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x17\x61ssignedObjectIkePolicy\x12X\n\x1c\x61ssigned_object_ike_proposal\x18\x1f \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x19\x61ssignedObjectIkeProposal\x12R\n\x1a\x61ssigned_object_ip_address\x18 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x17\x61ssignedObjectIpAddress\x12L\n\x18\x61ssigned_object_ip_range\x18! \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x15\x61ssignedObjectIpRange\x12Y\n\x1d\x61ssigned_object_ip_sec_policy\x18\" \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x19\x61ssignedObjectIpSecPolicy\x12\\\n\x1e\x61ssigned_object_ip_sec_profile\x18# \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x1a\x61ssignedObjectIpSecProfile\x12_\n\x1f\x61ssigned_object_ip_sec_proposal\x18$ \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x1b\x61ssignedObjectIpSecProposal\x12Q\n\x19\x61ssigned_object_interface\x18% \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x17\x61ssignedObjectInterface\x12^\n\x1e\x61ssigned_object_inventory_item\x18& \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x1b\x61ssignedObjectInventoryItem\x12k\n#assigned_object_inventory_item_role\x18\' \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x1f\x61ssignedObjectInventoryItemRole\x12[\n\x1d\x61ssigned_object_journal_entry\x18( \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x1a\x61ssignedObjectJournalEntry\x12\x45\n\x15\x61ssigned_object_l2vpn\x18) \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x13\x61ssignedObjectL2vpn\x12g\n!assigned_object_l2vpn_termination\x18* \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x1e\x61ssignedObjectL2vpnTermination\x12N\n\x18\x61ssigned_object_location\x18+ \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x16\x61ssignedObjectLocation\x12U\n\x1b\x61ssigned_object_mac_address\x18, \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x18\x61ssignedObjectMacAddress\x12Z\n\x1c\x61ssigned_object_manufacturer\x18- \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x1a\x61ssignedObjectManufacturer\x12H\n\x16\x61ssigned_object_module\x18. \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x14\x61ssignedObjectModule\x12R\n\x1a\x61ssigned_object_module_bay\x18/ \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x17\x61ssignedObjectModuleBay\x12U\n\x1b\x61ssigned_object_module_type\x18\x30 \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x18\x61ssignedObjectModuleType\x12k\n#assigned_object_module_type_profile\x18\x31 \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x1f\x61ssignedObjectModuleTypeProfile\x12N\n\x18\x61ssigned_object_platform\x18\x32 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x16\x61ssignedObjectPlatform\x12R\n\x1a\x61ssigned_object_power_feed\x18\x33 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x17\x61ssignedObjectPowerFeed\x12X\n\x1c\x61ssigned_object_power_outlet\x18\x34 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x19\x61ssignedObjectPowerOutlet\x12U\n\x1b\x61ssigned_object_power_panel\x18\x35 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x18\x61ssignedObjectPowerPanel\x12R\n\x1a\x61ssigned_object_power_port\x18\x36 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x17\x61ssignedObjectPowerPort\x12H\n\x16\x61ssigned_object_prefix\x18\x37 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x14\x61ssignedObjectPrefix\x12N\n\x18\x61ssigned_object_provider\x18\x38 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x16\x61ssignedObjectProvider\x12\x64\n assigned_object_provider_account\x18\x39 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x1d\x61ssignedObjectProviderAccount\x12\x64\n assigned_object_provider_network\x18: \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1d\x61ssignedObjectProviderNetwork\x12?\n\x13\x61ssigned_object_rir\x18; \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x11\x61ssignedObjectRir\x12\x42\n\x14\x61ssigned_object_rack\x18< \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x12\x61ssignedObjectRack\x12\x64\n assigned_object_rack_reservation\x18= \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x1d\x61ssignedObjectRackReservation\x12O\n\x19\x61ssigned_object_rack_role\x18> \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x16\x61ssignedObjectRackRole\x12O\n\x19\x61ssigned_object_rack_type\x18? \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x16\x61ssignedObjectRackType\x12O\n\x19\x61ssigned_object_rear_port\x18@ \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x16\x61ssignedObjectRearPort\x12H\n\x16\x61ssigned_object_region\x18\x41 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x14\x61ssignedObjectRegion\x12\x42\n\x14\x61ssigned_object_role\x18\x42 \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x12\x61ssignedObjectRole\x12X\n\x1c\x61ssigned_object_route_target\x18\x43 \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x19\x61ssignedObjectRouteTarget\x12K\n\x17\x61ssigned_object_service\x18\x44 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x15\x61ssignedObjectService\x12\x42\n\x14\x61ssigned_object_site\x18\x45 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x12\x61ssignedObjectSite\x12R\n\x1a\x61ssigned_object_site_group\x18\x46 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x17\x61ssignedObjectSiteGroup\x12?\n\x13\x61ssigned_object_tag\x18G \x01(\x0b\x32\r.diode.v1.TagH\x00R\x11\x61ssignedObjectTag\x12H\n\x16\x61ssigned_object_tenant\x18H \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x14\x61ssignedObjectTenant\x12X\n\x1c\x61ssigned_object_tenant_group\x18I \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x19\x61ssignedObjectTenantGroup\x12H\n\x16\x61ssigned_object_tunnel\x18J \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x14\x61ssignedObjectTunnel\x12X\n\x1c\x61ssigned_object_tunnel_group\x18K \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x19\x61ssignedObjectTunnelGroup\x12j\n\"assigned_object_tunnel_termination\x18L \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1f\x61ssignedObjectTunnelTermination\x12\x42\n\x14\x61ssigned_object_vlan\x18M \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x12\x61ssignedObjectVlan\x12R\n\x1a\x61ssigned_object_vlan_group\x18N \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x17\x61ssignedObjectVlanGroup\x12w\n\'assigned_object_vlan_translation_policy\x18O \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R#assignedObjectVlanTranslationPolicy\x12q\n%assigned_object_vlan_translation_rule\x18P \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R!assignedObjectVlanTranslationRule\x12X\n\x1c\x61ssigned_object_vm_interface\x18Q \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x19\x61ssignedObjectVmInterface\x12?\n\x13\x61ssigned_object_vrf\x18R \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x11\x61ssignedObjectVrf\x12\x61\n\x1f\x61ssigned_object_virtual_chassis\x18S \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x1c\x61ssignedObjectVirtualChassis\x12\x61\n\x1f\x61ssigned_object_virtual_circuit\x18T \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x1c\x61ssignedObjectVirtualCircuit\x12\x83\x01\n+assigned_object_virtual_circuit_termination\x18U \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\'assignedObjectVirtualCircuitTermination\x12n\n$assigned_object_virtual_circuit_type\x18V \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R assignedObjectVirtualCircuitType\x12t\n&assigned_object_virtual_device_context\x18W \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\"assignedObjectVirtualDeviceContext\x12X\n\x1c\x61ssigned_object_virtual_disk\x18X \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x19\x61ssignedObjectVirtualDisk\x12\x61\n\x1f\x61ssigned_object_virtual_machine\x18Y \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x1c\x61ssignedObjectVirtualMachine\x12X\n\x1c\x61ssigned_object_wireless_lan\x18Z \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x19\x61ssignedObjectWirelessLan\x12h\n\"assigned_object_wireless_lan_group\x18[ \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x1e\x61ssignedObjectWirelessLanGroup\x12[\n\x1d\x61ssigned_object_wireless_link\x18\\ \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x1a\x61ssignedObjectWirelessLink\x12U\n\x1b\x61ssigned_object_custom_link\x18\x61 \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x18\x61ssignedObjectCustomLink\x12>\n\x04kind\x18] \x01(\tB%\xfa\x42\"r R\x06\x64\x61ngerR\x04infoR\x07successR\x07warningH\x01R\x04kind\x88\x01\x01\x12\x1a\n\x08\x63omments\x18^ \x01(\tR\x08\x63omments\x12!\n\x04tags\x18_ \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18` \x03(\x0b\x32(.diode.v1.JournalEntry.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\x11\n\x0f\x61ssigned_objectB\x07\n\x05_kind\"\x88\x03\n\x11ModuleTypeProfile\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\x1b\n\x06schema\x18\x03 \x01(\tH\x01R\x06schema\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x04 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18\x06 \x03(\x0b\x32-.diode.v1.ModuleTypeProfile.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_schemaB\x0b\n\t_comments\"\xa8\x10\n\nCustomLink\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1d\n\x07\x65nabled\x18\x02 \x01(\x08H\x00R\x07\x65nabled\x88\x01\x01\x12\x1b\n\tlink_text\x18\x03 \x01(\tR\x08linkText\x12\x19\n\x08link_url\x18\x04 \x01(\tR\x07linkUrl\x12\x1b\n\x06weight\x18\x05 \x01(\x03H\x01R\x06weight\x88\x01\x01\x12\"\n\ngroup_name\x18\x06 \x01(\tH\x02R\tgroupName\x88\x01\x01\x12\x9a\x01\n\x0c\x62utton_class\x18\x07 \x01(\tBr\xfa\x42ormR\x05\x62lackR\x04\x62lueR\x04\x63yanR\x07\x64\x65\x66\x61ultR\nghost-darkR\x04grayR\x05greenR\x06indigoR\x06orangeR\x04pinkR\x06purpleR\x03redR\x04tealR\x05whiteR\x06yellowH\x03R\x0b\x62uttonClass\x88\x01\x01\x12\"\n\nnew_window\x18\x08 \x01(\x08H\x04R\tnewWindow\x88\x01\x01\x12\xe6\x0c\n\x0cobject_types\x18\t \x03(\tB\xc2\x0c\xfa\x42\xbe\x0c\x92\x01\xba\x0c\"\xb7\x0cr\xb4\x0cR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x13\x65xtras.journalentryR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkR\x0bobjectTypesB\n\n\x08_enabledB\t\n\x07_weightB\r\n\x0b_group_nameB\x0f\n\r_button_classB\r\n\x0b_new_window2N\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 google/protobuf/descriptor.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17validate/validate.proto\"\xed+\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\x0cwirelessLink\x12:\n\x0c\x63ustom_field\x18Z \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x0b\x63ustomField\x12W\n\x17\x63ustom_field_choice_set\x18[ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x14\x63ustomFieldChoiceSet\x12=\n\rjournal_entry\x18\\ \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x0cjournalEntry\x12M\n\x13module_type_profile\x18] \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x11moduleTypeProfile\x12\x37\n\x0b\x63ustom_link\x18^ \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\ncustomLinkB\x08\n\x06\x65ntity\"\x99\x03\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\x12\x33\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"(\n\x0eIngestResponse\x12\x16\n\x06\x65rrors\x18\x01 \x03(\tR\x06\x65rrors\"\xe5\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\x12\x39\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xf2\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\x12\x39\n\x08metadata\x18\n \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xb9\x04\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\x12\x39\n\x08metadata\x18\t \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xac\x08\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\x12\x39\n\x08metadata\x18\x0e \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xd9\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\x12\x39\n\x08metadata\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadataB\x0c\n\n_is_activeB\x0e\n\x0c_is_completeB\x0b\n\t_is_split\"\x9e\x07\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\x13terminationRearPort\x12\x39\n\x08metadata\x18\x0c \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadataB\r\n\x0btermination\"\xa1\t\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\x12\x39\n\x08metadata\x18\x11 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xb1\x03\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\x12\x39\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\x99\x03\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\x04tags\x12\x39\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadataB\x08\n\x06memberB\x0b\n\t_priority\"\xc7\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\x12\x39\n\x08metadata\x18\x10 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\x9a\x03\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\x12\x39\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xfb\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\x12\x39\n\x08metadata\x18\x0e \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xf7\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\x12\x39\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xf5\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\x12\x39\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xa8\x06\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\x12\x39\n\x08metadata\x18\x0b \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xb4\x06\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\x12\x39\n\x08metadata\x18\x0b \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xb4\x05\n\x07\x43ontact\x12\x35\n\x05group\x18\x01 \x01(\x0b\x32\x16.diode.v1.ContactGroupB\x02\x18\x01H\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\x12.\n\x06groups\x18\x0c \x03(\x0b\x32\x16.diode.v1.ContactGroupR\x06groups\x12\x39\n\x08metadata\x18\r \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xbd\x38\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\x12G\n\x13object_custom_field\x18^ \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x11objectCustomField\x12\x64\n\x1eobject_custom_field_choice_set\x18_ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1aobjectCustomFieldChoiceSet\x12J\n\x14object_journal_entry\x18` \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x12objectJournalEntry\x12Z\n\x1aobject_module_type_profile\x18\x61 \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x17objectModuleTypeProfile\x12\x44\n\x12object_custom_link\x18\x62 \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x10objectCustomLink\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\x12\x39\n\x08metadata\x18\x63 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xe5\x03\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\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12\x39\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_descriptionB\x0b\n\t_comments\"\xf5\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\x12\x39\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xbb+\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\x0cwirelessLink\x12:\n\x0c\x63ustom_field\x18Y \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x0b\x63ustomField\x12W\n\x17\x63ustom_field_choice_set\x18Z \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x14\x63ustomFieldChoiceSet\x12=\n\rjournal_entry\x18[ \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x0cjournalEntry\x12M\n\x13module_type_profile\x18\\ \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x11moduleTypeProfile\x12\x37\n\x0b\x63ustom_link\x18] \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\ncustomLinkB\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\"\xac\x0e\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\x12\x39\n\x08metadata\x18\x1c \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\x83\x04\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\x12\x39\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xae\x04\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\x12\x31\n\x06parent\x18\x08 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x03R\x06parent\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\t \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12\x39\n\x08metadata\x18\n \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_descriptionB\t\n\x07_parentB\x0b\n\t_comments\"\xb7\t\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\x12\x39\n\x08metadata\x18\x11 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xfd\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\x12\x39\n\x08metadata\x18\n \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xa0:\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\x12M\n\x16interface_custom_field\x18[ \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x14interfaceCustomField\x12j\n!interface_custom_field_choice_set\x18\\ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1dinterfaceCustomFieldChoiceSet\x12P\n\x17interface_journal_entry\x18] \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x15interfaceJournalEntry\x12`\n\x1dinterface_module_type_profile\x18^ \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x1ainterfaceModuleTypeProfile\x12J\n\x15interface_custom_link\x18_ \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x13interfaceCustomLink\x12\x1a\n\x08priority\x18Z \x01(\x03R\x08priority\x12\x39\n\x08metadata\x18` \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadataB\x0b\n\tinterface\"\x8c\t\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\xc4\x03\n\x04type\x18\x05 \x01(\tB\xaf\x03\xfa\x42\xab\x03r\xa8\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\x06\x66\x63-apcR\x05\x66\x63-pcR\x06\x66\x63-upcR\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\x12\x39\n\x08metadata\x18\r \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xe7\x34\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\x12objectWirelessLink\x12G\n\x13object_custom_field\x18Y \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x11objectCustomField\x12\x64\n\x1eobject_custom_field_choice_set\x18Z \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1aobjectCustomFieldChoiceSet\x12J\n\x14object_journal_entry\x18[ \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x12objectJournalEntry\x12Z\n\x1aobject_module_type_profile\x18\\ \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x17objectModuleTypeProfile\x12\x44\n\x12object_custom_link\x18] \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x10objectCustomLinkB\x08\n\x06object\"\xdc\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\x12\x39\n\x08metadata\x18\n \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xc9\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 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x1d\x61ssignedObjectProviderAccount\x12\x64\n assigned_object_provider_network\x18? \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1d\x61ssignedObjectProviderNetwork\x12?\n\x13\x61ssigned_object_rir\x18@ \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x11\x61ssignedObjectRir\x12\x42\n\x14\x61ssigned_object_rack\x18\x41 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x12\x61ssignedObjectRack\x12\x64\n assigned_object_rack_reservation\x18\x42 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x1d\x61ssignedObjectRackReservation\x12O\n\x19\x61ssigned_object_rack_role\x18\x43 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x16\x61ssignedObjectRackRole\x12O\n\x19\x61ssigned_object_rack_type\x18\x44 \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x16\x61ssignedObjectRackType\x12O\n\x19\x61ssigned_object_rear_port\x18\x45 \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x16\x61ssignedObjectRearPort\x12H\n\x16\x61ssigned_object_region\x18\x46 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x14\x61ssignedObjectRegion\x12\x42\n\x14\x61ssigned_object_role\x18G \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x12\x61ssignedObjectRole\x12X\n\x1c\x61ssigned_object_route_target\x18H \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x19\x61ssignedObjectRouteTarget\x12K\n\x17\x61ssigned_object_service\x18I \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x15\x61ssignedObjectService\x12\x42\n\x14\x61ssigned_object_site\x18J \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x12\x61ssignedObjectSite\x12R\n\x1a\x61ssigned_object_site_group\x18K \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x17\x61ssignedObjectSiteGroup\x12?\n\x13\x61ssigned_object_tag\x18L \x01(\x0b\x32\r.diode.v1.TagH\x00R\x11\x61ssignedObjectTag\x12H\n\x16\x61ssigned_object_tenant\x18M \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x14\x61ssignedObjectTenant\x12X\n\x1c\x61ssigned_object_tenant_group\x18N \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x19\x61ssignedObjectTenantGroup\x12H\n\x16\x61ssigned_object_tunnel\x18O \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x14\x61ssignedObjectTunnel\x12X\n\x1c\x61ssigned_object_tunnel_group\x18P \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x19\x61ssignedObjectTunnelGroup\x12j\n\"assigned_object_tunnel_termination\x18Q \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1f\x61ssignedObjectTunnelTermination\x12R\n\x1a\x61ssigned_object_vlan_group\x18R \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x17\x61ssignedObjectVlanGroup\x12w\n\'assigned_object_vlan_translation_policy\x18S \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R#assignedObjectVlanTranslationPolicy\x12q\n%assigned_object_vlan_translation_rule\x18T \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R!assignedObjectVlanTranslationRule\x12?\n\x13\x61ssigned_object_vrf\x18U \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x11\x61ssignedObjectVrf\x12\x61\n\x1f\x61ssigned_object_virtual_chassis\x18V \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x1c\x61ssignedObjectVirtualChassis\x12\x61\n\x1f\x61ssigned_object_virtual_circuit\x18W \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x1c\x61ssignedObjectVirtualCircuit\x12\x83\x01\n+assigned_object_virtual_circuit_termination\x18X \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\'assignedObjectVirtualCircuitTermination\x12n\n$assigned_object_virtual_circuit_type\x18Y \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R assignedObjectVirtualCircuitType\x12t\n&assigned_object_virtual_device_context\x18Z \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\"assignedObjectVirtualDeviceContext\x12X\n\x1c\x61ssigned_object_virtual_disk\x18[ \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x19\x61ssignedObjectVirtualDisk\x12\x61\n\x1f\x61ssigned_object_virtual_machine\x18\\ \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x1c\x61ssignedObjectVirtualMachine\x12X\n\x1c\x61ssigned_object_wireless_lan\x18] \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x19\x61ssignedObjectWirelessLan\x12h\n\"assigned_object_wireless_lan_group\x18^ \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x1e\x61ssignedObjectWirelessLanGroup\x12[\n\x1d\x61ssigned_object_wireless_link\x18_ \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x1a\x61ssignedObjectWirelessLink\x12U\n\x1b\x61ssigned_object_custom_link\x18` \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x18\x61ssignedObjectCustomLink\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12Q\n\rcustom_fields\x18\x06 \x03(\x0b\x32,.diode.v1.L2VPNTermination.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x61 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x11\n\x0f\x61ssigned_object\"\xc8\x05\n\x08Location\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\"\n\x04site\x18\x03 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12/\n\x06parent\x18\x04 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x06parent\x88\x01\x01\x12V\n\x06status\x18\x05 \x01(\tB9\xfa\x42\x36r4R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x07plannedR\x07retiredR\x07stagingH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x1f\n\x08\x66\x61\x63ility\x18\x07 \x01(\tH\x03R\x08\x66\x61\x63ility\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\n \x03(\x0b\x32$.diode.v1.Location.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12\x39\n\x08metadata\x18\x0c \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\t\n\x07_statusB\t\n\x07_tenantB\x0b\n\t_facilityB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xda\x04\n\nMACAddress\x12\x1f\n\x0bmac_address\x18\x01 \x01(\tR\nmacAddress\x12Q\n\x19\x61ssigned_object_interface\x18\x02 \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x17\x61ssignedObjectInterface\x12X\n\x1c\x61ssigned_object_vm_interface\x18\x03 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x19\x61ssignedObjectVmInterface\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\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.MACAddress.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x11\n\x0f\x61ssigned_objectB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xf7\x02\n\x0cManufacturer\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.Manufacturer.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xc8\x05\n\x06Module\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12\x32\n\nmodule_bay\x18\x02 \x01(\x0b\x32\x13.diode.v1.ModuleBayR\tmoduleBay\x12\x35\n\x0bmodule_type\x18\x03 \x01(\x0b\x32\x14.diode.v1.ModuleTypeR\nmoduleType\x12]\n\x06status\x18\x04 \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\x1b\n\x06serial\x18\x05 \x01(\tH\x01R\x06serial\x88\x01\x01\x12 \n\tasset_tag\x18\x06 \x01(\tH\x02R\x08\x61ssetTag\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\x12G\n\rcustom_fields\x18\n \x03(\x0b\x32\".diode.v1.Module.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x0b \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\t\n\x07_serialB\x0c\n\n_asset_tagB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xeb\x04\n\tModuleBay\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@\n\x10installed_module\x18\x04 \x01(\x0b\x32\x10.diode.v1.ModuleH\x01R\x0finstalledModule\x88\x01\x01\x12\x19\n\x05label\x18\x05 \x01(\tH\x02R\x05label\x88\x01\x01\x12\x1f\n\x08position\x18\x06 \x01(\tH\x03R\x08position\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\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.ModuleBay.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\n \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x13\n\x11_installed_moduleB\x08\n\x06_labelB\x0b\n\t_positionB\x0e\n\x0c_description\"\xf6\x06\n\nModuleType\x12:\n\x0cmanufacturer\x18\x01 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12\x14\n\x05model\x18\x02 \x01(\tR\x05model\x12$\n\x0bpart_number\x18\x03 \x01(\tH\x00R\npartNumber\x88\x01\x01\x12w\n\x07\x61irflow\x18\x04 \x01(\tBX\xfa\x42UrSR\rfront-to-rearR\rleft-to-rightR\x07passiveR\rrear-to-frontR\rright-to-leftR\x0cside-to-rearH\x01R\x07\x61irflow\x88\x01\x01\x12\x1b\n\x06weight\x18\x05 \x01(\x01H\x02R\x06weight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x06 \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x03R\nweightUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x08 \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12K\n\rcustom_fields\x18\n \x03(\x0b\x32&.diode.v1.ModuleType.CustomFieldsEntryR\x0c\x63ustomFields\x12:\n\x07profile\x18\x0b \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x06R\x07profile\x88\x01\x01\x12#\n\nattributes\x18\x0c \x01(\tH\x07R\nattributes\x88\x01\x01\x12\x39\n\x08metadata\x18\r \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_part_numberB\n\n\x08_airflowB\t\n\x07_weightB\x0e\n\x0c_weight_unitB\x0e\n\x0c_descriptionB\x0b\n\t_commentsB\n\n\x08_profileB\r\n\x0b_attributes\"\xab\x04\n\x08Platform\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12?\n\x0cmanufacturer\x18\x03 \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\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\x12I\n\rcustom_fields\x18\x06 \x03(\x0b\x32$.diode.v1.Platform.CustomFieldsEntryR\x0c\x63ustomFields\x12/\n\x06parent\x18\x07 \x01(\x0b\x32\x12.diode.v1.PlatformH\x02R\x06parent\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x08 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12\x39\n\x08metadata\x18\t \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x0f\n\r_manufacturerB\x0e\n\x0c_descriptionB\t\n\x07_parentB\x0b\n\t_comments\"\x94\x08\n\tPowerFeed\x12\x35\n\x0bpower_panel\x18\x01 \x01(\x0b\x32\x14.diode.v1.PowerPanelR\npowerPanel\x12\'\n\x04rack\x18\x02 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x04rack\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x44\n\x06status\x18\x04 \x01(\tB\'\xfa\x42$r\"R\x06\x61\x63tiveR\x06\x66\x61iledR\x07offlineR\x07plannedH\x01R\x06status\x88\x01\x01\x12\x32\n\x04type\x18\x05 \x01(\tB\x19\xfa\x42\x16r\x14R\x07primaryR\tredundantH\x02R\x04type\x88\x01\x01\x12*\n\x06supply\x18\x06 \x01(\tB\r\xfa\x42\nr\x08R\x02\x61\x63R\x02\x64\x63H\x03R\x06supply\x88\x01\x01\x12;\n\x05phase\x18\x07 \x01(\tB \xfa\x42\x1dr\x1bR\x0csingle-phaseR\x0bthree-phaseH\x04R\x05phase\x88\x01\x01\x12\x1d\n\x07voltage\x18\x08 \x01(\x03H\x05R\x07voltage\x88\x01\x01\x12\x1f\n\x08\x61mperage\x18\t \x01(\x03H\x06R\x08\x61mperage\x88\x01\x01\x12,\n\x0fmax_utilization\x18\n \x01(\x03H\x07R\x0emaxUtilization\x88\x01\x01\x12*\n\x0emark_connected\x18\x0b \x01(\x08H\x08R\rmarkConnected\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0c \x01(\tH\tR\x0b\x64\x65scription\x88\x01\x01\x12-\n\x06tenant\x18\r \x01(\x0b\x32\x10.diode.v1.TenantH\nR\x06tenant\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\x0bR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x10 \x03(\x0b\x32%.diode.v1.PowerFeed.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x11 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_rackB\t\n\x07_statusB\x07\n\x05_typeB\t\n\x07_supplyB\x08\n\x06_phaseB\n\n\x08_voltageB\x0b\n\t_amperageB\x12\n\x10_max_utilizationB\x11\n\x0f_mark_connectedB\x0e\n\x0c_descriptionB\t\n\x07_tenantB\x0b\n\t_comments\"\x93\x11\n\x0bPowerOutlet\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\xea\n\n\x04type\x18\x05 \x01(\tB\xd0\n\xfa\x42\xcc\nr\xc9\nR\x07\x43S6360CR\x07\x43S6364CR\x07\x43S8164CR\x07\x43S8264CR\x07\x43S8364CR\x07\x43S8464CR\x0b\x64\x63-terminalR\teaton-c39R\thardwiredR\x07hdot-cxR\x11iec-60309-2p-e-4hR\x11iec-60309-2p-e-6hR\x11iec-60309-2p-e-9hR\x11iec-60309-3p-e-4hR\x11iec-60309-3p-e-6hR\x11iec-60309-3p-e-9hR\x13iec-60309-3p-n-e-4hR\x13iec-60309-3p-n-e-6hR\x13iec-60309-3p-n-e-9hR\x12iec-60309-p-n-e-4hR\x12iec-60309-p-n-e-6hR\x12iec-60309-p-n-e-9hR\riec-60320-c13R\riec-60320-c15R\riec-60320-c17R\riec-60320-c19R\riec-60320-c21R\x0ciec-60320-c5R\x0ciec-60320-c7R\x0biec-60906-1R\x05ita-eR\x05ita-fR\x05ita-gR\x05ita-hR\x05ita-iR\x05ita-jR\x05ita-kR\x05ita-lR\x05ita-mR\x11ita-multistandardR\x05ita-nR\x05ita-oR\x13molex-micro-fit-1x2R\x13molex-micro-fit-2x2R\x13molex-micro-fit-2x4R\rnbr-14136-10aR\rnbr-14136-20aR\nnema-1-15rR\x0bnema-10-30rR\x0bnema-10-50rR\x0bnema-14-20rR\x0bnema-14-30rR\x0bnema-14-50rR\x0bnema-14-60rR\x0bnema-15-15rR\x0bnema-15-20rR\x0bnema-15-30rR\x0bnema-15-50rR\x0bnema-15-60rR\nnema-5-15rR\nnema-5-20rR\nnema-5-30rR\nnema-5-50rR\nnema-6-15rR\nnema-6-20rR\nnema-6-30rR\nnema-6-50rR\x0bnema-l1-15rR\x0cnema-l10-30rR\x0cnema-l14-20rR\x0cnema-l14-30rR\x0cnema-l14-50rR\x0cnema-l14-60rR\x0cnema-l15-20rR\x0cnema-l15-30rR\x0cnema-l15-50rR\x0cnema-l15-60rR\x0cnema-l21-20rR\x0cnema-l21-30rR\x0cnema-l22-20rR\x0cnema-l22-30rR\x0bnema-l5-15rR\x0bnema-l5-20rR\x0bnema-l5-30rR\x0bnema-l5-50rR\x0bnema-l6-15rR\x0bnema-l6-20rR\x0bnema-l6-30rR\x0bnema-l6-50rR\x14neutrik-powercon-20aR\x14neutrik-powercon-32aR\x16neutrik-powercon-true1R\x1aneutrik-powercon-true1-topR\x05otherR\nsaf-d-gridR\x13ubiquiti-smartpowerR\x05usb-aR\x05usb-cR\x0busb-micro-bH\x02R\x04type\x88\x01\x01\x12\x19\n\x05\x63olor\x18\x06 \x01(\tH\x03R\x05\x63olor\x88\x01\x01\x12\x37\n\npower_port\x18\x07 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x04R\tpowerPort\x88\x01\x01\x12.\n\x08\x66\x65\x65\x64_leg\x18\x08 \x01(\tB\x0e\xfa\x42\x0br\tR\x01\x41R\x01\x42R\x01\x43H\x05R\x07\x66\x65\x65\x64Leg\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\t \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\n \x01(\x08H\x07R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\x0b \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x0c \x03(\x0b\x32\'.diode.v1.PowerOutlet.CustomFieldsEntryR\x0c\x63ustomFields\x12=\n\x06status\x18\r \x01(\tB \xfa\x42\x1dr\x1bR\x08\x64isabledR\x07\x65nabledR\x06\x66\x61ultyH\x08R\x06status\x88\x01\x01\x12\x39\n\x08metadata\x18\x0e \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_colorB\r\n\x0b_power_portB\x0b\n\t_feed_legB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connectedB\t\n\x07_status\"\xf3\x03\n\nPowerPanel\x12\"\n\x04site\x18\x01 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12\x33\n\x08location\x18\x02 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x08location\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\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.PowerPanel.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x0b\n\t_locationB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xcb\x10\n\tPowerPort\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\xa2\x0b\n\x04type\x18\x05 \x01(\tB\x88\x0b\xfa\x42\x84\x0br\x81\x0bR\x07\x63s6361cR\x07\x63s6365cR\x07\x63s8165cR\x07\x63s8265cR\x07\x63s8365cR\x07\x63s8465cR\x0b\x64\x63-terminalR\thardwiredR\x11iec-60309-2p-e-4hR\x11iec-60309-2p-e-6hR\x11iec-60309-2p-e-9hR\x11iec-60309-3p-e-4hR\x11iec-60309-3p-e-6hR\x11iec-60309-3p-e-9hR\x13iec-60309-3p-n-e-4hR\x13iec-60309-3p-n-e-6hR\x13iec-60309-3p-n-e-9hR\x12iec-60309-p-n-e-4hR\x12iec-60309-p-n-e-6hR\x12iec-60309-p-n-e-9hR\riec-60320-c14R\riec-60320-c16R\riec-60320-c18R\riec-60320-c20R\riec-60320-c22R\x0ciec-60320-c6R\x0ciec-60320-c8R\x0biec-60906-1R\x05ita-cR\x05ita-eR\x06ita-efR\x05ita-fR\x05ita-gR\x05ita-hR\x05ita-iR\x05ita-jR\x05ita-kR\x05ita-lR\x05ita-mR\x05ita-nR\x05ita-oR\x13molex-micro-fit-1x2R\x13molex-micro-fit-2x2R\x13molex-micro-fit-2x4R\rnbr-14136-10aR\rnbr-14136-20aR\nnema-1-15pR\x0bnema-10-30pR\x0bnema-10-50pR\x0bnema-14-20pR\x0bnema-14-30pR\x0bnema-14-50pR\x0bnema-14-60pR\x0bnema-15-15pR\x0bnema-15-20pR\x0bnema-15-30pR\x0bnema-15-50pR\x0bnema-15-60pR\nnema-5-15pR\nnema-5-20pR\nnema-5-30pR\nnema-5-50pR\nnema-6-15pR\nnema-6-20pR\nnema-6-30pR\nnema-6-50pR\x0bnema-l1-15pR\x0cnema-l10-30pR\x0cnema-l14-20pR\x0cnema-l14-30pR\x0cnema-l14-50pR\x0cnema-l14-60pR\x0cnema-l15-20pR\x0cnema-l15-30pR\x0cnema-l15-50pR\x0cnema-l15-60pR\x0cnema-l21-20pR\x0cnema-l21-30pR\x0cnema-l22-20pR\x0cnema-l22-30pR\x0bnema-l5-15pR\x0bnema-l5-20pR\x0bnema-l5-30pR\x0bnema-l5-50pR\x0bnema-l6-15pR\x0bnema-l6-20pR\x0bnema-l6-30pR\x0bnema-l6-50pR\x13neutrik-powercon-20R\x13neutrik-powercon-32R\x16neutrik-powercon-true1R\x1aneutrik-powercon-true1-topR\x05otherR\nsaf-d-gridR\x13ubiquiti-smartpowerR\x07usb-3-bR\rusb-3-micro-bR\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\x0cmaximum_draw\x18\x06 \x01(\x03H\x03R\x0bmaximumDraw\x88\x01\x01\x12*\n\x0e\x61llocated_draw\x18\x07 \x01(\x03H\x04R\rallocatedDraw\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\t \x01(\x08H\x06R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x0b \x03(\x0b\x32%.diode.v1.PowerPort.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x0c \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x0f\n\r_maximum_drawB\x11\n\x0f_allocated_drawB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\x82\x08\n\x06Prefix\x12\x16\n\x06prefix\x18\x01 \x01(\tR\x06prefix\x12$\n\x03vrf\x18\x02 \x01(\x0b\x32\r.diode.v1.VRFH\x01R\x03vrf\x88\x01\x01\x12;\n\x0escope_location\x18\x03 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12\x35\n\x0cscope_region\x18\x04 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x05 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\x06 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12-\n\x06tenant\x18\x07 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\'\n\x04vlan\x18\x08 \x01(\x0b\x32\x0e.diode.v1.VLANH\x03R\x04vlan\x88\x01\x01\x12K\n\x06status\x18\t \x01(\tB.\xfa\x42+r)R\x06\x61\x63tiveR\tcontainerR\ndeprecatedR\x08reservedH\x04R\x06status\x88\x01\x01\x12\'\n\x04role\x18\n \x01(\x0b\x32\x0e.diode.v1.RoleH\x05R\x04role\x88\x01\x01\x12\x1c\n\x07is_pool\x18\x0b \x01(\x08H\x06R\x06isPool\x88\x01\x01\x12(\n\rmark_utilized\x18\x0c \x01(\x08H\x07R\x0cmarkUtilized\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\r \x01(\tH\x08R\x0b\x64\x65scription\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\x12G\n\rcustom_fields\x18\x10 \x03(\x0b\x32\".diode.v1.Prefix.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x11 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x06\n\x04_vrfB\t\n\x07_tenantB\x07\n\x05_vlanB\t\n\x07_statusB\x07\n\x05_roleB\n\n\x08_is_poolB\x10\n\x0e_mark_utilizedB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xf7\x03\n\x08Provider\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\x1f\n\x08\x63omments\x18\x04 \x01(\tH\x01R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\x06 \x03(\x0b\x32$.diode.v1.Provider.CustomFieldsEntryR\x0c\x63ustomFields\x12\x35\n\x08\x61\x63\x63ounts\x18\x07 \x03(\x0b\x32\x19.diode.v1.ProviderAccountR\x08\x61\x63\x63ounts\x12!\n\x04\x61sns\x18\x08 \x03(\x0b\x32\r.diode.v1.ASNR\x04\x61sns\x12\x39\n\x08metadata\x18\t \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x0b\n\t_comments\"\xef\x03\n\x0fProviderAccount\x12.\n\x08provider\x18\x01 \x01(\x0b\x32\x12.diode.v1.ProviderR\x08provider\x12\x17\n\x04name\x18\x02 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x18\n\x07\x61\x63\x63ount\x18\x03 \x01(\tR\x07\x61\x63\x63ount\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12P\n\rcustom_fields\x18\x07 \x03(\x0b\x32+.diode.v1.ProviderAccount.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xfa\x03\n\x0fProviderNetwork\x12.\n\x08provider\x18\x01 \x01(\x0b\x32\x12.diode.v1.ProviderR\x08provider\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\"\n\nservice_id\x18\x03 \x01(\tH\x00R\tserviceId\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12P\n\rcustom_fields\x18\x07 \x03(\x0b\x32+.diode.v1.ProviderNetwork.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_service_idB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\x98\x03\n\x03RIR\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\"\n\nis_private\x18\x03 \x01(\x08H\x00R\tisPrivate\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\x12\x44\n\rcustom_fields\x18\x06 \x03(\x0b\x32\x1f.diode.v1.RIR.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_is_privateB\x0e\n\x0c_description\"\xa7\x0e\n\x04Rack\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12$\n\x0b\x66\x61\x63ility_id\x18\x02 \x01(\tH\x00R\nfacilityId\x88\x01\x01\x12\"\n\x04site\x18\x03 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12\x33\n\x08location\x18\x04 \x01(\x0b\x32\x12.diode.v1.LocationH\x01R\x08location\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12T\n\x06status\x18\x06 \x01(\tB7\xfa\x42\x34r2R\x06\x61\x63tiveR\tavailableR\ndeprecatedR\x07plannedR\x08reservedH\x03R\x06status\x88\x01\x01\x12+\n\x04role\x18\x07 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x04R\x04role\x88\x01\x01\x12\x1b\n\x06serial\x18\x08 \x01(\tH\x05R\x06serial\x88\x01\x01\x12 \n\tasset_tag\x18\t \x01(\tH\x06R\x08\x61ssetTag\x88\x01\x01\x12\x34\n\track_type\x18\n \x01(\x0b\x32\x12.diode.v1.RackTypeH\x07R\x08rackType\x88\x01\x01\x12\x9d\x01\n\x0b\x66orm_factor\x18\x0b \x01(\tBw\xfa\x42trrR\x0c\x32-post-frameR\x0e\x34-post-cabinetR\x0c\x34-post-frameR\x0cwall-cabinetR\x15wall-cabinet-verticalR\nwall-frameR\x13wall-frame-verticalH\x08R\nformFactor\x88\x01\x01\x12(\n\x05width\x18\x0c \x01(\x03\x42\r\xfa\x42\n\"\x08\x30\n0\x13\x30\x15\x30\x17H\tR\x05width\x88\x01\x01\x12\x1e\n\x08u_height\x18\r \x01(\x03H\nR\x07uHeight\x88\x01\x01\x12(\n\rstarting_unit\x18\x0e \x01(\x03H\x0bR\x0cstartingUnit\x88\x01\x01\x12\x1b\n\x06weight\x18\x0f \x01(\x01H\x0cR\x06weight\x88\x01\x01\x12\"\n\nmax_weight\x18\x10 \x01(\x03H\rR\tmaxWeight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x11 \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x0eR\nweightUnit\x88\x01\x01\x12\"\n\ndesc_units\x18\x12 \x01(\x08H\x0fR\tdescUnits\x88\x01\x01\x12$\n\x0bouter_width\x18\x13 \x01(\x03H\x10R\nouterWidth\x88\x01\x01\x12$\n\x0bouter_depth\x18\x14 \x01(\x03H\x11R\nouterDepth\x88\x01\x01\x12\x31\n\nouter_unit\x18\x15 \x01(\tB\r\xfa\x42\nr\x08R\x02inR\x02mmH\x12R\touterUnit\x88\x01\x01\x12*\n\x0emounting_depth\x18\x16 \x01(\x03H\x13R\rmountingDepth\x88\x01\x01\x12\x42\n\x07\x61irflow\x18\x17 \x01(\tB#\xfa\x42 r\x1eR\rfront-to-rearR\rrear-to-frontH\x14R\x07\x61irflow\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x18 \x01(\tH\x15R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x19 \x01(\tH\x16R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x1a \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x45\n\rcustom_fields\x18\x1b \x03(\x0b\x32 .diode.v1.Rack.CustomFieldsEntryR\x0c\x63ustomFields\x12&\n\x0couter_height\x18\x1c \x01(\x03H\x17R\x0bouterHeight\x88\x01\x01\x12\x39\n\x08metadata\x18\x1d \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_facility_idB\x0b\n\t_locationB\t\n\x07_tenantB\t\n\x07_statusB\x07\n\x05_roleB\t\n\x07_serialB\x0c\n\n_asset_tagB\x0c\n\n_rack_typeB\x0e\n\x0c_form_factorB\x08\n\x06_widthB\x0b\n\t_u_heightB\x10\n\x0e_starting_unitB\t\n\x07_weightB\r\n\x0b_max_weightB\x0e\n\x0c_weight_unitB\r\n\x0b_desc_unitsB\x0e\n\x0c_outer_widthB\x0e\n\x0c_outer_depthB\r\n\x0b_outer_unitB\x11\n\x0f_mounting_depthB\n\n\x08_airflowB\x0e\n\x0c_descriptionB\x0b\n\t_commentsB\x0f\n\r_outer_height\"\xa9\x04\n\x0fRackReservation\x12\"\n\x04rack\x18\x01 \x01(\x0b\x32\x0e.diode.v1.RackR\x04rack\x12\x14\n\x05units\x18\x02 \x03(\x03R\x05units\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12 \n\x0b\x64\x65scription\x18\x04 \x01(\tR\x0b\x64\x65scription\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x01R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12P\n\rcustom_fields\x18\x07 \x03(\x0b\x32+.diode.v1.RackReservation.CustomFieldsEntryR\x0c\x63ustomFields\x12:\n\x06status\x18\x08 \x01(\tB\x1d\xfa\x42\x1ar\x18R\x06\x61\x63tiveR\x07pendingR\x05staleH\x02R\x06status\x88\x01\x01\x12\x39\n\x08metadata\x18\t \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x0b\n\t_commentsB\t\n\x07_status\"\x94\x03\n\x08RackRole\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\x12I\n\rcustom_fields\x18\x06 \x03(\x0b\x32$.diode.v1.RackRole.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xa8\n\n\x08RackType\x12:\n\x0cmanufacturer\x18\x01 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12\x14\n\x05model\x18\x02 \x01(\tR\x05model\x12\x12\n\x04slug\x18\x03 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x9d\x01\n\x0b\x66orm_factor\x18\x05 \x01(\tBw\xfa\x42trrR\x0c\x32-post-frameR\x0e\x34-post-cabinetR\x0c\x34-post-frameR\x0cwall-cabinetR\x15wall-cabinet-verticalR\nwall-frameR\x13wall-frame-verticalH\x01R\nformFactor\x88\x01\x01\x12(\n\x05width\x18\x06 \x01(\x03\x42\r\xfa\x42\n\"\x08\x30\n0\x13\x30\x15\x30\x17H\x02R\x05width\x88\x01\x01\x12\x1e\n\x08u_height\x18\x07 \x01(\x03H\x03R\x07uHeight\x88\x01\x01\x12(\n\rstarting_unit\x18\x08 \x01(\x03H\x04R\x0cstartingUnit\x88\x01\x01\x12\"\n\ndesc_units\x18\t \x01(\x08H\x05R\tdescUnits\x88\x01\x01\x12$\n\x0bouter_width\x18\n \x01(\x03H\x06R\nouterWidth\x88\x01\x01\x12$\n\x0bouter_depth\x18\x0b \x01(\x03H\x07R\nouterDepth\x88\x01\x01\x12\x31\n\nouter_unit\x18\x0c \x01(\tB\r\xfa\x42\nr\x08R\x02inR\x02mmH\x08R\touterUnit\x88\x01\x01\x12\x1b\n\x06weight\x18\r \x01(\x01H\tR\x06weight\x88\x01\x01\x12\"\n\nmax_weight\x18\x0e \x01(\x03H\nR\tmaxWeight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x0f \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x0bR\nweightUnit\x88\x01\x01\x12*\n\x0emounting_depth\x18\x10 \x01(\x03H\x0cR\rmountingDepth\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x11 \x01(\tH\rR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x12 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\x13 \x03(\x0b\x32$.diode.v1.RackType.CustomFieldsEntryR\x0c\x63ustomFields\x12&\n\x0couter_height\x18\x14 \x01(\x03H\x0eR\x0bouterHeight\x88\x01\x01\x12\x39\n\x08metadata\x18\x15 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x0e\n\x0c_form_factorB\x08\n\x06_widthB\x0b\n\t_u_heightB\x10\n\x0e_starting_unitB\r\n\x0b_desc_unitsB\x0e\n\x0c_outer_widthB\x0e\n\x0c_outer_depthB\r\n\x0b_outer_unitB\t\n\x07_weightB\r\n\x0b_max_weightB\x0e\n\x0c_weight_unitB\x11\n\x0f_mounting_depthB\x0b\n\t_commentsB\x0f\n\r_outer_height\"\xc0\x08\n\x08RearPort\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\xc4\x03\n\x04type\x18\x05 \x01(\tB\xaf\x03\xfa\x42\xab\x03r\xa8\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\x06\x66\x63-apcR\x05\x66\x63-pcR\x06\x66\x63-upcR\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\tpositions\x18\x07 \x01(\x03H\x03R\tpositions\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\t \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\x0b \x03(\x0b\x32$.diode.v1.RearPort.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x0c \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x0c\n\n_positionsB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xd3\x03\n\x06Region\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12-\n\x06parent\x18\x03 \x01(\x0b\x32\x10.diode.v1.RegionH\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\x12G\n\rcustom_fields\x18\x06 \x03(\x0b\x32\".diode.v1.Region.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12\x39\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_descriptionB\x0b\n\t_comments\"\x8f\x03\n\x04Role\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x1b\n\x06weight\x18\x03 \x01(\x03H\x00R\x06weight\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\x12\x45\n\rcustom_fields\x18\x06 \x03(\x0b\x32 .diode.v1.Role.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_weightB\x0e\n\x0c_description\"\xc9\x03\n\x0bRouteTarget\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x06tenant\x18\x02 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x04 \x01(\tH\x02R\x08\x63omments\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.RouteTarget.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_descriptionB\x0b\n\t_comments\"\xbd\x07\n\x07Service\x12\x31\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceB\x02\x18\x01H\x01R\x06\x64\x65vice\x88\x01\x01\x12J\n\x0fvirtual_machine\x18\x02 \x01(\x0b\x32\x18.diode.v1.VirtualMachineB\x02\x18\x01H\x02R\x0evirtualMachine\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x36\n\x08protocol\x18\x04 \x01(\tB\x15\xfa\x42\x12r\x10R\x04sctpR\x03tcpR\x03udpH\x03R\x08protocol\x88\x01\x01\x12\x14\n\x05ports\x18\x05 \x03(\x03R\x05ports\x12%\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12H\n\rcustom_fields\x18\t \x03(\x0b\x32#.diode.v1.Service.CustomFieldsEntryR\x0c\x63ustomFields\x12\x35\n\x0bipaddresses\x18\n \x03(\x0b\x32\x13.diode.v1.IPAddressR\x0bipaddresses\x12\x44\n\x14parent_object_device\x18\x0b \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x12parentObjectDevice\x12N\n\x18parent_object_fhrp_group\x18\x0c \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x15parentObjectFhrpGroup\x12]\n\x1dparent_object_virtual_machine\x18\r \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x1aparentObjectVirtualMachine\x12\x39\n\x08metadata\x18\x0e \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x0f\n\rparent_objectB\t\n\x07_deviceB\x12\n\x10_virtual_machineB\x0b\n\t_protocolB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\x90\x08\n\x04Site\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12V\n\x06status\x18\x03 \x01(\tB9\xfa\x42\x36r4R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x07plannedR\x07retiredR\x07stagingH\x00R\x06status\x88\x01\x01\x12-\n\x06region\x18\x04 \x01(\x0b\x32\x10.diode.v1.RegionH\x01R\x06region\x88\x01\x01\x12.\n\x05group\x18\x05 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x02R\x05group\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x03R\x06tenant\x88\x01\x01\x12\x1f\n\x08\x66\x61\x63ility\x18\x07 \x01(\tH\x04R\x08\x66\x61\x63ility\x88\x01\x01\x12 \n\ttime_zone\x18\x08 \x01(\tH\x05R\x08timeZone\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\t \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12.\n\x10physical_address\x18\n \x01(\tH\x07R\x0fphysicalAddress\x88\x01\x01\x12.\n\x10shipping_address\x18\x0b \x01(\tH\x08R\x0fshippingAddress\x88\x01\x01\x12\x1f\n\x08latitude\x18\x0c \x01(\x01H\tR\x08latitude\x88\x01\x01\x12!\n\tlongitude\x18\r \x01(\x01H\nR\tlongitude\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\x0bR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x45\n\rcustom_fields\x18\x10 \x03(\x0b\x32 .diode.v1.Site.CustomFieldsEntryR\x0c\x63ustomFields\x12!\n\x04\x61sns\x18\x11 \x03(\x0b\x32\r.diode.v1.ASNR\x04\x61sns\x12\x39\n\x08metadata\x18\x12 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\t\n\x07_regionB\x08\n\x06_groupB\t\n\x07_tenantB\x0b\n\t_facilityB\x0c\n\n_time_zoneB\x0e\n\x0c_descriptionB\x13\n\x11_physical_addressB\x13\n\x11_shipping_addressB\x0b\n\t_latitudeB\x0c\n\n_longitudeB\x0b\n\t_comments\"\xdc\x03\n\tSiteGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x30\n\x06parent\x18\x03 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\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\x12J\n\rcustom_fields\x18\x06 \x03(\x0b\x32%.diode.v1.SiteGroup.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12\x39\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_descriptionB\x0b\n\t_comments\"\x91\x0f\n\x03Tag\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\x1b\n\x06weight\x18\x05 \x01(\x03H\x02R\x06weight\x88\x01\x01\x12\xa2\r\n\x0cobject_types\x18\x06 \x03(\tB\xfe\x0c\xfa\x42\xfa\x0c\x92\x01\xf6\x0c\"\xf3\x0cr\xf0\x0cR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1f\x63ircuits.circuitgroupassignmentR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x13\x65xtras.journalentryR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x19tenancy.contactassignmentR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkR\x0bobjectTypes\x12\x39\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadataB\x08\n\x06_colorB\x0e\n\x0c_descriptionB\t\n\x07_weight\"\xd5\x03\n\x06Tenant\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x30\n\x05group\x18\x03 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x05group\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12G\n\rcustom_fields\x18\x07 \x03(\x0b\x32\".diode.v1.Tenant.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xe2\x03\n\x0bTenantGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x32\n\x06parent\x18\x03 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\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\x12L\n\rcustom_fields\x18\x06 \x03(\x0b\x32\'.diode.v1.TenantGroup.CustomFieldsEntryR\x0c\x63ustomFields\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12\x39\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_descriptionB\x0b\n\t_comments\"\xb1\x06\n\x06Tunnel\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x38\n\x06status\x18\x02 \x01(\tB \xfa\x42\x1dr\x1bR\x06\x61\x63tiveR\x08\x64isabledR\x07plannedR\x06status\x12\x30\n\x05group\x18\x03 \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x05group\x88\x01\x01\x12v\n\rencapsulation\x18\x04 \x01(\tBP\xfa\x42MrKR\x03greR\x05ip-ipR\x0fipsec-transportR\x0cipsec-tunnelR\x04l2tpR\x07openvpnR\x04pptpR\twireguardR\rencapsulation\x12@\n\ripsec_profile\x18\x05 \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x01R\x0cipsecProfile\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12 \n\ttunnel_id\x18\x07 \x01(\x03H\x03R\x08tunnelId\x88\x01\x01\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\x12G\n\rcustom_fields\x18\x0b \x03(\x0b\x32\".diode.v1.Tunnel.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x0c \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x10\n\x0e_ipsec_profileB\t\n\x07_tenantB\x0c\n\n_tunnel_idB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xf5\x02\n\x0bTunnelGroup\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.TunnelGroup.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xc0?\n\x11TunnelTermination\x12(\n\x06tunnel\x18\x01 \x01(\x0b\x32\x10.diode.v1.TunnelR\x06tunnel\x12+\n\x04role\x18\x02 \x01(\tB\x17\xfa\x42\x14r\x12R\x03hubR\x04peerR\x05spokeR\x04role\x12\x38\n\x0ftermination_asn\x18\x03 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x0eterminationAsn\x12H\n\x15termination_asn_range\x18\x04 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x13terminationAsnRange\x12J\n\x15termination_aggregate\x18\x05 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x14terminationAggregate\x12>\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\x12Q\n\x18termination_custom_field\x18^ \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x16terminationCustomField\x12n\n#termination_custom_field_choice_set\x18_ \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\x1fterminationCustomFieldChoiceSet\x12T\n\x19termination_journal_entry\x18` \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x17terminationJournalEntry\x12\x64\n\x1ftermination_module_type_profile\x18\x61 \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x1cterminationModuleTypeProfile\x12N\n\x17termination_custom_link\x18\x62 \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x15terminationCustomLink\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\x12\x39\n\x08metadata\x18\x63 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xc0\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\x12\x39\n\x08metadata\x18\x0e \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xee\x06\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\x12-\n\x06tenant\x18\x0e \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x39\n\x08metadata\x18\x0f \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\t\n\x07_tenant\"\x9d\x01\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\x12\x39\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadataB\x0e\n\x0c_description\"\xfc\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\x12\x39\n\x08metadata\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadataB\x0e\n\x0c_description\"\x86\t\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\x12\x39\n\x08metadata\x18\x11 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\x90\x05\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\x12\x39\n\x08metadata\x18\x0b \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xf7\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\x12\x39\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\x9c\x06\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\x12\x39\n\x08metadata\x18\x0b \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\x9a\x04\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\x12\x39\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xa8\x03\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\x12\x39\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\x88\x06\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\x12\x39\n\x08metadata\x18\x0c \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xb8\x03\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\x12\x39\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\x92\t\n\x0eVirtualMachine\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x65\n\x06status\x18\x02 \x01(\tBH\xfa\x42\x45rCR\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x06\x66\x61iledR\x07offlineR\x06pausedR\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\x12\x39\n\x08metadata\x18\x13 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xdd\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\x12\x39\n\x08metadata\x18\x11 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\"\xf1\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\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12\x39\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_descriptionB\x0b\n\t_comments\"\xf4\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\x12\x39\n\x08metadata\x18\x0f \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_comments\"\xba&\n\x0b\x43ustomField\x12\x89\x01\n\x04type\x18\x01 \x01(\tBu\xfa\x42rrpR\x07\x62ooleanR\x04\x64\x61teR\x08\x64\x61tetimeR\x07\x64\x65\x63imalR\x07integerR\x04jsonR\x08longtextR\x0bmultiobjectR\x0bmultiselectR\x06objectR\x06selectR\x04textR\x03urlR\x04type\x12\xbe\x0e\n\x13related_object_type\x18\x02 \x01(\tB\x88\x0e\xfa\x42\x84\x0er\x81\x0eR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1f\x63ircuits.circuitgroupassignmentR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x0e\x64\x63im.cablepathR\x15\x64\x63im.cableterminationR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x12\x65xtras.customfieldR\x1b\x65xtras.customfieldchoicesetR\x11\x65xtras.customlinkR\x13\x65xtras.journalentryR\nextras.tagR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x18ipam.fhrpgroupassignmentR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x19tenancy.contactassignmentR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkH\x00R\x11relatedObjectType\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\"\n\ngroup_name\x18\x05 \x01(\tH\x02R\tgroupName\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08required\x18\x07 \x01(\x08H\x04R\x08required\x88\x01\x01\x12\x1b\n\x06unique\x18\x08 \x01(\x08H\x05R\x06unique\x88\x01\x01\x12(\n\rsearch_weight\x18\t \x01(\x03H\x06R\x0csearchWeight\x88\x01\x01\x12\x45\n\x0c\x66ilter_logic\x18\n \x01(\tB\x1d\xfa\x42\x1ar\x18R\x08\x64isabledR\x05\x65xactR\x05looseH\x07R\x0b\x66ilterLogic\x88\x01\x01\x12\x41\n\nui_visible\x18\x0b \x01(\tB\x1d\xfa\x42\x1ar\x18R\x06\x61lwaysR\x06hiddenR\x06if-setH\x08R\tuiVisible\x88\x01\x01\x12<\n\x0bui_editable\x18\x0c \x01(\tB\x16\xfa\x42\x13r\x11R\x06hiddenR\x02noR\x03yesH\tR\nuiEditable\x88\x01\x01\x12&\n\x0cis_cloneable\x18\r \x01(\x08H\nR\x0bisCloneable\x88\x01\x01\x12\x1d\n\x07\x64\x65\x66\x61ult\x18\x0e \x01(\tH\x0bR\x07\x64\x65\x66\x61ult\x88\x01\x01\x12\x37\n\x15related_object_filter\x18\x0f \x01(\tH\x0cR\x13relatedObjectFilter\x88\x01\x01\x12\x1b\n\x06weight\x18\x10 \x01(\x03H\rR\x06weight\x88\x01\x01\x12\x32\n\x12validation_minimum\x18\x11 \x01(\x01H\x0eR\x11validationMinimum\x88\x01\x01\x12\x32\n\x12validation_maximum\x18\x12 \x01(\x01H\x0fR\x11validationMaximum\x88\x01\x01\x12.\n\x10validation_regex\x18\x13 \x01(\tH\x10R\x0fvalidationRegex\x88\x01\x01\x12\x42\n\nchoice_set\x18\x14 \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x11R\tchoiceSet\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x15 \x01(\tH\x12R\x08\x63omments\x88\x01\x01\x12\xa2\r\n\x0cobject_types\x18\x16 \x03(\tB\xfe\x0c\xfa\x42\xfa\x0c\x92\x01\xf6\x0c\"\xf3\x0cr\xf0\x0cR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1f\x63ircuits.circuitgroupassignmentR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x13\x65xtras.journalentryR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x19tenancy.contactassignmentR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkR\x0bobjectTypes\x12\x39\n\x08metadata\x18\x17 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadataB\x16\n\x14_related_object_typeB\x08\n\x06_labelB\r\n\x0b_group_nameB\x0e\n\x0c_descriptionB\x0b\n\t_requiredB\t\n\x07_uniqueB\x10\n\x0e_search_weightB\x0f\n\r_filter_logicB\r\n\x0b_ui_visibleB\x0e\n\x0c_ui_editableB\x0f\n\r_is_cloneableB\n\n\x08_defaultB\x18\n\x16_related_object_filterB\t\n\x07_weightB\x15\n\x13_validation_minimumB\x15\n\x13_validation_maximumB\x13\n\x11_validation_regexB\r\n\x0b_choice_setB\x0b\n\t_comments\"\xed\x02\n\x14\x43ustomFieldChoiceSet\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\x12H\n\x0c\x62\x61se_choices\x18\x03 \x01(\tB \xfa\x42\x1dr\x1bR\x04IATAR\x08ISO_3166R\tUN_LOCODEH\x01R\x0b\x62\x61seChoices\x88\x01\x01\x12\x36\n\x14order_alphabetically\x18\x04 \x01(\x08H\x02R\x13orderAlphabetically\x88\x01\x01\x12#\n\rextra_choices\x18\x05 \x03(\tR\x0c\x65xtraChoices\x12\x39\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadataB\x0e\n\x0c_descriptionB\x0f\n\r_base_choicesB\x17\n\x15_order_alphabetically\"\x8c\x44\n\x0cJournalEntry\x12?\n\x13\x61ssigned_object_asn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x11\x61ssignedObjectAsn\x12O\n\x19\x61ssigned_object_asn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x16\x61ssignedObjectAsnRange\x12Q\n\x19\x61ssigned_object_aggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x17\x61ssignedObjectAggregate\x12\x45\n\x15\x61ssigned_object_cable\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x13\x61ssignedObjectCable\x12R\n\x1a\x61ssigned_object_cable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x17\x61ssignedObjectCablePath\x12g\n!assigned_object_cable_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x1e\x61ssignedObjectCableTermination\x12K\n\x17\x61ssigned_object_circuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x15\x61ssignedObjectCircuit\x12[\n\x1d\x61ssigned_object_circuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x1a\x61ssignedObjectCircuitGroup\x12z\n(assigned_object_circuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R$assignedObjectCircuitGroupAssignment\x12m\n#assigned_object_circuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R assignedObjectCircuitTermination\x12X\n\x1c\x61ssigned_object_circuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x19\x61ssignedObjectCircuitType\x12K\n\x17\x61ssigned_object_cluster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x15\x61ssignedObjectCluster\x12[\n\x1d\x61ssigned_object_cluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x1a\x61ssignedObjectClusterGroup\x12X\n\x1c\x61ssigned_object_cluster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x19\x61ssignedObjectClusterType\x12X\n\x1c\x61ssigned_object_console_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x19\x61ssignedObjectConsolePort\x12k\n#assigned_object_console_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1f\x61ssignedObjectConsoleServerPort\x12K\n\x17\x61ssigned_object_contact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x15\x61ssignedObjectContact\x12j\n\"assigned_object_contact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x1f\x61ssignedObjectContactAssignment\x12[\n\x1d\x61ssigned_object_contact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x1a\x61ssignedObjectContactGroup\x12X\n\x1c\x61ssigned_object_contact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x19\x61ssignedObjectContactRole\x12X\n\x1c\x61ssigned_object_custom_field\x18\x15 \x01(\x0b\x32\x15.diode.v1.CustomFieldH\x00R\x19\x61ssignedObjectCustomField\x12u\n\'assigned_object_custom_field_choice_set\x18\x16 \x01(\x0b\x32\x1e.diode.v1.CustomFieldChoiceSetH\x00R\"assignedObjectCustomFieldChoiceSet\x12H\n\x16\x61ssigned_object_device\x18\x17 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x14\x61ssignedObjectDevice\x12R\n\x1a\x61ssigned_object_device_bay\x18\x18 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x17\x61ssignedObjectDeviceBay\x12U\n\x1b\x61ssigned_object_device_role\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x18\x61ssignedObjectDeviceRole\x12U\n\x1b\x61ssigned_object_device_type\x18\x1a \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x18\x61ssignedObjectDeviceType\x12R\n\x1a\x61ssigned_object_fhrp_group\x18\x1b \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x17\x61ssignedObjectFhrpGroup\x12q\n%assigned_object_fhrp_group_assignment\x18\x1c \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R!assignedObjectFhrpGroupAssignment\x12R\n\x1a\x61ssigned_object_front_port\x18\x1d \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x17\x61ssignedObjectFrontPort\x12R\n\x1a\x61ssigned_object_ike_policy\x18\x1e \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x17\x61ssignedObjectIkePolicy\x12X\n\x1c\x61ssigned_object_ike_proposal\x18\x1f \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x19\x61ssignedObjectIkeProposal\x12R\n\x1a\x61ssigned_object_ip_address\x18 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x17\x61ssignedObjectIpAddress\x12L\n\x18\x61ssigned_object_ip_range\x18! \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x15\x61ssignedObjectIpRange\x12Y\n\x1d\x61ssigned_object_ip_sec_policy\x18\" \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x19\x61ssignedObjectIpSecPolicy\x12\\\n\x1e\x61ssigned_object_ip_sec_profile\x18# \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x1a\x61ssignedObjectIpSecProfile\x12_\n\x1f\x61ssigned_object_ip_sec_proposal\x18$ \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x1b\x61ssignedObjectIpSecProposal\x12Q\n\x19\x61ssigned_object_interface\x18% \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x17\x61ssignedObjectInterface\x12^\n\x1e\x61ssigned_object_inventory_item\x18& \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x1b\x61ssignedObjectInventoryItem\x12k\n#assigned_object_inventory_item_role\x18\' \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x1f\x61ssignedObjectInventoryItemRole\x12[\n\x1d\x61ssigned_object_journal_entry\x18( \x01(\x0b\x32\x16.diode.v1.JournalEntryH\x00R\x1a\x61ssignedObjectJournalEntry\x12\x45\n\x15\x61ssigned_object_l2vpn\x18) \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x13\x61ssignedObjectL2vpn\x12g\n!assigned_object_l2vpn_termination\x18* \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x1e\x61ssignedObjectL2vpnTermination\x12N\n\x18\x61ssigned_object_location\x18+ \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x16\x61ssignedObjectLocation\x12U\n\x1b\x61ssigned_object_mac_address\x18, \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x18\x61ssignedObjectMacAddress\x12Z\n\x1c\x61ssigned_object_manufacturer\x18- \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x1a\x61ssignedObjectManufacturer\x12H\n\x16\x61ssigned_object_module\x18. \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x14\x61ssignedObjectModule\x12R\n\x1a\x61ssigned_object_module_bay\x18/ \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x17\x61ssignedObjectModuleBay\x12U\n\x1b\x61ssigned_object_module_type\x18\x30 \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x18\x61ssignedObjectModuleType\x12k\n#assigned_object_module_type_profile\x18\x31 \x01(\x0b\x32\x1b.diode.v1.ModuleTypeProfileH\x00R\x1f\x61ssignedObjectModuleTypeProfile\x12N\n\x18\x61ssigned_object_platform\x18\x32 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x16\x61ssignedObjectPlatform\x12R\n\x1a\x61ssigned_object_power_feed\x18\x33 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x17\x61ssignedObjectPowerFeed\x12X\n\x1c\x61ssigned_object_power_outlet\x18\x34 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x19\x61ssignedObjectPowerOutlet\x12U\n\x1b\x61ssigned_object_power_panel\x18\x35 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x18\x61ssignedObjectPowerPanel\x12R\n\x1a\x61ssigned_object_power_port\x18\x36 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x17\x61ssignedObjectPowerPort\x12H\n\x16\x61ssigned_object_prefix\x18\x37 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x14\x61ssignedObjectPrefix\x12N\n\x18\x61ssigned_object_provider\x18\x38 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x16\x61ssignedObjectProvider\x12\x64\n assigned_object_provider_account\x18\x39 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x1d\x61ssignedObjectProviderAccount\x12\x64\n assigned_object_provider_network\x18: \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1d\x61ssignedObjectProviderNetwork\x12?\n\x13\x61ssigned_object_rir\x18; \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x11\x61ssignedObjectRir\x12\x42\n\x14\x61ssigned_object_rack\x18< \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x12\x61ssignedObjectRack\x12\x64\n assigned_object_rack_reservation\x18= \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x1d\x61ssignedObjectRackReservation\x12O\n\x19\x61ssigned_object_rack_role\x18> \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x16\x61ssignedObjectRackRole\x12O\n\x19\x61ssigned_object_rack_type\x18? \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x16\x61ssignedObjectRackType\x12O\n\x19\x61ssigned_object_rear_port\x18@ \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x16\x61ssignedObjectRearPort\x12H\n\x16\x61ssigned_object_region\x18\x41 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x14\x61ssignedObjectRegion\x12\x42\n\x14\x61ssigned_object_role\x18\x42 \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x12\x61ssignedObjectRole\x12X\n\x1c\x61ssigned_object_route_target\x18\x43 \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x19\x61ssignedObjectRouteTarget\x12K\n\x17\x61ssigned_object_service\x18\x44 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x15\x61ssignedObjectService\x12\x42\n\x14\x61ssigned_object_site\x18\x45 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x12\x61ssignedObjectSite\x12R\n\x1a\x61ssigned_object_site_group\x18\x46 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x17\x61ssignedObjectSiteGroup\x12?\n\x13\x61ssigned_object_tag\x18G \x01(\x0b\x32\r.diode.v1.TagH\x00R\x11\x61ssignedObjectTag\x12H\n\x16\x61ssigned_object_tenant\x18H \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x14\x61ssignedObjectTenant\x12X\n\x1c\x61ssigned_object_tenant_group\x18I \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x19\x61ssignedObjectTenantGroup\x12H\n\x16\x61ssigned_object_tunnel\x18J \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x14\x61ssignedObjectTunnel\x12X\n\x1c\x61ssigned_object_tunnel_group\x18K \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x19\x61ssignedObjectTunnelGroup\x12j\n\"assigned_object_tunnel_termination\x18L \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1f\x61ssignedObjectTunnelTermination\x12\x42\n\x14\x61ssigned_object_vlan\x18M \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x12\x61ssignedObjectVlan\x12R\n\x1a\x61ssigned_object_vlan_group\x18N \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x17\x61ssignedObjectVlanGroup\x12w\n\'assigned_object_vlan_translation_policy\x18O \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R#assignedObjectVlanTranslationPolicy\x12q\n%assigned_object_vlan_translation_rule\x18P \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R!assignedObjectVlanTranslationRule\x12X\n\x1c\x61ssigned_object_vm_interface\x18Q \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x19\x61ssignedObjectVmInterface\x12?\n\x13\x61ssigned_object_vrf\x18R \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x11\x61ssignedObjectVrf\x12\x61\n\x1f\x61ssigned_object_virtual_chassis\x18S \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x1c\x61ssignedObjectVirtualChassis\x12\x61\n\x1f\x61ssigned_object_virtual_circuit\x18T \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x1c\x61ssignedObjectVirtualCircuit\x12\x83\x01\n+assigned_object_virtual_circuit_termination\x18U \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\'assignedObjectVirtualCircuitTermination\x12n\n$assigned_object_virtual_circuit_type\x18V \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R assignedObjectVirtualCircuitType\x12t\n&assigned_object_virtual_device_context\x18W \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\"assignedObjectVirtualDeviceContext\x12X\n\x1c\x61ssigned_object_virtual_disk\x18X \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x19\x61ssignedObjectVirtualDisk\x12\x61\n\x1f\x61ssigned_object_virtual_machine\x18Y \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x1c\x61ssignedObjectVirtualMachine\x12X\n\x1c\x61ssigned_object_wireless_lan\x18Z \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x19\x61ssignedObjectWirelessLan\x12h\n\"assigned_object_wireless_lan_group\x18[ \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x1e\x61ssignedObjectWirelessLanGroup\x12[\n\x1d\x61ssigned_object_wireless_link\x18\\ \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x1a\x61ssignedObjectWirelessLink\x12U\n\x1b\x61ssigned_object_custom_link\x18\x61 \x01(\x0b\x32\x14.diode.v1.CustomLinkH\x00R\x18\x61ssignedObjectCustomLink\x12>\n\x04kind\x18] \x01(\tB%\xfa\x42\"r R\x06\x64\x61ngerR\x04infoR\x07successR\x07warningH\x01R\x04kind\x88\x01\x01\x12\x1a\n\x08\x63omments\x18^ \x01(\tR\x08\x63omments\x12!\n\x04tags\x18_ \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18` \x03(\x0b\x32(.diode.v1.JournalEntry.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x62 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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\x11\n\x0f\x61ssigned_objectB\x07\n\x05_kind\"\xc3\x03\n\x11ModuleTypeProfile\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\x1b\n\x06schema\x18\x03 \x01(\tH\x01R\x06schema\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x04 \x01(\tH\x02R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18\x06 \x03(\x0b\x32-.diode.v1.ModuleTypeProfile.CustomFieldsEntryR\x0c\x63ustomFields\x12\x39\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadata\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_schemaB\x0b\n\t_comments\"\xe3\x10\n\nCustomLink\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1d\n\x07\x65nabled\x18\x02 \x01(\x08H\x00R\x07\x65nabled\x88\x01\x01\x12\x1b\n\tlink_text\x18\x03 \x01(\tR\x08linkText\x12\x19\n\x08link_url\x18\x04 \x01(\tR\x07linkUrl\x12\x1b\n\x06weight\x18\x05 \x01(\x03H\x01R\x06weight\x88\x01\x01\x12\"\n\ngroup_name\x18\x06 \x01(\tH\x02R\tgroupName\x88\x01\x01\x12\x9a\x01\n\x0c\x62utton_class\x18\x07 \x01(\tBr\xfa\x42ormR\x05\x62lackR\x04\x62lueR\x04\x63yanR\x07\x64\x65\x66\x61ultR\nghost-darkR\x04grayR\x05greenR\x06indigoR\x06orangeR\x04pinkR\x06purpleR\x03redR\x04tealR\x05whiteR\x06yellowH\x03R\x0b\x62uttonClass\x88\x01\x01\x12\"\n\nnew_window\x18\x08 \x01(\x08H\x04R\tnewWindow\x88\x01\x01\x12\xe6\x0c\n\x0cobject_types\x18\t \x03(\tB\xc2\x0c\xfa\x42\xbe\x0c\x92\x01\xba\x0c\"\xb7\x0cr\xb4\x0cR\x10\x63ircuits.circuitR\x15\x63ircuits.circuitgroupR\x1b\x63ircuits.circuitterminationR\x14\x63ircuits.circuittypeR\x11\x63ircuits.providerR\x18\x63ircuits.provideraccountR\x18\x63ircuits.providernetworkR\x17\x63ircuits.virtualcircuitR\"circuits.virtualcircuitterminationR\x1b\x63ircuits.virtualcircuittypeR\ndcim.cableR\x10\x64\x63im.consoleportR\x16\x64\x63im.consoleserverportR\x0b\x64\x63im.deviceR\x0e\x64\x63im.devicebayR\x0f\x64\x63im.deviceroleR\x0f\x64\x63im.devicetypeR\x0e\x64\x63im.frontportR\x0e\x64\x63im.interfaceR\x12\x64\x63im.inventoryitemR\x16\x64\x63im.inventoryitemroleR\rdcim.locationR\x0f\x64\x63im.macaddressR\x11\x64\x63im.manufacturerR\x0b\x64\x63im.moduleR\x0e\x64\x63im.modulebayR\x0f\x64\x63im.moduletypeR\x16\x64\x63im.moduletypeprofileR\rdcim.platformR\x0e\x64\x63im.powerfeedR\x10\x64\x63im.poweroutletR\x0f\x64\x63im.powerpanelR\x0e\x64\x63im.powerportR\tdcim.rackR\x14\x64\x63im.rackreservationR\rdcim.rackroleR\rdcim.racktypeR\rdcim.rearportR\x0b\x64\x63im.regionR\tdcim.siteR\x0e\x64\x63im.sitegroupR\x13\x64\x63im.virtualchassisR\x19\x64\x63im.virtualdevicecontextR\x13\x65xtras.journalentryR\x0eipam.aggregateR\x08ipam.asnR\ripam.asnrangeR\x0eipam.fhrpgroupR\x0eipam.ipaddressR\x0cipam.iprangeR\x0bipam.prefixR\x08ipam.rirR\tipam.roleR\x10ipam.routetargetR\x0cipam.serviceR\tipam.vlanR\x0eipam.vlangroupR\x1aipam.vlantranslationpolicyR\x18ipam.vlantranslationruleR\x08ipam.vrfR\x0ftenancy.contactR\x14tenancy.contactgroupR\x13tenancy.contactroleR\x0etenancy.tenantR\x13tenancy.tenantgroupR\x16virtualization.clusterR\x1bvirtualization.clustergroupR\x1avirtualization.clustertypeR\x1avirtualization.virtualdiskR\x1dvirtualization.virtualmachineR\x1avirtualization.vminterfaceR\rvpn.ikepolicyR\x0fvpn.ikeproposalR\x0fvpn.ipsecpolicyR\x10vpn.ipsecprofileR\x11vpn.ipsecproposalR\tvpn.l2vpnR\x14vpn.l2vpnterminationR\nvpn.tunnelR\x0fvpn.tunnelgroupR\x15vpn.tunnelterminationR\x14wireless.wirelesslanR\x19wireless.wirelesslangroupR\x15wireless.wirelesslinkR\x0bobjectTypes\x12\x39\n\x08metadata\x18\n \x01(\x0b\x32\x17.google.protobuf.StructB\x04\x88\xb5\x18\x00R\x08metadataB\n\n\x08_enabledB\t\n\x07_weightB\r\n\x0b_group_nameB\x0f\n\r_button_classB\r\n\x0b_new_window2N\n\x0fIngesterService\x12;\n\x06Ingest\x12\x17.diode.v1.IngestRequest\x1a\x18.diode.v1.IngestResponse:J\n\x10netbox_supported\x12\x1d.google.protobuf.FieldOptions\x18\xd1\x86\x03 \x01(\x08R\x0fnetboxSupportedB5Z3github.com/netboxlabs/diode-sdk-go/diode/v1/diodepbb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -43,10 +44,16 @@ _globals['_INGESTREQUEST'].fields_by_name['sdk_version']._serialized_options = b'\372B\031r\0272\025^(\\d)+\\.(\\d)+\\.(\\d)+$' _globals['_ASN_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_ASN_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_ASN'].fields_by_name['metadata']._loaded_options = None + _globals['_ASN'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_ASNRANGE_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_ASNRANGE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_ASNRANGE'].fields_by_name['metadata']._loaded_options = None + _globals['_ASNRANGE'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_AGGREGATE_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_AGGREGATE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_AGGREGATE'].fields_by_name['metadata']._loaded_options = None + _globals['_AGGREGATE'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_CABLE_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_CABLE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' _globals['_CABLE'].fields_by_name['type']._loaded_options = None @@ -55,56 +62,90 @@ _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['_CABLE'].fields_by_name['metadata']._loaded_options = None + _globals['_CABLE'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' + _globals['_CABLEPATH'].fields_by_name['metadata']._loaded_options = None + _globals['_CABLEPATH'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _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['_CABLETERMINATION'].fields_by_name['metadata']._loaded_options = None + _globals['_CABLETERMINATION'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _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['_CIRCUIT'].fields_by_name['metadata']._loaded_options = None + _globals['_CIRCUIT'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_CIRCUITGROUP_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_CIRCUITGROUP_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CIRCUITGROUP'].fields_by_name['metadata']._loaded_options = None + _globals['_CIRCUITGROUP'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _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['_CIRCUITGROUPASSIGNMENT'].fields_by_name['metadata']._loaded_options = None + _globals['_CIRCUITGROUPASSIGNMENT'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _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['_CIRCUITTERMINATION'].fields_by_name['metadata']._loaded_options = None + _globals['_CIRCUITTERMINATION'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_CIRCUITTYPE_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_CIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CIRCUITTYPE'].fields_by_name['metadata']._loaded_options = None + _globals['_CIRCUITTYPE'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _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['_CLUSTER'].fields_by_name['metadata']._loaded_options = None + _globals['_CLUSTER'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_CLUSTERGROUP_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_CLUSTERGROUP_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CLUSTERGROUP'].fields_by_name['metadata']._loaded_options = None + _globals['_CLUSTERGROUP'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_CLUSTERTYPE_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_CLUSTERTYPE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CLUSTERTYPE'].fields_by_name['metadata']._loaded_options = None + _globals['_CLUSTERTYPE'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _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['_CONSOLEPORT'].fields_by_name['metadata']._loaded_options = None + _globals['_CONSOLEPORT'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _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['_CONSOLESERVERPORT'].fields_by_name['metadata']._loaded_options = None + _globals['_CONSOLESERVERPORT'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_CONTACT_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_CONTACT_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' _globals['_CONTACT'].fields_by_name['group']._loaded_options = None _globals['_CONTACT'].fields_by_name['group']._serialized_options = b'\030\001' + _globals['_CONTACT'].fields_by_name['metadata']._loaded_options = None + _globals['_CONTACT'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _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['_CONTACTASSIGNMENT'].fields_by_name['metadata']._loaded_options = None + _globals['_CONTACTASSIGNMENT'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_CONTACTGROUP_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_CONTACTGROUP_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CONTACTGROUP'].fields_by_name['metadata']._loaded_options = None + _globals['_CONTACTGROUP'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_CONTACTROLE_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_CONTACTROLE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CONTACTROLE'].fields_by_name['metadata']._loaded_options = None + _globals['_CONTACTROLE'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_DEVICE_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_DEVICE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' _globals['_DEVICE'].fields_by_name['face']._loaded_options = None @@ -113,10 +154,16 @@ _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['_DEVICE'].fields_by_name['metadata']._loaded_options = None + _globals['_DEVICE'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_DEVICEBAY_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_DEVICEBAY_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_DEVICEBAY'].fields_by_name['metadata']._loaded_options = None + _globals['_DEVICEBAY'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_DEVICEROLE_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_DEVICEROLE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_DEVICEROLE'].fields_by_name['metadata']._loaded_options = None + _globals['_DEVICEROLE'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_DEVICETYPE_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_DEVICETYPE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' _globals['_DEVICETYPE'].fields_by_name['subdevice_role']._loaded_options = None @@ -125,22 +172,32 @@ _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['_DEVICETYPE'].fields_by_name['metadata']._loaded_options = None + _globals['_DEVICETYPE'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _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['_FHRPGROUP'].fields_by_name['metadata']._loaded_options = None + _globals['_FHRPGROUP'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' + _globals['_FHRPGROUPASSIGNMENT'].fields_by_name['metadata']._loaded_options = None + _globals['_FHRPGROUPASSIGNMENT'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _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\253\003r\250\003R\t110-punchR\0044p2cR\0044p4cR\0046p2cR\0046p4cR\0046p6cR\0048p2cR\0048p4cR\0048p6cR\0048p8cR\003bncR\002csR\001fR\002fcR\006fc-apcR\005fc-pcR\006fc-upcR\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['_FRONTPORT'].fields_by_name['metadata']._loaded_options = None + _globals['_FRONTPORT'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _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['_IKEPOLICY'].fields_by_name['metadata']._loaded_options = None + _globals['_IKEPOLICY'].fields_by_name['metadata']._serialized_options = b'\210\265\030\000' _globals['_IKEPROPOSAL_CUSTOMFIELDSENTRY']._loaded_options = None _globals['_IKEPROPOSAL_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' _globals['_IKEPROPOSAL'].fields_by_name['authentication_method']._loaded_options = None @@ -151,30 +208,42 @@ _globals['_IKEPROPOSAL'].fields_by_name['authentication_algorithm']._serialized_options = b'\372B>rr None: ... + 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]] = ..., custom_field: _Optional[_Union[CustomField, _Mapping]] = ..., custom_field_choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., journal_entry: _Optional[_Union[JournalEntry, _Mapping]] = ..., module_type_profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., custom_link: _Optional[_Union[CustomLink, _Mapping]] = ...) -> None: ... class IngestRequest(_message.Message): __slots__ = ("stream", "entities", "id", "producer_app_name", "producer_app_version", "sdk_name", "sdk_version", "metadata") @@ -229,7 +230,7 @@ class IngestResponse(_message.Message): def __init__(self, errors: _Optional[_Iterable[str]] = ...) -> None: ... class ASN(_message.Message): - __slots__ = ("asn", "rir", "tenant", "description", "comments", "tags", "custom_fields") + __slots__ = ("asn", "rir", "tenant", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -244,6 +245,7 @@ class ASN(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] asn: int rir: RIR tenant: Tenant @@ -251,10 +253,11 @@ class ASN(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class ASNRange(_message.Message): - __slots__ = ("name", "slug", "rir", "start", "end", "tenant", "description", "tags", "custom_fields") + __slots__ = ("name", "slug", "rir", "start", "end", "tenant", "description", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -271,6 +274,7 @@ class ASNRange(_message.Message): DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str slug: str rir: RIR @@ -280,10 +284,11 @@ class ASNRange(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class Aggregate(_message.Message): - __slots__ = ("prefix", "rir", "tenant", "date_added", "description", "comments", "tags", "custom_fields") + __slots__ = ("prefix", "rir", "tenant", "date_added", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -299,6 +304,7 @@ class Aggregate(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] prefix: str rir: RIR tenant: Tenant @@ -307,10 +313,11 @@ class Aggregate(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class Cable(_message.Message): - __slots__ = ("type", "a_terminations", "b_terminations", "status", "tenant", "label", "color", "length", "length_unit", "description", "comments", "tags", "custom_fields") + __slots__ = ("type", "a_terminations", "b_terminations", "status", "tenant", "label", "color", "length", "length_unit", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -331,6 +338,7 @@ class Cable(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] type: str a_terminations: _containers.RepeatedCompositeFieldContainer[GenericObject] b_terminations: _containers.RepeatedCompositeFieldContainer[GenericObject] @@ -344,20 +352,23 @@ class Cable(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class CablePath(_message.Message): - __slots__ = ("is_active", "is_complete", "is_split") + __slots__ = ("is_active", "is_complete", "is_split", "metadata") IS_ACTIVE_FIELD_NUMBER: _ClassVar[int] IS_COMPLETE_FIELD_NUMBER: _ClassVar[int] IS_SPLIT_FIELD_NUMBER: _ClassVar[int] + METADATA_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: ... + metadata: _struct_pb2.Struct + def __init__(self, is_active: bool = ..., is_complete: bool = ..., is_split: bool = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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") + __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", "metadata") CABLE_FIELD_NUMBER: _ClassVar[int] CABLE_END_FIELD_NUMBER: _ClassVar[int] TERMINATION_CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] @@ -369,6 +380,7 @@ class CableTermination(_message.Message): TERMINATION_POWER_OUTLET_FIELD_NUMBER: _ClassVar[int] TERMINATION_POWER_PORT_FIELD_NUMBER: _ClassVar[int] TERMINATION_REAR_PORT_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] cable: Cable cable_end: str termination_circuit_termination: CircuitTermination @@ -380,10 +392,11 @@ class CableTermination(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _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") + __slots__ = ("cid", "provider", "provider_account", "type", "status", "tenant", "install_date", "termination_date", "commit_rate", "description", "distance", "distance_unit", "comments", "tags", "assignments", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -407,6 +420,7 @@ class Circuit(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] ASSIGNMENTS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] cid: str provider: Provider provider_account: ProviderAccount @@ -423,10 +437,11 @@ class Circuit(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class CircuitGroup(_message.Message): - __slots__ = ("name", "slug", "description", "tenant", "tags", "custom_fields") + __slots__ = ("name", "slug", "description", "tenant", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -440,30 +455,34 @@ class CircuitGroup(_message.Message): TENANT_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class CircuitGroupAssignment(_message.Message): - __slots__ = ("group", "member_circuit", "member_virtual_circuit", "priority", "tags") + __slots__ = ("group", "member_circuit", "member_virtual_circuit", "priority", "tags", "metadata") 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] + METADATA_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: ... + metadata: _struct_pb2.Struct + 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]]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _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") + __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", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -486,6 +505,7 @@ class CircuitTermination(_message.Message): MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] circuit: Circuit term_side: str termination_location: Location @@ -501,10 +521,11 @@ class CircuitTermination(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class CircuitType(_message.Message): - __slots__ = ("name", "slug", "color", "description", "tags", "custom_fields") + __slots__ = ("name", "slug", "color", "description", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -518,16 +539,18 @@ class CircuitType(_message.Message): DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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") + __slots__ = ("name", "type", "group", "status", "tenant", "scope_location", "scope_region", "scope_site", "scope_site_group", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -548,6 +571,7 @@ class Cluster(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str type: ClusterType group: ClusterGroup @@ -561,10 +585,11 @@ class Cluster(_message.Message): comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class ClusterGroup(_message.Message): - __slots__ = ("name", "slug", "description", "tags", "custom_fields") + __slots__ = ("name", "slug", "description", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -577,15 +602,17 @@ class ClusterGroup(_message.Message): DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_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: ... + metadata: _struct_pb2.Struct + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class ClusterType(_message.Message): - __slots__ = ("name", "slug", "description", "tags", "custom_fields") + __slots__ = ("name", "slug", "description", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -598,15 +625,17 @@ class ClusterType(_message.Message): DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_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: ... + metadata: _struct_pb2.Struct + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class ConsolePort(_message.Message): - __slots__ = ("device", "module", "name", "label", "type", "speed", "description", "mark_connected", "tags", "custom_fields") + __slots__ = ("device", "module", "name", "label", "type", "speed", "description", "mark_connected", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -624,6 +653,7 @@ class ConsolePort(_message.Message): MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] device: Device module: Module name: str @@ -634,10 +664,11 @@ class ConsolePort(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class ConsoleServerPort(_message.Message): - __slots__ = ("device", "module", "name", "label", "type", "speed", "description", "mark_connected", "tags", "custom_fields") + __slots__ = ("device", "module", "name", "label", "type", "speed", "description", "mark_connected", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -655,6 +686,7 @@ class ConsoleServerPort(_message.Message): MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] device: Device module: Module name: str @@ -665,10 +697,11 @@ class ConsoleServerPort(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class Contact(_message.Message): - __slots__ = ("group", "name", "title", "phone", "email", "address", "link", "description", "comments", "tags", "custom_fields", "groups") + __slots__ = ("group", "name", "title", "phone", "email", "address", "link", "description", "comments", "tags", "custom_fields", "groups", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -688,6 +721,7 @@ class Contact(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] GROUPS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] group: ContactGroup name: str title: str @@ -700,10 +734,11 @@ class Contact(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] groups: _containers.RepeatedCompositeFieldContainer[ContactGroup] - 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]] = ..., groups: _Optional[_Iterable[_Union[ContactGroup, _Mapping]]] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., groups: _Optional[_Iterable[_Union[ContactGroup, _Mapping]]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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", "object_custom_field", "object_custom_field_choice_set", "object_journal_entry", "object_module_type_profile", "object_custom_link", "contact", "role", "priority", "tags", "custom_fields") + __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_custom_field", "object_custom_field_choice_set", "object_journal_entry", "object_module_type_profile", "object_custom_link", "contact", "role", "priority", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -809,6 +844,7 @@ class ContactAssignment(_message.Message): PRIORITY_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] object_asn: ASN object_asn_range: ASNRange object_aggregate: Aggregate @@ -907,10 +943,11 @@ class ContactAssignment(_message.Message): 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]] = ..., object_custom_field: _Optional[_Union[CustomField, _Mapping]] = ..., object_custom_field_choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., object_journal_entry: _Optional[_Union[JournalEntry, _Mapping]] = ..., object_module_type_profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., object_custom_link: _Optional[_Union[CustomLink, _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: ... + metadata: _struct_pb2.Struct + 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]] = ..., object_custom_field: _Optional[_Union[CustomField, _Mapping]] = ..., object_custom_field_choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., object_journal_entry: _Optional[_Union[JournalEntry, _Mapping]] = ..., object_module_type_profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., object_custom_link: _Optional[_Union[CustomLink, _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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class ContactGroup(_message.Message): - __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields", "comments") + __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields", "comments", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -925,6 +962,7 @@ class ContactGroup(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str slug: str parent: ContactGroup @@ -932,10 +970,11 @@ class ContactGroup(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] comments: str - 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]] = ..., comments: _Optional[str] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., comments: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class ContactRole(_message.Message): - __slots__ = ("name", "slug", "description", "tags", "custom_fields") + __slots__ = ("name", "slug", "description", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -948,12 +987,14 @@ class ContactRole(_message.Message): DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_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: ... + metadata: _struct_pb2.Struct + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class CustomFieldObjectReference(_message.Message): __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", "custom_field", "custom_field_choice_set", "journal_entry", "module_type_profile", "custom_link") @@ -1176,7 +1217,7 @@ class CustomFieldValue(_message.Message): 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") + __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", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1211,6 +1252,7 @@ class Device(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str device_type: DeviceType role: DeviceRole @@ -1238,10 +1280,11 @@ class Device(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class DeviceBay(_message.Message): - __slots__ = ("device", "name", "label", "description", "installed_device", "tags", "custom_fields") + __slots__ = ("device", "name", "label", "description", "installed_device", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1256,6 +1299,7 @@ class DeviceBay(_message.Message): INSTALLED_DEVICE_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] device: Device name: str label: str @@ -1263,10 +1307,11 @@ class DeviceBay(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class DeviceRole(_message.Message): - __slots__ = ("name", "slug", "color", "vm_role", "description", "tags", "custom_fields", "parent", "comments") + __slots__ = ("name", "slug", "color", "vm_role", "description", "tags", "custom_fields", "parent", "comments", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1283,6 +1328,7 @@ class DeviceRole(_message.Message): CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] PARENT_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str slug: str color: str @@ -1292,10 +1338,11 @@ class DeviceRole(_message.Message): custom_fields: _containers.MessageMap[str, CustomFieldValue] parent: DeviceRole comments: str - 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]] = ..., parent: _Optional[_Union[DeviceRole, _Mapping]] = ..., comments: _Optional[str] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., parent: _Optional[_Union[DeviceRole, _Mapping]] = ..., comments: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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") + __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", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1319,6 +1366,7 @@ class DeviceType(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] manufacturer: Manufacturer default_platform: Platform model: str @@ -1335,10 +1383,11 @@ class DeviceType(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class FHRPGroup(_message.Message): - __slots__ = ("name", "protocol", "group_id", "auth_type", "auth_key", "description", "comments", "tags", "custom_fields") + __slots__ = ("name", "protocol", "group_id", "auth_type", "auth_key", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1355,6 +1404,7 @@ class FHRPGroup(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str protocol: str group_id: int @@ -1364,10 +1414,11 @@ class FHRPGroup(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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", "interface_custom_field", "interface_custom_field_choice_set", "interface_journal_entry", "interface_module_type_profile", "interface_custom_link", "priority") + __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", "interface_custom_field", "interface_custom_field_choice_set", "interface_journal_entry", "interface_module_type_profile", "interface_custom_link", "priority", "metadata") GROUP_FIELD_NUMBER: _ClassVar[int] INTERFACE_ASN_FIELD_NUMBER: _ClassVar[int] INTERFACE_ASN_RANGE_FIELD_NUMBER: _ClassVar[int] @@ -1463,6 +1514,7 @@ class FHRPGroupAssignment(_message.Message): INTERFACE_MODULE_TYPE_PROFILE_FIELD_NUMBER: _ClassVar[int] INTERFACE_CUSTOM_LINK_FIELD_NUMBER: _ClassVar[int] PRIORITY_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] group: FHRPGroup interface_asn: ASN interface_asn_range: ASNRange @@ -1558,10 +1610,11 @@ class FHRPGroupAssignment(_message.Message): interface_module_type_profile: ModuleTypeProfile interface_custom_link: CustomLink 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]] = ..., interface_custom_field: _Optional[_Union[CustomField, _Mapping]] = ..., interface_custom_field_choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., interface_journal_entry: _Optional[_Union[JournalEntry, _Mapping]] = ..., interface_module_type_profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., interface_custom_link: _Optional[_Union[CustomLink, _Mapping]] = ..., priority: _Optional[int] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., interface_custom_field: _Optional[_Union[CustomField, _Mapping]] = ..., interface_custom_field_choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., interface_journal_entry: _Optional[_Union[JournalEntry, _Mapping]] = ..., interface_module_type_profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., interface_custom_link: _Optional[_Union[CustomLink, _Mapping]] = ..., priority: _Optional[int] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class FrontPort(_message.Message): - __slots__ = ("device", "module", "name", "label", "type", "color", "rear_port", "rear_port_position", "description", "mark_connected", "tags", "custom_fields") + __slots__ = ("device", "module", "name", "label", "type", "color", "rear_port", "rear_port_position", "description", "mark_connected", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1581,6 +1634,7 @@ class FrontPort(_message.Message): MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] device: Device module: Module name: str @@ -1593,7 +1647,8 @@ class FrontPort(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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_custom_field", "object_custom_field_choice_set", "object_journal_entry", "object_module_type_profile", "object_custom_link") @@ -1786,7 +1841,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]] = ..., object_custom_field: _Optional[_Union[CustomField, _Mapping]] = ..., object_custom_field_choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., object_journal_entry: _Optional[_Union[JournalEntry, _Mapping]] = ..., object_module_type_profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., object_custom_link: _Optional[_Union[CustomLink, _Mapping]] = ...) -> None: ... class IKEPolicy(_message.Message): - __slots__ = ("name", "description", "version", "mode", "preshared_key", "comments", "tags", "custom_fields", "proposals") + __slots__ = ("name", "description", "version", "mode", "preshared_key", "comments", "tags", "custom_fields", "proposals", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1803,6 +1858,7 @@ class IKEPolicy(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] PROPOSALS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str description: str version: int @@ -1812,10 +1868,11 @@ class IKEPolicy(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] 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: ... + metadata: _struct_pb2.Struct + 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]]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class IKEProposal(_message.Message): - __slots__ = ("name", "description", "authentication_method", "encryption_algorithm", "authentication_algorithm", "group", "sa_lifetime", "comments", "tags", "custom_fields") + __slots__ = ("name", "description", "authentication_method", "encryption_algorithm", "authentication_algorithm", "group", "sa_lifetime", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1833,6 +1890,7 @@ class IKEProposal(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str description: str authentication_method: str @@ -1843,10 +1901,11 @@ class IKEProposal(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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") + __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", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1868,6 +1927,7 @@ class IPAddress(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] address: str vrf: VRF tenant: Tenant @@ -1882,10 +1942,11 @@ class IPAddress(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class IPRange(_message.Message): - __slots__ = ("start_address", "end_address", "vrf", "tenant", "status", "role", "description", "comments", "tags", "mark_utilized", "custom_fields", "mark_populated") + __slots__ = ("start_address", "end_address", "vrf", "tenant", "status", "role", "description", "comments", "tags", "mark_utilized", "custom_fields", "mark_populated", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1905,6 +1966,7 @@ class IPRange(_message.Message): MARK_UTILIZED_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] MARK_POPULATED_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] start_address: str end_address: str vrf: VRF @@ -1917,10 +1979,11 @@ class IPRange(_message.Message): mark_utilized: bool custom_fields: _containers.MessageMap[str, CustomFieldValue] mark_populated: bool - 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]] = ..., mark_populated: bool = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., mark_populated: bool = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class IPSecPolicy(_message.Message): - __slots__ = ("name", "description", "pfs_group", "comments", "tags", "custom_fields", "proposals") + __slots__ = ("name", "description", "pfs_group", "comments", "tags", "custom_fields", "proposals", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1935,6 +1998,7 @@ class IPSecPolicy(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] PROPOSALS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str description: str pfs_group: int @@ -1942,10 +2006,11 @@ class IPSecPolicy(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] 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: ... + metadata: _struct_pb2.Struct + 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]]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class IPSecProfile(_message.Message): - __slots__ = ("name", "description", "mode", "ike_policy", "ipsec_policy", "comments", "tags", "custom_fields") + __slots__ = ("name", "description", "mode", "ike_policy", "ipsec_policy", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1961,6 +2026,7 @@ class IPSecProfile(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str description: str mode: str @@ -1969,10 +2035,11 @@ class IPSecProfile(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class IPSecProposal(_message.Message): - __slots__ = ("name", "description", "encryption_algorithm", "authentication_algorithm", "sa_lifetime_seconds", "sa_lifetime_data", "comments", "tags", "custom_fields") + __slots__ = ("name", "description", "encryption_algorithm", "authentication_algorithm", "sa_lifetime_seconds", "sa_lifetime_data", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1989,6 +2056,7 @@ class IPSecProposal(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str description: str encryption_algorithm: str @@ -1998,10 +2066,11 @@ class IPSecProposal(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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", "vdcs", "tagged_vlans", "wireless_lans") + __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", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2043,6 +2112,7 @@ class Interface(_message.Message): VDCS_FIELD_NUMBER: _ClassVar[int] TAGGED_VLANS_FIELD_NUMBER: _ClassVar[int] WIRELESS_LANS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] device: Device module: Module name: str @@ -2077,10 +2147,11 @@ class Interface(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _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") + __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", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2109,6 +2180,7 @@ class InventoryItem(_message.Message): COMPONENT_REAR_PORT_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] device: Device parent: InventoryItem name: str @@ -2130,10 +2202,11 @@ class InventoryItem(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class InventoryItemRole(_message.Message): - __slots__ = ("name", "slug", "color", "description", "tags", "custom_fields") + __slots__ = ("name", "slug", "color", "description", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2147,16 +2220,18 @@ class InventoryItemRole(_message.Message): DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class L2VPN(_message.Message): - __slots__ = ("identifier", "name", "slug", "type", "description", "comments", "tenant", "tags", "custom_fields", "import_targets", "export_targets", "status") + __slots__ = ("identifier", "name", "slug", "type", "description", "comments", "tenant", "tags", "custom_fields", "import_targets", "export_targets", "status", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2176,6 +2251,7 @@ class L2VPN(_message.Message): IMPORT_TARGETS_FIELD_NUMBER: _ClassVar[int] EXPORT_TARGETS_FIELD_NUMBER: _ClassVar[int] STATUS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] identifier: int name: str slug: str @@ -2188,10 +2264,11 @@ class L2VPN(_message.Message): import_targets: _containers.RepeatedCompositeFieldContainer[RouteTarget] export_targets: _containers.RepeatedCompositeFieldContainer[RouteTarget] status: str - 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]]] = ..., status: _Optional[str] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]]] = ..., status: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class L2VPNTermination(_message.Message): - __slots__ = ("l2vpn", "assigned_object_interface", "assigned_object_vlan", "assigned_object_vm_interface", "assigned_object_asn", "assigned_object_asn_range", "assigned_object_aggregate", "assigned_object_cable", "assigned_object_cable_path", "assigned_object_cable_termination", "assigned_object_circuit", "assigned_object_circuit_group", "assigned_object_circuit_group_assignment", "assigned_object_circuit_termination", "assigned_object_circuit_type", "assigned_object_cluster", "assigned_object_cluster_group", "assigned_object_cluster_type", "assigned_object_console_port", "assigned_object_console_server_port", "assigned_object_contact", "assigned_object_contact_assignment", "assigned_object_contact_group", "assigned_object_contact_role", "assigned_object_custom_field", "assigned_object_custom_field_choice_set", "assigned_object_device", "assigned_object_device_bay", "assigned_object_device_role", "assigned_object_device_type", "assigned_object_fhrp_group", "assigned_object_fhrp_group_assignment", "assigned_object_front_port", "assigned_object_ike_policy", "assigned_object_ike_proposal", "assigned_object_ip_address", "assigned_object_ip_range", "assigned_object_ip_sec_policy", "assigned_object_ip_sec_profile", "assigned_object_ip_sec_proposal", "assigned_object_inventory_item", "assigned_object_inventory_item_role", "assigned_object_journal_entry", "assigned_object_l2vpn", "assigned_object_l2vpn_termination", "assigned_object_location", "assigned_object_mac_address", "assigned_object_manufacturer", "assigned_object_module", "assigned_object_module_bay", "assigned_object_module_type", "assigned_object_module_type_profile", "assigned_object_platform", "assigned_object_power_feed", "assigned_object_power_outlet", "assigned_object_power_panel", "assigned_object_power_port", "assigned_object_prefix", "assigned_object_provider", "assigned_object_provider_account", "assigned_object_provider_network", "assigned_object_rir", "assigned_object_rack", "assigned_object_rack_reservation", "assigned_object_rack_role", "assigned_object_rack_type", "assigned_object_rear_port", "assigned_object_region", "assigned_object_role", "assigned_object_route_target", "assigned_object_service", "assigned_object_site", "assigned_object_site_group", "assigned_object_tag", "assigned_object_tenant", "assigned_object_tenant_group", "assigned_object_tunnel", "assigned_object_tunnel_group", "assigned_object_tunnel_termination", "assigned_object_vlan_group", "assigned_object_vlan_translation_policy", "assigned_object_vlan_translation_rule", "assigned_object_vrf", "assigned_object_virtual_chassis", "assigned_object_virtual_circuit", "assigned_object_virtual_circuit_termination", "assigned_object_virtual_circuit_type", "assigned_object_virtual_device_context", "assigned_object_virtual_disk", "assigned_object_virtual_machine", "assigned_object_wireless_lan", "assigned_object_wireless_lan_group", "assigned_object_wireless_link", "assigned_object_custom_link", "tags", "custom_fields") + __slots__ = ("l2vpn", "assigned_object_interface", "assigned_object_vlan", "assigned_object_vm_interface", "assigned_object_asn", "assigned_object_asn_range", "assigned_object_aggregate", "assigned_object_cable", "assigned_object_cable_path", "assigned_object_cable_termination", "assigned_object_circuit", "assigned_object_circuit_group", "assigned_object_circuit_group_assignment", "assigned_object_circuit_termination", "assigned_object_circuit_type", "assigned_object_cluster", "assigned_object_cluster_group", "assigned_object_cluster_type", "assigned_object_console_port", "assigned_object_console_server_port", "assigned_object_contact", "assigned_object_contact_assignment", "assigned_object_contact_group", "assigned_object_contact_role", "assigned_object_custom_field", "assigned_object_custom_field_choice_set", "assigned_object_device", "assigned_object_device_bay", "assigned_object_device_role", "assigned_object_device_type", "assigned_object_fhrp_group", "assigned_object_fhrp_group_assignment", "assigned_object_front_port", "assigned_object_ike_policy", "assigned_object_ike_proposal", "assigned_object_ip_address", "assigned_object_ip_range", "assigned_object_ip_sec_policy", "assigned_object_ip_sec_profile", "assigned_object_ip_sec_proposal", "assigned_object_inventory_item", "assigned_object_inventory_item_role", "assigned_object_journal_entry", "assigned_object_l2vpn", "assigned_object_l2vpn_termination", "assigned_object_location", "assigned_object_mac_address", "assigned_object_manufacturer", "assigned_object_module", "assigned_object_module_bay", "assigned_object_module_type", "assigned_object_module_type_profile", "assigned_object_platform", "assigned_object_power_feed", "assigned_object_power_outlet", "assigned_object_power_panel", "assigned_object_power_port", "assigned_object_prefix", "assigned_object_provider", "assigned_object_provider_account", "assigned_object_provider_network", "assigned_object_rir", "assigned_object_rack", "assigned_object_rack_reservation", "assigned_object_rack_role", "assigned_object_rack_type", "assigned_object_rear_port", "assigned_object_region", "assigned_object_role", "assigned_object_route_target", "assigned_object_service", "assigned_object_site", "assigned_object_site_group", "assigned_object_tag", "assigned_object_tenant", "assigned_object_tenant_group", "assigned_object_tunnel", "assigned_object_tunnel_group", "assigned_object_tunnel_termination", "assigned_object_vlan_group", "assigned_object_vlan_translation_policy", "assigned_object_vlan_translation_rule", "assigned_object_vrf", "assigned_object_virtual_chassis", "assigned_object_virtual_circuit", "assigned_object_virtual_circuit_termination", "assigned_object_virtual_circuit_type", "assigned_object_virtual_device_context", "assigned_object_virtual_disk", "assigned_object_virtual_machine", "assigned_object_wireless_lan", "assigned_object_wireless_lan_group", "assigned_object_wireless_link", "assigned_object_custom_link", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2295,6 +2372,7 @@ class L2VPNTermination(_message.Message): ASSIGNED_OBJECT_CUSTOM_LINK_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] l2vpn: L2VPN assigned_object_interface: Interface assigned_object_vlan: VLAN @@ -2391,10 +2469,11 @@ class L2VPNTermination(_message.Message): assigned_object_custom_link: CustomLink 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]] = ..., assigned_object_asn: _Optional[_Union[ASN, _Mapping]] = ..., assigned_object_asn_range: _Optional[_Union[ASNRange, _Mapping]] = ..., assigned_object_aggregate: _Optional[_Union[Aggregate, _Mapping]] = ..., assigned_object_cable: _Optional[_Union[Cable, _Mapping]] = ..., assigned_object_cable_path: _Optional[_Union[CablePath, _Mapping]] = ..., assigned_object_cable_termination: _Optional[_Union[CableTermination, _Mapping]] = ..., assigned_object_circuit: _Optional[_Union[Circuit, _Mapping]] = ..., assigned_object_circuit_group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., assigned_object_circuit_group_assignment: _Optional[_Union[CircuitGroupAssignment, _Mapping]] = ..., assigned_object_circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., assigned_object_circuit_type: _Optional[_Union[CircuitType, _Mapping]] = ..., assigned_object_cluster: _Optional[_Union[Cluster, _Mapping]] = ..., assigned_object_cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., assigned_object_cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., assigned_object_console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., assigned_object_console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., assigned_object_contact: _Optional[_Union[Contact, _Mapping]] = ..., assigned_object_contact_assignment: _Optional[_Union[ContactAssignment, _Mapping]] = ..., assigned_object_contact_group: _Optional[_Union[ContactGroup, _Mapping]] = ..., assigned_object_contact_role: _Optional[_Union[ContactRole, _Mapping]] = ..., assigned_object_custom_field: _Optional[_Union[CustomField, _Mapping]] = ..., assigned_object_custom_field_choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., assigned_object_device: _Optional[_Union[Device, _Mapping]] = ..., assigned_object_device_bay: _Optional[_Union[DeviceBay, _Mapping]] = ..., assigned_object_device_role: _Optional[_Union[DeviceRole, _Mapping]] = ..., assigned_object_device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., assigned_object_fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., assigned_object_fhrp_group_assignment: _Optional[_Union[FHRPGroupAssignment, _Mapping]] = ..., assigned_object_front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., assigned_object_ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., assigned_object_ike_proposal: _Optional[_Union[IKEProposal, _Mapping]] = ..., assigned_object_ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., assigned_object_ip_range: _Optional[_Union[IPRange, _Mapping]] = ..., assigned_object_ip_sec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., assigned_object_ip_sec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., assigned_object_ip_sec_proposal: _Optional[_Union[IPSecProposal, _Mapping]] = ..., assigned_object_inventory_item: _Optional[_Union[InventoryItem, _Mapping]] = ..., assigned_object_inventory_item_role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., assigned_object_journal_entry: _Optional[_Union[JournalEntry, _Mapping]] = ..., assigned_object_l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., assigned_object_l2vpn_termination: _Optional[_Union[L2VPNTermination, _Mapping]] = ..., assigned_object_location: _Optional[_Union[Location, _Mapping]] = ..., assigned_object_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., assigned_object_manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., assigned_object_module: _Optional[_Union[Module, _Mapping]] = ..., assigned_object_module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., assigned_object_module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., assigned_object_module_type_profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., assigned_object_platform: _Optional[_Union[Platform, _Mapping]] = ..., assigned_object_power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., assigned_object_power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., assigned_object_power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., assigned_object_power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., assigned_object_prefix: _Optional[_Union[Prefix, _Mapping]] = ..., assigned_object_provider: _Optional[_Union[Provider, _Mapping]] = ..., assigned_object_provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., assigned_object_provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., assigned_object_rir: _Optional[_Union[RIR, _Mapping]] = ..., assigned_object_rack: _Optional[_Union[Rack, _Mapping]] = ..., assigned_object_rack_reservation: _Optional[_Union[RackReservation, _Mapping]] = ..., assigned_object_rack_role: _Optional[_Union[RackRole, _Mapping]] = ..., assigned_object_rack_type: _Optional[_Union[RackType, _Mapping]] = ..., assigned_object_rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., assigned_object_region: _Optional[_Union[Region, _Mapping]] = ..., assigned_object_role: _Optional[_Union[Role, _Mapping]] = ..., assigned_object_route_target: _Optional[_Union[RouteTarget, _Mapping]] = ..., assigned_object_service: _Optional[_Union[Service, _Mapping]] = ..., assigned_object_site: _Optional[_Union[Site, _Mapping]] = ..., assigned_object_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., assigned_object_tag: _Optional[_Union[Tag, _Mapping]] = ..., assigned_object_tenant: _Optional[_Union[Tenant, _Mapping]] = ..., assigned_object_tenant_group: _Optional[_Union[TenantGroup, _Mapping]] = ..., assigned_object_tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., assigned_object_tunnel_group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., assigned_object_tunnel_termination: _Optional[_Union[TunnelTermination, _Mapping]] = ..., assigned_object_vlan_group: _Optional[_Union[VLANGroup, _Mapping]] = ..., assigned_object_vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., assigned_object_vlan_translation_rule: _Optional[_Union[VLANTranslationRule, _Mapping]] = ..., assigned_object_vrf: _Optional[_Union[VRF, _Mapping]] = ..., assigned_object_virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., assigned_object_virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., assigned_object_virtual_circuit_termination: _Optional[_Union[VirtualCircuitTermination, _Mapping]] = ..., assigned_object_virtual_circuit_type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., assigned_object_virtual_device_context: _Optional[_Union[VirtualDeviceContext, _Mapping]] = ..., assigned_object_virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., assigned_object_virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., assigned_object_wireless_lan: _Optional[_Union[WirelessLAN, _Mapping]] = ..., assigned_object_wireless_lan_group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., assigned_object_wireless_link: _Optional[_Union[WirelessLink, _Mapping]] = ..., assigned_object_custom_link: _Optional[_Union[CustomLink, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., assigned_object_asn: _Optional[_Union[ASN, _Mapping]] = ..., assigned_object_asn_range: _Optional[_Union[ASNRange, _Mapping]] = ..., assigned_object_aggregate: _Optional[_Union[Aggregate, _Mapping]] = ..., assigned_object_cable: _Optional[_Union[Cable, _Mapping]] = ..., assigned_object_cable_path: _Optional[_Union[CablePath, _Mapping]] = ..., assigned_object_cable_termination: _Optional[_Union[CableTermination, _Mapping]] = ..., assigned_object_circuit: _Optional[_Union[Circuit, _Mapping]] = ..., assigned_object_circuit_group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., assigned_object_circuit_group_assignment: _Optional[_Union[CircuitGroupAssignment, _Mapping]] = ..., assigned_object_circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., assigned_object_circuit_type: _Optional[_Union[CircuitType, _Mapping]] = ..., assigned_object_cluster: _Optional[_Union[Cluster, _Mapping]] = ..., assigned_object_cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., assigned_object_cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., assigned_object_console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., assigned_object_console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., assigned_object_contact: _Optional[_Union[Contact, _Mapping]] = ..., assigned_object_contact_assignment: _Optional[_Union[ContactAssignment, _Mapping]] = ..., assigned_object_contact_group: _Optional[_Union[ContactGroup, _Mapping]] = ..., assigned_object_contact_role: _Optional[_Union[ContactRole, _Mapping]] = ..., assigned_object_custom_field: _Optional[_Union[CustomField, _Mapping]] = ..., assigned_object_custom_field_choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., assigned_object_device: _Optional[_Union[Device, _Mapping]] = ..., assigned_object_device_bay: _Optional[_Union[DeviceBay, _Mapping]] = ..., assigned_object_device_role: _Optional[_Union[DeviceRole, _Mapping]] = ..., assigned_object_device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., assigned_object_fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., assigned_object_fhrp_group_assignment: _Optional[_Union[FHRPGroupAssignment, _Mapping]] = ..., assigned_object_front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., assigned_object_ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., assigned_object_ike_proposal: _Optional[_Union[IKEProposal, _Mapping]] = ..., assigned_object_ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., assigned_object_ip_range: _Optional[_Union[IPRange, _Mapping]] = ..., assigned_object_ip_sec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., assigned_object_ip_sec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., assigned_object_ip_sec_proposal: _Optional[_Union[IPSecProposal, _Mapping]] = ..., assigned_object_inventory_item: _Optional[_Union[InventoryItem, _Mapping]] = ..., assigned_object_inventory_item_role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., assigned_object_journal_entry: _Optional[_Union[JournalEntry, _Mapping]] = ..., assigned_object_l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., assigned_object_l2vpn_termination: _Optional[_Union[L2VPNTermination, _Mapping]] = ..., assigned_object_location: _Optional[_Union[Location, _Mapping]] = ..., assigned_object_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., assigned_object_manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., assigned_object_module: _Optional[_Union[Module, _Mapping]] = ..., assigned_object_module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., assigned_object_module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., assigned_object_module_type_profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., assigned_object_platform: _Optional[_Union[Platform, _Mapping]] = ..., assigned_object_power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., assigned_object_power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., assigned_object_power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., assigned_object_power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., assigned_object_prefix: _Optional[_Union[Prefix, _Mapping]] = ..., assigned_object_provider: _Optional[_Union[Provider, _Mapping]] = ..., assigned_object_provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., assigned_object_provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., assigned_object_rir: _Optional[_Union[RIR, _Mapping]] = ..., assigned_object_rack: _Optional[_Union[Rack, _Mapping]] = ..., assigned_object_rack_reservation: _Optional[_Union[RackReservation, _Mapping]] = ..., assigned_object_rack_role: _Optional[_Union[RackRole, _Mapping]] = ..., assigned_object_rack_type: _Optional[_Union[RackType, _Mapping]] = ..., assigned_object_rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., assigned_object_region: _Optional[_Union[Region, _Mapping]] = ..., assigned_object_role: _Optional[_Union[Role, _Mapping]] = ..., assigned_object_route_target: _Optional[_Union[RouteTarget, _Mapping]] = ..., assigned_object_service: _Optional[_Union[Service, _Mapping]] = ..., assigned_object_site: _Optional[_Union[Site, _Mapping]] = ..., assigned_object_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., assigned_object_tag: _Optional[_Union[Tag, _Mapping]] = ..., assigned_object_tenant: _Optional[_Union[Tenant, _Mapping]] = ..., assigned_object_tenant_group: _Optional[_Union[TenantGroup, _Mapping]] = ..., assigned_object_tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., assigned_object_tunnel_group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., assigned_object_tunnel_termination: _Optional[_Union[TunnelTermination, _Mapping]] = ..., assigned_object_vlan_group: _Optional[_Union[VLANGroup, _Mapping]] = ..., assigned_object_vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., assigned_object_vlan_translation_rule: _Optional[_Union[VLANTranslationRule, _Mapping]] = ..., assigned_object_vrf: _Optional[_Union[VRF, _Mapping]] = ..., assigned_object_virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., assigned_object_virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., assigned_object_virtual_circuit_termination: _Optional[_Union[VirtualCircuitTermination, _Mapping]] = ..., assigned_object_virtual_circuit_type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., assigned_object_virtual_device_context: _Optional[_Union[VirtualDeviceContext, _Mapping]] = ..., assigned_object_virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., assigned_object_virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., assigned_object_wireless_lan: _Optional[_Union[WirelessLAN, _Mapping]] = ..., assigned_object_wireless_lan_group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., assigned_object_wireless_link: _Optional[_Union[WirelessLink, _Mapping]] = ..., assigned_object_custom_link: _Optional[_Union[CustomLink, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class Location(_message.Message): - __slots__ = ("name", "slug", "site", "parent", "status", "tenant", "facility", "description", "tags", "custom_fields", "comments") + __slots__ = ("name", "slug", "site", "parent", "status", "tenant", "facility", "description", "tags", "custom_fields", "comments", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2413,6 +2492,7 @@ class Location(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str slug: str site: Site @@ -2424,10 +2504,11 @@ class Location(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] comments: str - 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]] = ..., comments: _Optional[str] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., comments: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class MACAddress(_message.Message): - __slots__ = ("mac_address", "assigned_object_interface", "assigned_object_vm_interface", "description", "comments", "tags", "custom_fields") + __slots__ = ("mac_address", "assigned_object_interface", "assigned_object_vm_interface", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2442,6 +2523,7 @@ class MACAddress(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] mac_address: str assigned_object_interface: Interface assigned_object_vm_interface: VMInterface @@ -2449,10 +2531,11 @@ class MACAddress(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class Manufacturer(_message.Message): - __slots__ = ("name", "slug", "description", "tags", "custom_fields") + __slots__ = ("name", "slug", "description", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2465,15 +2548,17 @@ class Manufacturer(_message.Message): DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_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: ... + metadata: _struct_pb2.Struct + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class Module(_message.Message): - __slots__ = ("device", "module_bay", "module_type", "status", "serial", "asset_tag", "description", "comments", "tags", "custom_fields") + __slots__ = ("device", "module_bay", "module_type", "status", "serial", "asset_tag", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2491,6 +2576,7 @@ class Module(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] device: Device module_bay: ModuleBay module_type: ModuleType @@ -2501,10 +2587,11 @@ class Module(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class ModuleBay(_message.Message): - __slots__ = ("device", "module", "name", "installed_module", "label", "position", "description", "tags", "custom_fields") + __slots__ = ("device", "module", "name", "installed_module", "label", "position", "description", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2521,6 +2608,7 @@ class ModuleBay(_message.Message): DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] device: Device module: Module name: str @@ -2530,10 +2618,11 @@ class ModuleBay(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class ModuleType(_message.Message): - __slots__ = ("manufacturer", "model", "part_number", "airflow", "weight", "weight_unit", "description", "comments", "tags", "custom_fields", "profile", "attributes") + __slots__ = ("manufacturer", "model", "part_number", "airflow", "weight", "weight_unit", "description", "comments", "tags", "custom_fields", "profile", "attributes", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2553,6 +2642,7 @@ class ModuleType(_message.Message): CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] PROFILE_FIELD_NUMBER: _ClassVar[int] ATTRIBUTES_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] manufacturer: Manufacturer model: str part_number: str @@ -2565,10 +2655,11 @@ class ModuleType(_message.Message): custom_fields: _containers.MessageMap[str, CustomFieldValue] profile: ModuleTypeProfile attributes: str - 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]] = ..., profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., attributes: _Optional[str] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., attributes: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class Platform(_message.Message): - __slots__ = ("name", "slug", "manufacturer", "description", "tags", "custom_fields", "parent", "comments") + __slots__ = ("name", "slug", "manufacturer", "description", "tags", "custom_fields", "parent", "comments", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2584,6 +2675,7 @@ class Platform(_message.Message): CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] PARENT_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str slug: str manufacturer: Manufacturer @@ -2592,10 +2684,11 @@ class Platform(_message.Message): custom_fields: _containers.MessageMap[str, CustomFieldValue] parent: Platform comments: str - 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]] = ..., parent: _Optional[_Union[Platform, _Mapping]] = ..., comments: _Optional[str] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., parent: _Optional[_Union[Platform, _Mapping]] = ..., comments: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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") + __slots__ = ("power_panel", "rack", "name", "status", "type", "supply", "phase", "voltage", "amperage", "max_utilization", "mark_connected", "description", "tenant", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2619,6 +2712,7 @@ class PowerFeed(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] power_panel: PowerPanel rack: Rack name: str @@ -2635,10 +2729,11 @@ class PowerFeed(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class PowerOutlet(_message.Message): - __slots__ = ("device", "module", "name", "label", "type", "color", "power_port", "feed_leg", "description", "mark_connected", "tags", "custom_fields", "status") + __slots__ = ("device", "module", "name", "label", "type", "color", "power_port", "feed_leg", "description", "mark_connected", "tags", "custom_fields", "status", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2659,6 +2754,7 @@ class PowerOutlet(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] STATUS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] device: Device module: Module name: str @@ -2672,10 +2768,11 @@ class PowerOutlet(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] status: str - 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]] = ..., status: _Optional[str] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., status: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class PowerPanel(_message.Message): - __slots__ = ("site", "location", "name", "description", "comments", "tags", "custom_fields") + __slots__ = ("site", "location", "name", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2690,6 +2787,7 @@ class PowerPanel(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] site: Site location: Location name: str @@ -2697,10 +2795,11 @@ class PowerPanel(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class PowerPort(_message.Message): - __slots__ = ("device", "module", "name", "label", "type", "maximum_draw", "allocated_draw", "description", "mark_connected", "tags", "custom_fields") + __slots__ = ("device", "module", "name", "label", "type", "maximum_draw", "allocated_draw", "description", "mark_connected", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2719,6 +2818,7 @@ class PowerPort(_message.Message): MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] device: Device module: Module name: str @@ -2730,10 +2830,11 @@ class PowerPort(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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") + __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", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2757,6 +2858,7 @@ class Prefix(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] prefix: str vrf: VRF scope_location: Location @@ -2773,10 +2875,11 @@ class Prefix(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class Provider(_message.Message): - __slots__ = ("name", "slug", "description", "comments", "tags", "custom_fields", "accounts", "asns") + __slots__ = ("name", "slug", "description", "comments", "tags", "custom_fields", "accounts", "asns", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2792,6 +2895,7 @@ class Provider(_message.Message): CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] ACCOUNTS_FIELD_NUMBER: _ClassVar[int] ASNS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str slug: str description: str @@ -2800,10 +2904,11 @@ class Provider(_message.Message): custom_fields: _containers.MessageMap[str, CustomFieldValue] 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: ... + metadata: _struct_pb2.Struct + 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]]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class ProviderAccount(_message.Message): - __slots__ = ("provider", "name", "account", "description", "comments", "tags", "custom_fields") + __slots__ = ("provider", "name", "account", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2818,6 +2923,7 @@ class ProviderAccount(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] provider: Provider name: str account: str @@ -2825,10 +2931,11 @@ class ProviderAccount(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class ProviderNetwork(_message.Message): - __slots__ = ("provider", "name", "service_id", "description", "comments", "tags", "custom_fields") + __slots__ = ("provider", "name", "service_id", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2843,6 +2950,7 @@ class ProviderNetwork(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] provider: Provider name: str service_id: str @@ -2850,10 +2958,11 @@ class ProviderNetwork(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class RIR(_message.Message): - __slots__ = ("name", "slug", "is_private", "description", "tags", "custom_fields") + __slots__ = ("name", "slug", "is_private", "description", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2867,16 +2976,18 @@ class RIR(_message.Message): DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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", "outer_height") + __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", "outer_height", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2912,6 +3023,7 @@ class Rack(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] OUTER_HEIGHT_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str facility_id: str site: Site @@ -2940,10 +3052,11 @@ class Rack(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] outer_height: int - 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]] = ..., outer_height: _Optional[int] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., outer_height: _Optional[int] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class RackReservation(_message.Message): - __slots__ = ("rack", "units", "tenant", "description", "comments", "tags", "custom_fields", "status") + __slots__ = ("rack", "units", "tenant", "description", "comments", "tags", "custom_fields", "status", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2959,6 +3072,7 @@ class RackReservation(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] STATUS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] rack: Rack units: _containers.RepeatedScalarFieldContainer[int] tenant: Tenant @@ -2967,10 +3081,11 @@ class RackReservation(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] status: str - 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]] = ..., status: _Optional[str] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., status: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class RackRole(_message.Message): - __slots__ = ("name", "slug", "color", "description", "tags", "custom_fields") + __slots__ = ("name", "slug", "color", "description", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2984,16 +3099,18 @@ class RackRole(_message.Message): DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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", "outer_height") + __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", "outer_height", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3021,6 +3138,7 @@ class RackType(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] OUTER_HEIGHT_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] manufacturer: Manufacturer model: str slug: str @@ -3041,10 +3159,11 @@ class RackType(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] outer_height: int - 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]] = ..., outer_height: _Optional[int] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., outer_height: _Optional[int] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class RearPort(_message.Message): - __slots__ = ("device", "module", "name", "label", "type", "color", "positions", "description", "mark_connected", "tags", "custom_fields") + __slots__ = ("device", "module", "name", "label", "type", "color", "positions", "description", "mark_connected", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3063,6 +3182,7 @@ class RearPort(_message.Message): MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] device: Device module: Module name: str @@ -3074,10 +3194,11 @@ class RearPort(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class Region(_message.Message): - __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields", "comments") + __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields", "comments", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3092,6 +3213,7 @@ class Region(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str slug: str parent: Region @@ -3099,10 +3221,11 @@ class Region(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] comments: str - 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]] = ..., comments: _Optional[str] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., comments: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class Role(_message.Message): - __slots__ = ("name", "slug", "weight", "description", "tags", "custom_fields") + __slots__ = ("name", "slug", "weight", "description", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3116,16 +3239,18 @@ class Role(_message.Message): DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class RouteTarget(_message.Message): - __slots__ = ("name", "tenant", "description", "comments", "tags", "custom_fields") + __slots__ = ("name", "tenant", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3139,16 +3264,18 @@ class RouteTarget(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class Service(_message.Message): - __slots__ = ("device", "virtual_machine", "name", "protocol", "ports", "description", "comments", "tags", "custom_fields", "ipaddresses", "parent_object_device", "parent_object_fhrp_group", "parent_object_virtual_machine") + __slots__ = ("device", "virtual_machine", "name", "protocol", "ports", "description", "comments", "tags", "custom_fields", "ipaddresses", "parent_object_device", "parent_object_fhrp_group", "parent_object_virtual_machine", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3169,6 +3296,7 @@ class Service(_message.Message): PARENT_OBJECT_DEVICE_FIELD_NUMBER: _ClassVar[int] PARENT_OBJECT_FHRP_GROUP_FIELD_NUMBER: _ClassVar[int] PARENT_OBJECT_VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] device: Device virtual_machine: VirtualMachine name: str @@ -3182,10 +3310,11 @@ class Service(_message.Message): parent_object_device: Device parent_object_fhrp_group: FHRPGroup parent_object_virtual_machine: VirtualMachine - 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]]] = ..., parent_object_device: _Optional[_Union[Device, _Mapping]] = ..., parent_object_fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., parent_object_virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]]] = ..., parent_object_device: _Optional[_Union[Device, _Mapping]] = ..., parent_object_fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., parent_object_virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _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", "asns") + __slots__ = ("name", "slug", "status", "region", "group", "tenant", "facility", "time_zone", "description", "physical_address", "shipping_address", "latitude", "longitude", "comments", "tags", "custom_fields", "asns", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3210,6 +3339,7 @@ class Site(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] ASNS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str slug: str status: str @@ -3227,10 +3357,11 @@ class Site(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] 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: ... + metadata: _struct_pb2.Struct + 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]]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class SiteGroup(_message.Message): - __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields", "comments") + __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields", "comments", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3245,6 +3376,7 @@ class SiteGroup(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str slug: str parent: SiteGroup @@ -3252,26 +3384,29 @@ class SiteGroup(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] comments: str - 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]] = ..., comments: _Optional[str] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., comments: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class Tag(_message.Message): - __slots__ = ("name", "slug", "color", "description", "weight", "object_types") + __slots__ = ("name", "slug", "color", "description", "weight", "object_types", "metadata") NAME_FIELD_NUMBER: _ClassVar[int] SLUG_FIELD_NUMBER: _ClassVar[int] COLOR_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] WEIGHT_FIELD_NUMBER: _ClassVar[int] OBJECT_TYPES_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str slug: str color: str description: str weight: int object_types: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., color: _Optional[str] = ..., description: _Optional[str] = ..., weight: _Optional[int] = ..., object_types: _Optional[_Iterable[str]] = ...) -> None: ... + metadata: _struct_pb2.Struct + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., color: _Optional[str] = ..., description: _Optional[str] = ..., weight: _Optional[int] = ..., object_types: _Optional[_Iterable[str]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class Tenant(_message.Message): - __slots__ = ("name", "slug", "group", "description", "comments", "tags", "custom_fields") + __slots__ = ("name", "slug", "group", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3286,6 +3421,7 @@ class Tenant(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str slug: str group: TenantGroup @@ -3293,10 +3429,11 @@ class Tenant(_message.Message): comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class TenantGroup(_message.Message): - __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields", "comments") + __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields", "comments", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3311,6 +3448,7 @@ class TenantGroup(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str slug: str parent: TenantGroup @@ -3318,10 +3456,11 @@ class TenantGroup(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] comments: str - 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]] = ..., comments: _Optional[str] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., comments: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class Tunnel(_message.Message): - __slots__ = ("name", "status", "group", "encapsulation", "ipsec_profile", "tenant", "tunnel_id", "description", "comments", "tags", "custom_fields") + __slots__ = ("name", "status", "group", "encapsulation", "ipsec_profile", "tenant", "tunnel_id", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3340,6 +3479,7 @@ class Tunnel(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str status: str group: TunnelGroup @@ -3351,10 +3491,11 @@ class Tunnel(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class TunnelGroup(_message.Message): - __slots__ = ("name", "slug", "description", "tags", "custom_fields") + __slots__ = ("name", "slug", "description", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3367,15 +3508,17 @@ class TunnelGroup(_message.Message): DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_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: ... + metadata: _struct_pb2.Struct + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... 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", "termination_custom_field", "termination_custom_field_choice_set", "termination_journal_entry", "termination_module_type_profile", "termination_custom_link", "outside_ip", "tags", "custom_fields") + __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", "termination_custom_field", "termination_custom_field_choice_set", "termination_journal_entry", "termination_module_type_profile", "termination_custom_link", "outside_ip", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3481,6 +3624,7 @@ class TunnelTermination(_message.Message): OUTSIDE_IP_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] tunnel: Tunnel role: str termination_asn: ASN @@ -3579,10 +3723,11 @@ class TunnelTermination(_message.Message): 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]] = ..., termination_custom_field: _Optional[_Union[CustomField, _Mapping]] = ..., termination_custom_field_choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., termination_journal_entry: _Optional[_Union[JournalEntry, _Mapping]] = ..., termination_module_type_profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., termination_custom_link: _Optional[_Union[CustomLink, _Mapping]] = ..., outside_ip: _Optional[_Union[IPAddress, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., termination_custom_field: _Optional[_Union[CustomField, _Mapping]] = ..., termination_custom_field_choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., termination_journal_entry: _Optional[_Union[JournalEntry, _Mapping]] = ..., termination_module_type_profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., termination_custom_link: _Optional[_Union[CustomLink, _Mapping]] = ..., outside_ip: _Optional[_Union[IPAddress, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class VLAN(_message.Message): - __slots__ = ("site", "group", "vid", "name", "tenant", "status", "role", "description", "qinq_role", "qinq_svlan", "comments", "tags", "custom_fields") + __slots__ = ("site", "group", "vid", "name", "tenant", "status", "role", "description", "qinq_role", "qinq_svlan", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3603,6 +3748,7 @@ class VLAN(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] site: Site group: VLANGroup vid: int @@ -3616,10 +3762,11 @@ class VLAN(_message.Message): comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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", "tenant") + __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", "tenant", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3641,6 +3788,7 @@ class VLANGroup(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] TENANT_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str slug: str scope_cluster: Cluster @@ -3655,30 +3803,35 @@ class VLANGroup(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] tenant: Tenant - 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]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class VLANTranslationPolicy(_message.Message): - __slots__ = ("name", "description") + __slots__ = ("name", "description", "metadata") NAME_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str description: str - def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ...) -> None: ... + metadata: _struct_pb2.Struct + def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class VLANTranslationRule(_message.Message): - __slots__ = ("policy", "local_vid", "remote_vid", "description") + __slots__ = ("policy", "local_vid", "remote_vid", "description", "metadata") POLICY_FIELD_NUMBER: _ClassVar[int] LOCAL_VID_FIELD_NUMBER: _ClassVar[int] REMOTE_VID_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + METADATA_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: ... + metadata: _struct_pb2.Struct + def __init__(self, policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., local_vid: _Optional[int] = ..., remote_vid: _Optional[int] = ..., description: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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", "tagged_vlans") + __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", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3702,6 +3855,7 @@ class VMInterface(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] TAGGED_VLANS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] virtual_machine: VirtualMachine name: str enabled: bool @@ -3718,10 +3872,11 @@ class VMInterface(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] 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: ... + metadata: _struct_pb2.Struct + 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]]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class VRF(_message.Message): - __slots__ = ("name", "rd", "tenant", "enforce_unique", "description", "comments", "tags", "custom_fields", "import_targets", "export_targets") + __slots__ = ("name", "rd", "tenant", "enforce_unique", "description", "comments", "tags", "custom_fields", "import_targets", "export_targets", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3739,6 +3894,7 @@ class VRF(_message.Message): CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] IMPORT_TARGETS_FIELD_NUMBER: _ClassVar[int] EXPORT_TARGETS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str rd: str tenant: Tenant @@ -3749,10 +3905,11 @@ class VRF(_message.Message): custom_fields: _containers.MessageMap[str, CustomFieldValue] 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: ... + metadata: _struct_pb2.Struct + 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]]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class VirtualChassis(_message.Message): - __slots__ = ("name", "domain", "master", "description", "comments", "tags", "custom_fields") + __slots__ = ("name", "domain", "master", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3767,6 +3924,7 @@ class VirtualChassis(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str domain: str master: Device @@ -3774,10 +3932,11 @@ class VirtualChassis(_message.Message): comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class VirtualCircuit(_message.Message): - __slots__ = ("cid", "provider_network", "provider_account", "type", "status", "tenant", "description", "comments", "tags", "custom_fields") + __slots__ = ("cid", "provider_network", "provider_account", "type", "status", "tenant", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3795,6 +3954,7 @@ class VirtualCircuit(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] cid: str provider_network: ProviderNetwork provider_account: ProviderAccount @@ -3805,10 +3965,11 @@ class VirtualCircuit(_message.Message): comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class VirtualCircuitTermination(_message.Message): - __slots__ = ("virtual_circuit", "role", "interface", "description", "tags", "custom_fields") + __slots__ = ("virtual_circuit", "role", "interface", "description", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3822,16 +3983,18 @@ class VirtualCircuitTermination(_message.Message): DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] virtual_circuit: VirtualCircuit role: str interface: Interface description: str tags: _containers.RepeatedCompositeFieldContainer[Tag] 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class VirtualCircuitType(_message.Message): - __slots__ = ("name", "slug", "color", "description", "tags", "custom_fields") + __slots__ = ("name", "slug", "color", "description", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3845,16 +4008,18 @@ class VirtualCircuitType(_message.Message): DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class VirtualDeviceContext(_message.Message): - __slots__ = ("name", "device", "identifier", "tenant", "primary_ip4", "primary_ip6", "status", "description", "comments", "tags", "custom_fields") + __slots__ = ("name", "device", "identifier", "tenant", "primary_ip4", "primary_ip6", "status", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3873,6 +4038,7 @@ class VirtualDeviceContext(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str device: Device identifier: int @@ -3884,10 +4050,11 @@ class VirtualDeviceContext(_message.Message): comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class VirtualDisk(_message.Message): - __slots__ = ("virtual_machine", "name", "description", "size", "tags", "custom_fields") + __slots__ = ("virtual_machine", "name", "description", "size", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3901,16 +4068,18 @@ class VirtualDisk(_message.Message): SIZE_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] virtual_machine: VirtualMachine name: str description: str size: int tags: _containers.RepeatedCompositeFieldContainer[Tag] 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... 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") + __slots__ = ("name", "status", "site", "cluster", "device", "serial", "role", "tenant", "platform", "primary_ip4", "primary_ip6", "vcpus", "memory", "disk", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3936,6 +4105,7 @@ class VirtualMachine(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str status: str site: Site @@ -3954,10 +4124,11 @@ class VirtualMachine(_message.Message): comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... 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") + __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", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3981,6 +4152,7 @@ class WirelessLAN(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] ssid: str description: str group: WirelessLANGroup @@ -3997,10 +4169,11 @@ class WirelessLAN(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class WirelessLANGroup(_message.Message): - __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields", "comments") + __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields", "comments", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -4015,6 +4188,7 @@ class WirelessLANGroup(_message.Message): TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str slug: str parent: WirelessLANGroup @@ -4022,10 +4196,11 @@ class WirelessLANGroup(_message.Message): tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] comments: str - 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]] = ..., comments: _Optional[str] = ...) -> None: ... + metadata: _struct_pb2.Struct + 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]] = ..., comments: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> 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") + __slots__ = ("interface_a", "interface_b", "ssid", "status", "tenant", "auth_type", "auth_cipher", "auth_psk", "distance", "distance_unit", "description", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -4047,6 +4222,7 @@ class WirelessLink(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] interface_a: Interface interface_b: Interface ssid: str @@ -4061,10 +4237,11 @@ class WirelessLink(_message.Message): 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: ... + metadata: _struct_pb2.Struct + 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]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class CustomField(_message.Message): - __slots__ = ("type", "related_object_type", "name", "label", "group_name", "description", "required", "unique", "search_weight", "filter_logic", "ui_visible", "ui_editable", "is_cloneable", "default", "related_object_filter", "weight", "validation_minimum", "validation_maximum", "validation_regex", "choice_set", "comments", "object_types") + __slots__ = ("type", "related_object_type", "name", "label", "group_name", "description", "required", "unique", "search_weight", "filter_logic", "ui_visible", "ui_editable", "is_cloneable", "default", "related_object_filter", "weight", "validation_minimum", "validation_maximum", "validation_regex", "choice_set", "comments", "object_types", "metadata") TYPE_FIELD_NUMBER: _ClassVar[int] RELATED_OBJECT_TYPE_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] @@ -4087,6 +4264,7 @@ class CustomField(_message.Message): CHOICE_SET_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] OBJECT_TYPES_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] type: str related_object_type: str name: str @@ -4109,24 +4287,27 @@ class CustomField(_message.Message): choice_set: CustomFieldChoiceSet comments: str object_types: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, type: _Optional[str] = ..., related_object_type: _Optional[str] = ..., name: _Optional[str] = ..., label: _Optional[str] = ..., group_name: _Optional[str] = ..., description: _Optional[str] = ..., required: bool = ..., unique: bool = ..., search_weight: _Optional[int] = ..., filter_logic: _Optional[str] = ..., ui_visible: _Optional[str] = ..., ui_editable: _Optional[str] = ..., is_cloneable: bool = ..., default: _Optional[str] = ..., related_object_filter: _Optional[str] = ..., weight: _Optional[int] = ..., validation_minimum: _Optional[float] = ..., validation_maximum: _Optional[float] = ..., validation_regex: _Optional[str] = ..., choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., comments: _Optional[str] = ..., object_types: _Optional[_Iterable[str]] = ...) -> None: ... + metadata: _struct_pb2.Struct + def __init__(self, type: _Optional[str] = ..., related_object_type: _Optional[str] = ..., name: _Optional[str] = ..., label: _Optional[str] = ..., group_name: _Optional[str] = ..., description: _Optional[str] = ..., required: bool = ..., unique: bool = ..., search_weight: _Optional[int] = ..., filter_logic: _Optional[str] = ..., ui_visible: _Optional[str] = ..., ui_editable: _Optional[str] = ..., is_cloneable: bool = ..., default: _Optional[str] = ..., related_object_filter: _Optional[str] = ..., weight: _Optional[int] = ..., validation_minimum: _Optional[float] = ..., validation_maximum: _Optional[float] = ..., validation_regex: _Optional[str] = ..., choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., comments: _Optional[str] = ..., object_types: _Optional[_Iterable[str]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class CustomFieldChoiceSet(_message.Message): - __slots__ = ("name", "description", "base_choices", "order_alphabetically", "extra_choices") + __slots__ = ("name", "description", "base_choices", "order_alphabetically", "extra_choices", "metadata") NAME_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] BASE_CHOICES_FIELD_NUMBER: _ClassVar[int] ORDER_ALPHABETICALLY_FIELD_NUMBER: _ClassVar[int] EXTRA_CHOICES_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str description: str base_choices: str order_alphabetically: bool extra_choices: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., base_choices: _Optional[str] = ..., order_alphabetically: bool = ..., extra_choices: _Optional[_Iterable[str]] = ...) -> None: ... + metadata: _struct_pb2.Struct + def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., base_choices: _Optional[str] = ..., order_alphabetically: bool = ..., extra_choices: _Optional[_Iterable[str]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class JournalEntry(_message.Message): - __slots__ = ("assigned_object_asn", "assigned_object_asn_range", "assigned_object_aggregate", "assigned_object_cable", "assigned_object_cable_path", "assigned_object_cable_termination", "assigned_object_circuit", "assigned_object_circuit_group", "assigned_object_circuit_group_assignment", "assigned_object_circuit_termination", "assigned_object_circuit_type", "assigned_object_cluster", "assigned_object_cluster_group", "assigned_object_cluster_type", "assigned_object_console_port", "assigned_object_console_server_port", "assigned_object_contact", "assigned_object_contact_assignment", "assigned_object_contact_group", "assigned_object_contact_role", "assigned_object_custom_field", "assigned_object_custom_field_choice_set", "assigned_object_device", "assigned_object_device_bay", "assigned_object_device_role", "assigned_object_device_type", "assigned_object_fhrp_group", "assigned_object_fhrp_group_assignment", "assigned_object_front_port", "assigned_object_ike_policy", "assigned_object_ike_proposal", "assigned_object_ip_address", "assigned_object_ip_range", "assigned_object_ip_sec_policy", "assigned_object_ip_sec_profile", "assigned_object_ip_sec_proposal", "assigned_object_interface", "assigned_object_inventory_item", "assigned_object_inventory_item_role", "assigned_object_journal_entry", "assigned_object_l2vpn", "assigned_object_l2vpn_termination", "assigned_object_location", "assigned_object_mac_address", "assigned_object_manufacturer", "assigned_object_module", "assigned_object_module_bay", "assigned_object_module_type", "assigned_object_module_type_profile", "assigned_object_platform", "assigned_object_power_feed", "assigned_object_power_outlet", "assigned_object_power_panel", "assigned_object_power_port", "assigned_object_prefix", "assigned_object_provider", "assigned_object_provider_account", "assigned_object_provider_network", "assigned_object_rir", "assigned_object_rack", "assigned_object_rack_reservation", "assigned_object_rack_role", "assigned_object_rack_type", "assigned_object_rear_port", "assigned_object_region", "assigned_object_role", "assigned_object_route_target", "assigned_object_service", "assigned_object_site", "assigned_object_site_group", "assigned_object_tag", "assigned_object_tenant", "assigned_object_tenant_group", "assigned_object_tunnel", "assigned_object_tunnel_group", "assigned_object_tunnel_termination", "assigned_object_vlan", "assigned_object_vlan_group", "assigned_object_vlan_translation_policy", "assigned_object_vlan_translation_rule", "assigned_object_vm_interface", "assigned_object_vrf", "assigned_object_virtual_chassis", "assigned_object_virtual_circuit", "assigned_object_virtual_circuit_termination", "assigned_object_virtual_circuit_type", "assigned_object_virtual_device_context", "assigned_object_virtual_disk", "assigned_object_virtual_machine", "assigned_object_wireless_lan", "assigned_object_wireless_lan_group", "assigned_object_wireless_link", "assigned_object_custom_link", "kind", "comments", "tags", "custom_fields") + __slots__ = ("assigned_object_asn", "assigned_object_asn_range", "assigned_object_aggregate", "assigned_object_cable", "assigned_object_cable_path", "assigned_object_cable_termination", "assigned_object_circuit", "assigned_object_circuit_group", "assigned_object_circuit_group_assignment", "assigned_object_circuit_termination", "assigned_object_circuit_type", "assigned_object_cluster", "assigned_object_cluster_group", "assigned_object_cluster_type", "assigned_object_console_port", "assigned_object_console_server_port", "assigned_object_contact", "assigned_object_contact_assignment", "assigned_object_contact_group", "assigned_object_contact_role", "assigned_object_custom_field", "assigned_object_custom_field_choice_set", "assigned_object_device", "assigned_object_device_bay", "assigned_object_device_role", "assigned_object_device_type", "assigned_object_fhrp_group", "assigned_object_fhrp_group_assignment", "assigned_object_front_port", "assigned_object_ike_policy", "assigned_object_ike_proposal", "assigned_object_ip_address", "assigned_object_ip_range", "assigned_object_ip_sec_policy", "assigned_object_ip_sec_profile", "assigned_object_ip_sec_proposal", "assigned_object_interface", "assigned_object_inventory_item", "assigned_object_inventory_item_role", "assigned_object_journal_entry", "assigned_object_l2vpn", "assigned_object_l2vpn_termination", "assigned_object_location", "assigned_object_mac_address", "assigned_object_manufacturer", "assigned_object_module", "assigned_object_module_bay", "assigned_object_module_type", "assigned_object_module_type_profile", "assigned_object_platform", "assigned_object_power_feed", "assigned_object_power_outlet", "assigned_object_power_panel", "assigned_object_power_port", "assigned_object_prefix", "assigned_object_provider", "assigned_object_provider_account", "assigned_object_provider_network", "assigned_object_rir", "assigned_object_rack", "assigned_object_rack_reservation", "assigned_object_rack_role", "assigned_object_rack_type", "assigned_object_rear_port", "assigned_object_region", "assigned_object_role", "assigned_object_route_target", "assigned_object_service", "assigned_object_site", "assigned_object_site_group", "assigned_object_tag", "assigned_object_tenant", "assigned_object_tenant_group", "assigned_object_tunnel", "assigned_object_tunnel_group", "assigned_object_tunnel_termination", "assigned_object_vlan", "assigned_object_vlan_group", "assigned_object_vlan_translation_policy", "assigned_object_vlan_translation_rule", "assigned_object_vm_interface", "assigned_object_vrf", "assigned_object_virtual_chassis", "assigned_object_virtual_circuit", "assigned_object_virtual_circuit_termination", "assigned_object_virtual_circuit_type", "assigned_object_virtual_device_context", "assigned_object_virtual_disk", "assigned_object_virtual_machine", "assigned_object_wireless_lan", "assigned_object_wireless_lan_group", "assigned_object_wireless_link", "assigned_object_custom_link", "kind", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -4231,6 +4412,7 @@ class JournalEntry(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] assigned_object_asn: ASN assigned_object_asn_range: ASNRange assigned_object_aggregate: Aggregate @@ -4328,10 +4510,11 @@ class JournalEntry(_message.Message): comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] - def __init__(self, assigned_object_asn: _Optional[_Union[ASN, _Mapping]] = ..., assigned_object_asn_range: _Optional[_Union[ASNRange, _Mapping]] = ..., assigned_object_aggregate: _Optional[_Union[Aggregate, _Mapping]] = ..., assigned_object_cable: _Optional[_Union[Cable, _Mapping]] = ..., assigned_object_cable_path: _Optional[_Union[CablePath, _Mapping]] = ..., assigned_object_cable_termination: _Optional[_Union[CableTermination, _Mapping]] = ..., assigned_object_circuit: _Optional[_Union[Circuit, _Mapping]] = ..., assigned_object_circuit_group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., assigned_object_circuit_group_assignment: _Optional[_Union[CircuitGroupAssignment, _Mapping]] = ..., assigned_object_circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., assigned_object_circuit_type: _Optional[_Union[CircuitType, _Mapping]] = ..., assigned_object_cluster: _Optional[_Union[Cluster, _Mapping]] = ..., assigned_object_cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., assigned_object_cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., assigned_object_console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., assigned_object_console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., assigned_object_contact: _Optional[_Union[Contact, _Mapping]] = ..., assigned_object_contact_assignment: _Optional[_Union[ContactAssignment, _Mapping]] = ..., assigned_object_contact_group: _Optional[_Union[ContactGroup, _Mapping]] = ..., assigned_object_contact_role: _Optional[_Union[ContactRole, _Mapping]] = ..., assigned_object_custom_field: _Optional[_Union[CustomField, _Mapping]] = ..., assigned_object_custom_field_choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., assigned_object_device: _Optional[_Union[Device, _Mapping]] = ..., assigned_object_device_bay: _Optional[_Union[DeviceBay, _Mapping]] = ..., assigned_object_device_role: _Optional[_Union[DeviceRole, _Mapping]] = ..., assigned_object_device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., assigned_object_fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., assigned_object_fhrp_group_assignment: _Optional[_Union[FHRPGroupAssignment, _Mapping]] = ..., assigned_object_front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., assigned_object_ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., assigned_object_ike_proposal: _Optional[_Union[IKEProposal, _Mapping]] = ..., assigned_object_ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., assigned_object_ip_range: _Optional[_Union[IPRange, _Mapping]] = ..., assigned_object_ip_sec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., assigned_object_ip_sec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., assigned_object_ip_sec_proposal: _Optional[_Union[IPSecProposal, _Mapping]] = ..., assigned_object_interface: _Optional[_Union[Interface, _Mapping]] = ..., assigned_object_inventory_item: _Optional[_Union[InventoryItem, _Mapping]] = ..., assigned_object_inventory_item_role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., assigned_object_journal_entry: _Optional[_Union[JournalEntry, _Mapping]] = ..., assigned_object_l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., assigned_object_l2vpn_termination: _Optional[_Union[L2VPNTermination, _Mapping]] = ..., assigned_object_location: _Optional[_Union[Location, _Mapping]] = ..., assigned_object_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., assigned_object_manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., assigned_object_module: _Optional[_Union[Module, _Mapping]] = ..., assigned_object_module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., assigned_object_module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., assigned_object_module_type_profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., assigned_object_platform: _Optional[_Union[Platform, _Mapping]] = ..., assigned_object_power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., assigned_object_power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., assigned_object_power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., assigned_object_power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., assigned_object_prefix: _Optional[_Union[Prefix, _Mapping]] = ..., assigned_object_provider: _Optional[_Union[Provider, _Mapping]] = ..., assigned_object_provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., assigned_object_provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., assigned_object_rir: _Optional[_Union[RIR, _Mapping]] = ..., assigned_object_rack: _Optional[_Union[Rack, _Mapping]] = ..., assigned_object_rack_reservation: _Optional[_Union[RackReservation, _Mapping]] = ..., assigned_object_rack_role: _Optional[_Union[RackRole, _Mapping]] = ..., assigned_object_rack_type: _Optional[_Union[RackType, _Mapping]] = ..., assigned_object_rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., assigned_object_region: _Optional[_Union[Region, _Mapping]] = ..., assigned_object_role: _Optional[_Union[Role, _Mapping]] = ..., assigned_object_route_target: _Optional[_Union[RouteTarget, _Mapping]] = ..., assigned_object_service: _Optional[_Union[Service, _Mapping]] = ..., assigned_object_site: _Optional[_Union[Site, _Mapping]] = ..., assigned_object_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., assigned_object_tag: _Optional[_Union[Tag, _Mapping]] = ..., assigned_object_tenant: _Optional[_Union[Tenant, _Mapping]] = ..., assigned_object_tenant_group: _Optional[_Union[TenantGroup, _Mapping]] = ..., assigned_object_tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., assigned_object_tunnel_group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., assigned_object_tunnel_termination: _Optional[_Union[TunnelTermination, _Mapping]] = ..., assigned_object_vlan: _Optional[_Union[VLAN, _Mapping]] = ..., assigned_object_vlan_group: _Optional[_Union[VLANGroup, _Mapping]] = ..., assigned_object_vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., assigned_object_vlan_translation_rule: _Optional[_Union[VLANTranslationRule, _Mapping]] = ..., assigned_object_vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., assigned_object_vrf: _Optional[_Union[VRF, _Mapping]] = ..., assigned_object_virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., assigned_object_virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., assigned_object_virtual_circuit_termination: _Optional[_Union[VirtualCircuitTermination, _Mapping]] = ..., assigned_object_virtual_circuit_type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., assigned_object_virtual_device_context: _Optional[_Union[VirtualDeviceContext, _Mapping]] = ..., assigned_object_virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., assigned_object_virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., assigned_object_wireless_lan: _Optional[_Union[WirelessLAN, _Mapping]] = ..., assigned_object_wireless_lan_group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., assigned_object_wireless_link: _Optional[_Union[WirelessLink, _Mapping]] = ..., assigned_object_custom_link: _Optional[_Union[CustomLink, _Mapping]] = ..., kind: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + metadata: _struct_pb2.Struct + def __init__(self, assigned_object_asn: _Optional[_Union[ASN, _Mapping]] = ..., assigned_object_asn_range: _Optional[_Union[ASNRange, _Mapping]] = ..., assigned_object_aggregate: _Optional[_Union[Aggregate, _Mapping]] = ..., assigned_object_cable: _Optional[_Union[Cable, _Mapping]] = ..., assigned_object_cable_path: _Optional[_Union[CablePath, _Mapping]] = ..., assigned_object_cable_termination: _Optional[_Union[CableTermination, _Mapping]] = ..., assigned_object_circuit: _Optional[_Union[Circuit, _Mapping]] = ..., assigned_object_circuit_group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., assigned_object_circuit_group_assignment: _Optional[_Union[CircuitGroupAssignment, _Mapping]] = ..., assigned_object_circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., assigned_object_circuit_type: _Optional[_Union[CircuitType, _Mapping]] = ..., assigned_object_cluster: _Optional[_Union[Cluster, _Mapping]] = ..., assigned_object_cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., assigned_object_cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., assigned_object_console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., assigned_object_console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., assigned_object_contact: _Optional[_Union[Contact, _Mapping]] = ..., assigned_object_contact_assignment: _Optional[_Union[ContactAssignment, _Mapping]] = ..., assigned_object_contact_group: _Optional[_Union[ContactGroup, _Mapping]] = ..., assigned_object_contact_role: _Optional[_Union[ContactRole, _Mapping]] = ..., assigned_object_custom_field: _Optional[_Union[CustomField, _Mapping]] = ..., assigned_object_custom_field_choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., assigned_object_device: _Optional[_Union[Device, _Mapping]] = ..., assigned_object_device_bay: _Optional[_Union[DeviceBay, _Mapping]] = ..., assigned_object_device_role: _Optional[_Union[DeviceRole, _Mapping]] = ..., assigned_object_device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., assigned_object_fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., assigned_object_fhrp_group_assignment: _Optional[_Union[FHRPGroupAssignment, _Mapping]] = ..., assigned_object_front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., assigned_object_ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., assigned_object_ike_proposal: _Optional[_Union[IKEProposal, _Mapping]] = ..., assigned_object_ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., assigned_object_ip_range: _Optional[_Union[IPRange, _Mapping]] = ..., assigned_object_ip_sec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., assigned_object_ip_sec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., assigned_object_ip_sec_proposal: _Optional[_Union[IPSecProposal, _Mapping]] = ..., assigned_object_interface: _Optional[_Union[Interface, _Mapping]] = ..., assigned_object_inventory_item: _Optional[_Union[InventoryItem, _Mapping]] = ..., assigned_object_inventory_item_role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., assigned_object_journal_entry: _Optional[_Union[JournalEntry, _Mapping]] = ..., assigned_object_l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., assigned_object_l2vpn_termination: _Optional[_Union[L2VPNTermination, _Mapping]] = ..., assigned_object_location: _Optional[_Union[Location, _Mapping]] = ..., assigned_object_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., assigned_object_manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., assigned_object_module: _Optional[_Union[Module, _Mapping]] = ..., assigned_object_module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., assigned_object_module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., assigned_object_module_type_profile: _Optional[_Union[ModuleTypeProfile, _Mapping]] = ..., assigned_object_platform: _Optional[_Union[Platform, _Mapping]] = ..., assigned_object_power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., assigned_object_power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., assigned_object_power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., assigned_object_power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., assigned_object_prefix: _Optional[_Union[Prefix, _Mapping]] = ..., assigned_object_provider: _Optional[_Union[Provider, _Mapping]] = ..., assigned_object_provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., assigned_object_provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., assigned_object_rir: _Optional[_Union[RIR, _Mapping]] = ..., assigned_object_rack: _Optional[_Union[Rack, _Mapping]] = ..., assigned_object_rack_reservation: _Optional[_Union[RackReservation, _Mapping]] = ..., assigned_object_rack_role: _Optional[_Union[RackRole, _Mapping]] = ..., assigned_object_rack_type: _Optional[_Union[RackType, _Mapping]] = ..., assigned_object_rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., assigned_object_region: _Optional[_Union[Region, _Mapping]] = ..., assigned_object_role: _Optional[_Union[Role, _Mapping]] = ..., assigned_object_route_target: _Optional[_Union[RouteTarget, _Mapping]] = ..., assigned_object_service: _Optional[_Union[Service, _Mapping]] = ..., assigned_object_site: _Optional[_Union[Site, _Mapping]] = ..., assigned_object_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., assigned_object_tag: _Optional[_Union[Tag, _Mapping]] = ..., assigned_object_tenant: _Optional[_Union[Tenant, _Mapping]] = ..., assigned_object_tenant_group: _Optional[_Union[TenantGroup, _Mapping]] = ..., assigned_object_tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., assigned_object_tunnel_group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., assigned_object_tunnel_termination: _Optional[_Union[TunnelTermination, _Mapping]] = ..., assigned_object_vlan: _Optional[_Union[VLAN, _Mapping]] = ..., assigned_object_vlan_group: _Optional[_Union[VLANGroup, _Mapping]] = ..., assigned_object_vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., assigned_object_vlan_translation_rule: _Optional[_Union[VLANTranslationRule, _Mapping]] = ..., assigned_object_vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., assigned_object_vrf: _Optional[_Union[VRF, _Mapping]] = ..., assigned_object_virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., assigned_object_virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., assigned_object_virtual_circuit_termination: _Optional[_Union[VirtualCircuitTermination, _Mapping]] = ..., assigned_object_virtual_circuit_type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., assigned_object_virtual_device_context: _Optional[_Union[VirtualDeviceContext, _Mapping]] = ..., assigned_object_virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., assigned_object_virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., assigned_object_wireless_lan: _Optional[_Union[WirelessLAN, _Mapping]] = ..., assigned_object_wireless_lan_group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., assigned_object_wireless_link: _Optional[_Union[WirelessLink, _Mapping]] = ..., assigned_object_custom_link: _Optional[_Union[CustomLink, _Mapping]] = ..., kind: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class ModuleTypeProfile(_message.Message): - __slots__ = ("name", "description", "schema", "comments", "tags", "custom_fields") + __slots__ = ("name", "description", "schema", "comments", "tags", "custom_fields", "metadata") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -4345,16 +4528,18 @@ class ModuleTypeProfile(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str description: str schema: str comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] - def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., schema: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + metadata: _struct_pb2.Struct + def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., schema: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class CustomLink(_message.Message): - __slots__ = ("name", "enabled", "link_text", "link_url", "weight", "group_name", "button_class", "new_window", "object_types") + __slots__ = ("name", "enabled", "link_text", "link_url", "weight", "group_name", "button_class", "new_window", "object_types", "metadata") NAME_FIELD_NUMBER: _ClassVar[int] ENABLED_FIELD_NUMBER: _ClassVar[int] LINK_TEXT_FIELD_NUMBER: _ClassVar[int] @@ -4364,6 +4549,7 @@ class CustomLink(_message.Message): BUTTON_CLASS_FIELD_NUMBER: _ClassVar[int] NEW_WINDOW_FIELD_NUMBER: _ClassVar[int] OBJECT_TYPES_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] name: str enabled: bool link_text: str @@ -4373,4 +4559,5 @@ class CustomLink(_message.Message): button_class: str new_window: bool object_types: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, name: _Optional[str] = ..., enabled: bool = ..., link_text: _Optional[str] = ..., link_url: _Optional[str] = ..., weight: _Optional[int] = ..., group_name: _Optional[str] = ..., button_class: _Optional[str] = ..., new_window: bool = ..., object_types: _Optional[_Iterable[str]] = ...) -> None: ... + metadata: _struct_pb2.Struct + def __init__(self, name: _Optional[str] = ..., enabled: bool = ..., link_text: _Optional[str] = ..., link_url: _Optional[str] = ..., weight: _Optional[int] = ..., group_name: _Optional[str] = ..., button_class: _Optional[str] = ..., new_window: bool = ..., object_types: _Optional[_Iterable[str]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... diff --git a/netboxlabs/diode/sdk/ingester.py b/netboxlabs/diode/sdk/ingester.py index f694117..ffd6596 100644 --- a/netboxlabs/diode/sdk/ingester.py +++ b/netboxlabs/diode/sdk/ingester.py @@ -2,7 +2,7 @@ # # Generated code. DO NOT EDIT. -# Timestamp: 2025-11-04 18:56:03Z +# Timestamp: 2025-11-14 18:10:22Z # # ruff: noqa: C901 @@ -18,90 +18,90 @@ 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', - 'CustomField': 'name', - 'CustomFieldChoiceSet': 'name', - 'ModuleTypeProfile': 'name', - 'CustomLink': 'name', + "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", + "CustomField": "name", + "CustomFieldChoiceSet": "name", + "ModuleTypeProfile": "name", + "CustomLink": "name", } def slugify(value: Any) -> str: """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) + value = str(value).strip().strip("_").lower() + value = re.sub(r"[^\w\s-]", "", value) + return re.sub(r"[-\s]+", "-", value) def is_field_set(value: Any, field_name: str) -> bool: @@ -127,10 +127,12 @@ def convert_to_protobuf(value: Any, protobuf_class): """Convert a value to a protobuf message.""" if value is None: return None - if isinstance(value, str|int|float): + 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)}') + raise ValueError( + f"{protobuf_class.__name__} cannot be initialized with {type(value)}" + ) kwargs = {pvk: value} value = protobuf_class(**kwargs) return value @@ -164,16 +166,24 @@ def __new__( cable_termination: str | CableTermination | pb.CableTermination | 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_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: 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, + 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_assignment: ( + str | ContactAssignment | pb.ContactAssignment | None + ) = None, contact_group: str | ContactGroup | pb.ContactGroup | None = None, contact_role: str | ContactRole | pb.ContactRole | None = None, device: str | Device | pb.Device | None = None, @@ -181,7 +191,9 @@ def __new__( device_role: str | DeviceRole | pb.DeviceRole | None = None, device_type: str | DeviceType | pb.DeviceType | None = None, fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, - fhrp_group_assignment: str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None = None, + fhrp_group_assignment: ( + str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None + ) = None, front_port: str | FrontPort | pb.FrontPort | None = None, ike_policy: str | IKEPolicy | pb.IKEPolicy | None = None, ike_proposal: str | IKEProposal | pb.IKEProposal | None = None, @@ -192,7 +204,9 @@ def __new__( ip_sec_proposal: str | IPSecProposal | pb.IPSecProposal | None = None, interface: str | Interface | pb.Interface | None = None, inventory_item: str | InventoryItem | pb.InventoryItem | None = None, - inventory_item_role: str | InventoryItemRole | pb.InventoryItemRole | 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, @@ -227,29 +241,44 @@ def __new__( 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, + 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, + 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, - 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_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, 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, custom_field: str | CustomField | pb.CustomField | None = None, - custom_field_choice_set: str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None = None, + custom_field_choice_set: ( + str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None + ) = None, journal_entry: str | JournalEntry | pb.JournalEntry | None = None, - module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, + module_type_profile: ( + str | ModuleTypeProfile | pb.ModuleTypeProfile | None + ) = None, custom_link: str | CustomLink | pb.CustomLink | None = None, - metadata: dict[str, Any] | None = None, ) -> pb.Entity: """Create a new Entity.""" asn = convert_to_protobuf(asn, pb.ASN) @@ -260,16 +289,24 @@ def __new__( cable_termination = convert_to_protobuf(cable_termination, pb.CableTermination) 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_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 = 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) + 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_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) device = convert_to_protobuf(device, pb.Device) @@ -277,7 +314,9 @@ def __new__( device_role = convert_to_protobuf(device_role, pb.DeviceRole) device_type = convert_to_protobuf(device_type, pb.DeviceType) fhrp_group = convert_to_protobuf(fhrp_group, pb.FHRPGroup) - fhrp_group_assignment = convert_to_protobuf(fhrp_group_assignment, pb.FHRPGroupAssignment) + fhrp_group_assignment = convert_to_protobuf( + fhrp_group_assignment, pb.FHRPGroupAssignment + ) front_port = convert_to_protobuf(front_port, pb.FrontPort) ike_policy = convert_to_protobuf(ike_policy, pb.IKEPolicy) ike_proposal = convert_to_protobuf(ike_proposal, pb.IKEProposal) @@ -288,7 +327,9 @@ def __new__( ip_sec_proposal = convert_to_protobuf(ip_sec_proposal, pb.IPSecProposal) interface = convert_to_protobuf(interface, pb.Interface) inventory_item = convert_to_protobuf(inventory_item, pb.InventoryItem) - inventory_item_role = convert_to_protobuf(inventory_item_role, pb.InventoryItemRole) + 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) @@ -323,40 +364,50 @@ def __new__( 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) + 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) + 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) - 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_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) 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_lan_group = convert_to_protobuf( + wireless_lan_group, pb.WirelessLANGroup + ) wireless_link = convert_to_protobuf(wireless_link, pb.WirelessLink) custom_field = convert_to_protobuf(custom_field, pb.CustomField) - custom_field_choice_set = convert_to_protobuf(custom_field_choice_set, pb.CustomFieldChoiceSet) + custom_field_choice_set = convert_to_protobuf( + custom_field_choice_set, pb.CustomFieldChoiceSet + ) journal_entry = convert_to_protobuf(journal_entry, pb.JournalEntry) - module_type_profile = convert_to_protobuf(module_type_profile, pb.ModuleTypeProfile) + module_type_profile = convert_to_protobuf( + module_type_profile, pb.ModuleTypeProfile + ) custom_link = convert_to_protobuf(custom_link, pb.CustomLink) - metadata = convert_dict_to_struct(metadata) - # Handle metadata for Entity - if metadata is not None: - _metadata = convert_dict_to_struct(metadata) - else: - _metadata = None if timestamp is None: ts = _timestamp_pb2.Timestamp() ts.GetCurrentTime() timestamp = ts - - # Use the metadata parameter if provided result = pb.Entity( timestamp=timestamp, asn=asn, @@ -452,7 +503,6 @@ def __new__( journal_entry=journal_entry, module_type_profile=module_type_profile, custom_link=custom_link, - metadata=metadata, ) return result @@ -468,13 +518,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.ASN( asn=asn, rir=rir, @@ -483,6 +537,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -500,13 +555,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.ASNRange( name=name, slug=slug, @@ -517,6 +576,7 @@ def __new__( description=description, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -533,13 +593,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.Aggregate( prefix=prefix, rir=rir, @@ -549,6 +613,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -570,7 +635,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.Cable: """Create a new Cable.""" a_terminations = convert_to_protobuf_list(a_terminations, pb.GenericObject) @@ -578,6 +646,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) + metadata = convert_dict_to_struct(metadata) result = pb.Cable( type=type, a_terminations=a_terminations, @@ -592,6 +661,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -604,12 +674,15 @@ def __new__( is_active: bool | None = None, is_complete: bool | None = None, is_split: bool | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.CablePath: """Create a new CablePath.""" + metadata = convert_dict_to_struct(metadata) result = pb.CablePath( is_active=is_active, is_complete=is_complete, is_split=is_split, + metadata=metadata, ) return result @@ -621,27 +694,47 @@ 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_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_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, + metadata: dict[str, Any] | 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_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_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) + metadata = convert_dict_to_struct(metadata) result = pb.CableTermination( cable=cable, cable_end=cable_end, @@ -654,6 +747,7 @@ def __new__( termination_power_outlet=termination_power_outlet, termination_power_port=termination_power_port, termination_rear_port=termination_rear_port, + metadata=metadata, ) return result @@ -677,8 +771,13 @@ def __new__( 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, + assignments: ( + list[str | CircuitGroupAssignment | pb.CircuitGroupAssignment] | None + ) = None, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.Circuit: """Create a new Circuit.""" provider = convert_to_protobuf(provider, pb.Provider) @@ -688,6 +787,7 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) result = pb.Circuit( cid=cid, provider=provider, @@ -705,6 +805,7 @@ def __new__( tags=tags, assignments=assignments, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -719,12 +820,16 @@ def __new__( description: 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.CircuitGroup( name=name, slug=slug, @@ -732,6 +837,7 @@ def __new__( tenant=tenant, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -746,18 +852,23 @@ def __new__( member_virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, priority: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, + metadata: dict[str, Any] | 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) + member_virtual_circuit = convert_to_protobuf( + member_virtual_circuit, pb.VirtualCircuit + ) tags = convert_to_protobuf_list(tags, pb.Tag) + metadata = convert_dict_to_struct(metadata) result = pb.CircuitGroupAssignment( group=group, member_circuit=member_circuit, member_virtual_circuit=member_virtual_circuit, priority=priority, tags=tags, + metadata=metadata, ) return result @@ -770,7 +881,9 @@ def __new__( 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_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, @@ -781,17 +894,25 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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_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) + 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) + metadata = convert_dict_to_struct(metadata) result = pb.CircuitTermination( circuit=circuit, term_side=term_side, @@ -808,6 +929,7 @@ def __new__( mark_connected=mark_connected, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -822,11 +944,15 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.CircuitType( name=name, slug=slug, @@ -834,6 +960,7 @@ def __new__( description=description, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -855,7 +982,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.Cluster: """Create a new Cluster.""" type = convert_to_protobuf(type, pb.ClusterType) @@ -867,6 +997,7 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) result = pb.Cluster( name=name, type=type, @@ -881,6 +1012,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -894,17 +1026,22 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.ClusterGroup( name=name, slug=slug, description=description, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -918,17 +1055,22 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.ClusterType( name=name, slug=slug, description=description, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -947,13 +1089,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.ConsolePort( device=device, module=module, @@ -965,6 +1111,7 @@ def __new__( mark_connected=mark_connected, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -983,13 +1130,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.ConsoleServerPort( device=device, module=module, @@ -1001,6 +1152,7 @@ def __new__( mark_connected=mark_connected, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -1020,14 +1172,18 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, groups: list[str | ContactGroup | pb.ContactGroup] | None = None, + metadata: dict[str, Any] | 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) groups = convert_to_protobuf_list(groups, pb.ContactGroup) + metadata = convert_dict_to_struct(metadata) result = pb.Contact( group=group, name=name, @@ -1041,6 +1197,7 @@ def __new__( tags=tags, custom_fields=custom_fields, groups=groups, + metadata=metadata, ) return result @@ -1055,19 +1212,29 @@ def __new__( 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_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_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_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_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, @@ -1075,7 +1242,9 @@ def __new__( 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_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, @@ -1086,9 +1255,13 @@ def __new__( 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_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_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, @@ -1102,11 +1275,17 @@ def __new__( 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_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_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, @@ -1121,33 +1300,54 @@ def __new__( 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_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_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_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_lan_group: ( + str | WirelessLANGroup | pb.WirelessLANGroup | None + ) = None, object_wireless_link: str | WirelessLink | pb.WirelessLink | None = None, object_custom_field: str | CustomField | pb.CustomField | None = None, - object_custom_field_choice_set: str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None = None, + object_custom_field_choice_set: ( + str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None + ) = None, object_journal_entry: str | JournalEntry | pb.JournalEntry | None = None, - object_module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, + object_module_type_profile: ( + str | ModuleTypeProfile | pb.ModuleTypeProfile | None + ) = None, object_custom_link: str | CustomLink | pb.CustomLink | 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.ContactAssignment: """Create a new ContactAssignment.""" object_asn = convert_to_protobuf(object_asn, pb.ASN) @@ -1155,40 +1355,68 @@ def __new__( 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_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_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_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_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_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_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_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_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_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) @@ -1202,11 +1430,17 @@ def __new__( 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_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_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) @@ -1221,32 +1455,61 @@ def __new__( 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_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_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_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_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) + object_wireless_lan_group = convert_to_protobuf( + object_wireless_lan_group, pb.WirelessLANGroup + ) + object_wireless_link = convert_to_protobuf( + object_wireless_link, pb.WirelessLink + ) object_custom_field = convert_to_protobuf(object_custom_field, pb.CustomField) - object_custom_field_choice_set = convert_to_protobuf(object_custom_field_choice_set, pb.CustomFieldChoiceSet) - object_journal_entry = convert_to_protobuf(object_journal_entry, pb.JournalEntry) - object_module_type_profile = convert_to_protobuf(object_module_type_profile, pb.ModuleTypeProfile) + object_custom_field_choice_set = convert_to_protobuf( + object_custom_field_choice_set, pb.CustomFieldChoiceSet + ) + object_journal_entry = convert_to_protobuf( + object_journal_entry, pb.JournalEntry + ) + object_module_type_profile = convert_to_protobuf( + object_module_type_profile, pb.ModuleTypeProfile + ) object_custom_link = convert_to_protobuf(object_custom_link, pb.CustomLink) 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) + metadata = convert_dict_to_struct(metadata) result = pb.ContactAssignment( object_asn=object_asn, object_asn_range=object_asn_range, @@ -1346,6 +1609,7 @@ def __new__( priority=priority, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -1360,13 +1624,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, comments: str | None = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.ContactGroup( name=name, slug=slug, @@ -1375,6 +1643,7 @@ def __new__( tags=tags, custom_fields=custom_fields, comments=comments, + metadata=metadata, ) return result @@ -1388,17 +1657,22 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.ContactRole( name=name, slug=slug, description=description, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -1416,16 +1690,24 @@ def __new__( cable_termination: str | CableTermination | pb.CableTermination | 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_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: 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, + 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_assignment: ( + str | ContactAssignment | pb.ContactAssignment | None + ) = None, contact_group: str | ContactGroup | pb.ContactGroup | None = None, contact_role: str | ContactRole | pb.ContactRole | None = None, device: str | Device | pb.Device | None = None, @@ -1433,7 +1715,9 @@ def __new__( device_role: str | DeviceRole | pb.DeviceRole | None = None, device_type: str | DeviceType | pb.DeviceType | None = None, fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, - fhrp_group_assignment: str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None = None, + fhrp_group_assignment: ( + str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None + ) = None, front_port: str | FrontPort | pb.FrontPort | None = None, ike_policy: str | IKEPolicy | pb.IKEPolicy | None = None, ike_proposal: str | IKEProposal | pb.IKEProposal | None = None, @@ -1444,7 +1728,9 @@ def __new__( ip_sec_proposal: str | IPSecProposal | pb.IPSecProposal | None = None, interface: str | Interface | pb.Interface | None = None, inventory_item: str | InventoryItem | pb.InventoryItem | None = None, - inventory_item_role: str | InventoryItemRole | pb.InventoryItemRole | 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, @@ -1479,27 +1765,43 @@ def __new__( 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, + 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, + 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, - 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_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, 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, custom_field: str | CustomField | pb.CustomField | None = None, - custom_field_choice_set: str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None = None, + custom_field_choice_set: ( + str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None + ) = None, journal_entry: str | JournalEntry | pb.JournalEntry | None = None, - module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, + module_type_profile: ( + str | ModuleTypeProfile | pb.ModuleTypeProfile | None + ) = None, custom_link: str | CustomLink | pb.CustomLink | None = None, ) -> pb.CustomFieldObjectReference: """Create a new CustomFieldObjectReference.""" @@ -1511,16 +1813,24 @@ def __new__( cable_termination = convert_to_protobuf(cable_termination, pb.CableTermination) 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_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 = 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) + 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_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) device = convert_to_protobuf(device, pb.Device) @@ -1528,7 +1838,9 @@ def __new__( device_role = convert_to_protobuf(device_role, pb.DeviceRole) device_type = convert_to_protobuf(device_type, pb.DeviceType) fhrp_group = convert_to_protobuf(fhrp_group, pb.FHRPGroup) - fhrp_group_assignment = convert_to_protobuf(fhrp_group_assignment, pb.FHRPGroupAssignment) + fhrp_group_assignment = convert_to_protobuf( + fhrp_group_assignment, pb.FHRPGroupAssignment + ) front_port = convert_to_protobuf(front_port, pb.FrontPort) ike_policy = convert_to_protobuf(ike_policy, pb.IKEPolicy) ike_proposal = convert_to_protobuf(ike_proposal, pb.IKEProposal) @@ -1539,7 +1851,9 @@ def __new__( ip_sec_proposal = convert_to_protobuf(ip_sec_proposal, pb.IPSecProposal) interface = convert_to_protobuf(interface, pb.Interface) inventory_item = convert_to_protobuf(inventory_item, pb.InventoryItem) - inventory_item_role = convert_to_protobuf(inventory_item_role, pb.InventoryItemRole) + 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) @@ -1574,27 +1888,45 @@ def __new__( 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) + 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) + 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) - 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_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) 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_lan_group = convert_to_protobuf( + wireless_lan_group, pb.WirelessLANGroup + ) wireless_link = convert_to_protobuf(wireless_link, pb.WirelessLink) custom_field = convert_to_protobuf(custom_field, pb.CustomField) - custom_field_choice_set = convert_to_protobuf(custom_field_choice_set, pb.CustomFieldChoiceSet) + custom_field_choice_set = convert_to_protobuf( + custom_field_choice_set, pb.CustomFieldChoiceSet + ) journal_entry = convert_to_protobuf(journal_entry, pb.JournalEntry) - module_type_profile = convert_to_protobuf(module_type_profile, pb.ModuleTypeProfile) + module_type_profile = convert_to_protobuf( + module_type_profile, pb.ModuleTypeProfile + ) custom_link = convert_to_protobuf(custom_link, pb.CustomLink) result = pb.CustomFieldObjectReference( asn=asn, @@ -1700,7 +2032,10 @@ class CustomFieldValue: def __new__( cls, multiple_selection: list[str] | None = None, - multiple_objects: list[str | CustomFieldObjectReference | pb.CustomFieldObjectReference] | None = None, + multiple_objects: ( + list[str | CustomFieldObjectReference | pb.CustomFieldObjectReference] + | None + ) = None, text: str | None = None, long_text: str | None = None, integer: int | None = None, @@ -1711,10 +2046,14 @@ def __new__( url: str | None = None, json: str | None = None, selection: str | None = None, - object: str | CustomFieldObjectReference | pb.CustomFieldObjectReference | None = None, + object: ( + str | CustomFieldObjectReference | pb.CustomFieldObjectReference | None + ) = None, ) -> pb.CustomFieldValue: """Create a new CustomFieldValue.""" - multiple_objects = convert_to_protobuf_list(multiple_objects, pb.CustomFieldObjectReference) + multiple_objects = convert_to_protobuf_list( + multiple_objects, pb.CustomFieldObjectReference + ) object = convert_to_protobuf(object, pb.CustomFieldObjectReference) result = pb.CustomFieldValue( multiple_selection=multiple_selection, @@ -1765,7 +2104,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, # shortcuts manufacturer: str | Manufacturer | pb.Manufacturer = None, ) -> pb.Device: @@ -1784,15 +2126,16 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) # 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'): + 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'): + if device_type is not None and not device_type.HasField("manufacturer"): device_type.manufacturer.CopyFrom(manufacturer) result = pb.Device( name=name, @@ -1822,6 +2165,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -1837,13 +2181,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.DeviceBay( device=device, name=name, @@ -1852,6 +2200,7 @@ def __new__( installed_device=installed_device, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -1867,14 +2216,18 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, parent: str | DeviceRole | pb.DeviceRole | None = None, comments: str | None = None, + metadata: dict[str, Any] | 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) parent = convert_to_protobuf(parent, pb.DeviceRole) + metadata = convert_dict_to_struct(metadata) result = pb.DeviceRole( name=name, slug=slug, @@ -1885,6 +2238,7 @@ def __new__( custom_fields=custom_fields, parent=parent, comments=comments, + metadata=metadata, ) return result @@ -1909,13 +2263,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.DeviceType( manufacturer=manufacturer, default_platform=default_platform, @@ -1933,6 +2291,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -1950,11 +2309,15 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.FHRPGroup( name=name, protocol=protocol, @@ -1965,6 +2328,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -1980,19 +2344,29 @@ def __new__( 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_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_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_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_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, @@ -2000,7 +2374,9 @@ def __new__( 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_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, @@ -2011,9 +2387,13 @@ def __new__( 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_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_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, @@ -2027,11 +2407,17 @@ def __new__( 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_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_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, @@ -2046,29 +2432,54 @@ def __new__( 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_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_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_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_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_lan_group: ( + str | WirelessLANGroup | pb.WirelessLANGroup | None + ) = None, interface_wireless_link: str | WirelessLink | pb.WirelessLink | None = None, interface_custom_field: str | CustomField | pb.CustomField | None = None, - interface_custom_field_choice_set: str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None = None, + interface_custom_field_choice_set: ( + str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None + ) = None, interface_journal_entry: str | JournalEntry | pb.JournalEntry | None = None, - interface_module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, + interface_module_type_profile: ( + str | ModuleTypeProfile | pb.ModuleTypeProfile | None + ) = None, interface_custom_link: str | CustomLink | pb.CustomLink | None = None, priority: int | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.FHRPGroupAssignment: """Create a new FHRPGroupAssignment.""" group = convert_to_protobuf(group, pb.FHRPGroup) @@ -2077,94 +2488,199 @@ def __new__( 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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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) - interface_custom_field = convert_to_protobuf(interface_custom_field, pb.CustomField) - interface_custom_field_choice_set = convert_to_protobuf(interface_custom_field_choice_set, pb.CustomFieldChoiceSet) - interface_journal_entry = convert_to_protobuf(interface_journal_entry, pb.JournalEntry) - interface_module_type_profile = convert_to_protobuf(interface_module_type_profile, pb.ModuleTypeProfile) - interface_custom_link = convert_to_protobuf(interface_custom_link, pb.CustomLink) + 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 + ) + interface_custom_field = convert_to_protobuf( + interface_custom_field, pb.CustomField + ) + interface_custom_field_choice_set = convert_to_protobuf( + interface_custom_field_choice_set, pb.CustomFieldChoiceSet + ) + interface_journal_entry = convert_to_protobuf( + interface_journal_entry, pb.JournalEntry + ) + interface_module_type_profile = convert_to_protobuf( + interface_module_type_profile, pb.ModuleTypeProfile + ) + interface_custom_link = convert_to_protobuf( + interface_custom_link, pb.CustomLink + ) + metadata = convert_dict_to_struct(metadata) result = pb.FHRPGroupAssignment( group=group, interface_asn=interface_asn, @@ -2261,6 +2777,7 @@ def __new__( interface_module_type_profile=interface_module_type_profile, interface_custom_link=interface_custom_link, priority=priority, + metadata=metadata, ) return result @@ -2281,7 +2798,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.FrontPort: """Create a new FrontPort.""" device = convert_to_protobuf(device, pb.Device) @@ -2289,6 +2809,7 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) result = pb.FrontPort( device=device, module=module, @@ -2302,6 +2823,7 @@ def __new__( mark_connected=mark_connected, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -2316,19 +2838,29 @@ def __new__( 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_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_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_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_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, @@ -2336,7 +2868,9 @@ def __new__( 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_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, @@ -2347,9 +2881,13 @@ def __new__( 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_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_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, @@ -2363,11 +2901,17 @@ def __new__( 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_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_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, @@ -2382,27 +2926,45 @@ def __new__( 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_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_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_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_lan_group: ( + str | WirelessLANGroup | pb.WirelessLANGroup | None + ) = None, object_wireless_link: str | WirelessLink | pb.WirelessLink | None = None, object_custom_field: str | CustomField | pb.CustomField | None = None, - object_custom_field_choice_set: str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None = None, + object_custom_field_choice_set: ( + str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None + ) = None, object_journal_entry: str | JournalEntry | pb.JournalEntry | None = None, - object_module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, + object_module_type_profile: ( + str | ModuleTypeProfile | pb.ModuleTypeProfile | None + ) = None, object_custom_link: str | CustomLink | pb.CustomLink | None = None, ) -> pb.GenericObject: """Create a new GenericObject.""" @@ -2411,40 +2973,68 @@ def __new__( 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_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_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_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_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_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_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_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_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_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) @@ -2458,11 +3048,17 @@ def __new__( 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_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_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) @@ -2477,27 +3073,55 @@ def __new__( 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_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_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_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_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) + object_wireless_lan_group = convert_to_protobuf( + object_wireless_lan_group, pb.WirelessLANGroup + ) + object_wireless_link = convert_to_protobuf( + object_wireless_link, pb.WirelessLink + ) object_custom_field = convert_to_protobuf(object_custom_field, pb.CustomField) - object_custom_field_choice_set = convert_to_protobuf(object_custom_field_choice_set, pb.CustomFieldChoiceSet) - object_journal_entry = convert_to_protobuf(object_journal_entry, pb.JournalEntry) - object_module_type_profile = convert_to_protobuf(object_module_type_profile, pb.ModuleTypeProfile) + object_custom_field_choice_set = convert_to_protobuf( + object_custom_field_choice_set, pb.CustomFieldChoiceSet + ) + object_journal_entry = convert_to_protobuf( + object_journal_entry, pb.JournalEntry + ) + object_module_type_profile = convert_to_protobuf( + object_module_type_profile, pb.ModuleTypeProfile + ) object_custom_link = convert_to_protobuf(object_custom_link, pb.CustomLink) result = pb.GenericObject( object_asn=object_asn, @@ -2609,13 +3233,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, proposals: list[str | IKEProposal | pb.IKEProposal] | None = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.IKEPolicy( name=name, description=description, @@ -2626,6 +3254,7 @@ def __new__( tags=tags, custom_fields=custom_fields, proposals=proposals, + metadata=metadata, ) return result @@ -2644,11 +3273,15 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.IKEProposal( name=name, description=description, @@ -2660,6 +3293,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -2682,7 +3316,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, # shortcuts manufacturer: str | Manufacturer | pb.Manufacturer = None, device_type: str | DeviceType | pb.DeviceType = None, @@ -2694,12 +3331,19 @@ def __new__( """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) + 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) + metadata = convert_dict_to_struct(metadata) # shortcut types (not directly used) manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) @@ -2711,26 +3355,32 @@ def __new__( # apply shortcuts if manufacturer is not None: - if platform is not None and not platform.HasField('manufacturer'): + 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'): + 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'): + 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'): + 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'): + 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'): + 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'): + 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'): + if ( + assigned_object_vm_interface is not None + and not assigned_object_vm_interface.HasField("device") + ): assigned_object_vm_interface.device.CopyFrom(device) result = pb.IPAddress( address=address, @@ -2747,6 +3397,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -2766,8 +3417,11 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, mark_populated: bool | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.IPRange: """Create a new IPRange.""" vrf = convert_to_protobuf(vrf, pb.VRF) @@ -2775,6 +3429,7 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) result = pb.IPRange( start_address=start_address, end_address=end_address, @@ -2788,6 +3443,7 @@ def __new__( mark_utilized=mark_utilized, custom_fields=custom_fields, mark_populated=mark_populated, + metadata=metadata, ) return result @@ -2802,13 +3458,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, proposals: list[str | IPSecProposal | pb.IPSecProposal] | None = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.IPSecPolicy( name=name, description=description, @@ -2817,6 +3477,7 @@ def __new__( tags=tags, custom_fields=custom_fields, proposals=proposals, + metadata=metadata, ) return result @@ -2833,13 +3494,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.IPSecProfile( name=name, description=description, @@ -2849,6 +3514,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -2866,11 +3532,15 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.IPSecProposal( name=name, description=description, @@ -2881,6 +3551,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -2916,14 +3587,19 @@ def __new__( 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, + 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, + 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, + metadata: dict[str, Any] | None = None, # shortcuts manufacturer: str | Manufacturer | pb.Manufacturer = None, device_type: str | DeviceType | pb.DeviceType = None, @@ -2940,13 +3616,16 @@ def __new__( 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) + 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) 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) + metadata = convert_dict_to_struct(metadata) # shortcut types (not directly used) manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) @@ -2957,21 +3636,21 @@ def __new__( # apply shortcuts if manufacturer is not None: - if platform is not None and not platform.HasField('manufacturer'): + 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'): + 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'): + 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'): + 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'): + 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'): + if device is not None and not device.HasField("role"): device.role.CopyFrom(role) result = pb.Interface( device=device, @@ -3008,6 +3687,7 @@ def __new__( vdcs=vdcs, tagged_vlans=tagged_vlans, wireless_lans=wireless_lans, + metadata=metadata, ) return result @@ -3030,29 +3710,41 @@ def __new__( 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_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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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_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_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) + metadata = convert_dict_to_struct(metadata) result = pb.InventoryItem( device=device, parent=parent, @@ -3075,6 +3767,7 @@ def __new__( component_rear_port=component_rear_port, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -3089,11 +3782,15 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.InventoryItemRole( name=name, slug=slug, @@ -3101,6 +3798,7 @@ def __new__( description=description, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -3118,10 +3816,13 @@ def __new__( 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, + 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, status: str | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.L2VPN: """Create a new L2VPN.""" tenant = convert_to_protobuf(tenant, pb.Tenant) @@ -3129,6 +3830,7 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) result = pb.L2VPN( identifier=identifier, name=name, @@ -3142,6 +3844,7 @@ def __new__( import_targets=import_targets, export_targets=export_targets, status=status, + metadata=metadata, ) return result @@ -3160,49 +3863,85 @@ def __new__( assigned_object_aggregate: str | Aggregate | pb.Aggregate | None = None, assigned_object_cable: str | Cable | pb.Cable | None = None, assigned_object_cable_path: str | CablePath | pb.CablePath | None = None, - assigned_object_cable_termination: str | CableTermination | pb.CableTermination | None = None, + assigned_object_cable_termination: ( + str | CableTermination | pb.CableTermination | None + ) = None, assigned_object_circuit: str | Circuit | pb.Circuit | None = None, - assigned_object_circuit_group: str | CircuitGroup | pb.CircuitGroup | None = None, - assigned_object_circuit_group_assignment: str | CircuitGroupAssignment | pb.CircuitGroupAssignment | None = None, - assigned_object_circuit_termination: str | CircuitTermination | pb.CircuitTermination | None = None, + assigned_object_circuit_group: ( + str | CircuitGroup | pb.CircuitGroup | None + ) = None, + assigned_object_circuit_group_assignment: ( + str | CircuitGroupAssignment | pb.CircuitGroupAssignment | None + ) = None, + assigned_object_circuit_termination: ( + str | CircuitTermination | pb.CircuitTermination | None + ) = None, assigned_object_circuit_type: str | CircuitType | pb.CircuitType | None = None, assigned_object_cluster: str | Cluster | pb.Cluster | None = None, - assigned_object_cluster_group: str | ClusterGroup | pb.ClusterGroup | None = None, + assigned_object_cluster_group: ( + str | ClusterGroup | pb.ClusterGroup | None + ) = None, assigned_object_cluster_type: str | ClusterType | pb.ClusterType | None = None, assigned_object_console_port: str | ConsolePort | pb.ConsolePort | None = None, - assigned_object_console_server_port: str | ConsoleServerPort | pb.ConsoleServerPort | None = None, + assigned_object_console_server_port: ( + str | ConsoleServerPort | pb.ConsoleServerPort | None + ) = None, assigned_object_contact: str | Contact | pb.Contact | None = None, - assigned_object_contact_assignment: str | ContactAssignment | pb.ContactAssignment | None = None, - assigned_object_contact_group: str | ContactGroup | pb.ContactGroup | None = None, + assigned_object_contact_assignment: ( + str | ContactAssignment | pb.ContactAssignment | None + ) = None, + assigned_object_contact_group: ( + str | ContactGroup | pb.ContactGroup | None + ) = None, assigned_object_contact_role: str | ContactRole | pb.ContactRole | None = None, assigned_object_custom_field: str | CustomField | pb.CustomField | None = None, - assigned_object_custom_field_choice_set: str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None = None, + assigned_object_custom_field_choice_set: ( + str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None + ) = None, assigned_object_device: str | Device | pb.Device | None = None, assigned_object_device_bay: str | DeviceBay | pb.DeviceBay | None = None, assigned_object_device_role: str | DeviceRole | pb.DeviceRole | None = None, assigned_object_device_type: str | DeviceType | pb.DeviceType | None = None, assigned_object_fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, - assigned_object_fhrp_group_assignment: str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None = None, + assigned_object_fhrp_group_assignment: ( + str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None + ) = None, assigned_object_front_port: str | FrontPort | pb.FrontPort | None = None, assigned_object_ike_policy: str | IKEPolicy | pb.IKEPolicy | None = None, assigned_object_ike_proposal: str | IKEProposal | pb.IKEProposal | None = None, assigned_object_ip_address: str | IPAddress | pb.IPAddress | None = None, assigned_object_ip_range: str | IPRange | pb.IPRange | None = None, assigned_object_ip_sec_policy: str | IPSecPolicy | pb.IPSecPolicy | None = None, - assigned_object_ip_sec_profile: str | IPSecProfile | pb.IPSecProfile | None = None, - assigned_object_ip_sec_proposal: str | IPSecProposal | pb.IPSecProposal | None = None, - assigned_object_inventory_item: str | InventoryItem | pb.InventoryItem | None = None, - assigned_object_inventory_item_role: str | InventoryItemRole | pb.InventoryItemRole | None = None, - assigned_object_journal_entry: str | JournalEntry | pb.JournalEntry | None = None, + assigned_object_ip_sec_profile: ( + str | IPSecProfile | pb.IPSecProfile | None + ) = None, + assigned_object_ip_sec_proposal: ( + str | IPSecProposal | pb.IPSecProposal | None + ) = None, + assigned_object_inventory_item: ( + str | InventoryItem | pb.InventoryItem | None + ) = None, + assigned_object_inventory_item_role: ( + str | InventoryItemRole | pb.InventoryItemRole | None + ) = None, + assigned_object_journal_entry: ( + str | JournalEntry | pb.JournalEntry | None + ) = None, assigned_object_l2vpn: str | L2VPN | pb.L2VPN | None = None, - assigned_object_l2vpn_termination: str | L2VPNTermination | pb.L2VPNTermination | None = None, + assigned_object_l2vpn_termination: ( + str | L2VPNTermination | pb.L2VPNTermination | None + ) = None, assigned_object_location: str | Location | pb.Location | None = None, assigned_object_mac_address: str | MACAddress | pb.MACAddress | None = None, - assigned_object_manufacturer: str | Manufacturer | pb.Manufacturer | None = None, + assigned_object_manufacturer: ( + str | Manufacturer | pb.Manufacturer | None + ) = None, assigned_object_module: str | Module | pb.Module | None = None, assigned_object_module_bay: str | ModuleBay | pb.ModuleBay | None = None, assigned_object_module_type: str | ModuleType | pb.ModuleType | None = None, - assigned_object_module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, + assigned_object_module_type_profile: ( + str | ModuleTypeProfile | pb.ModuleTypeProfile | None + ) = None, assigned_object_platform: str | Platform | pb.Platform | None = None, assigned_object_power_feed: str | PowerFeed | pb.PowerFeed | None = None, assigned_object_power_outlet: str | PowerOutlet | pb.PowerOutlet | None = None, @@ -3210,11 +3949,17 @@ def __new__( assigned_object_power_port: str | PowerPort | pb.PowerPort | None = None, assigned_object_prefix: str | Prefix | pb.Prefix | None = None, assigned_object_provider: str | Provider | pb.Provider | None = None, - assigned_object_provider_account: str | ProviderAccount | pb.ProviderAccount | None = None, - assigned_object_provider_network: str | ProviderNetwork | pb.ProviderNetwork | None = None, + assigned_object_provider_account: ( + str | ProviderAccount | pb.ProviderAccount | None + ) = None, + assigned_object_provider_network: ( + str | ProviderNetwork | pb.ProviderNetwork | None + ) = None, assigned_object_rir: str | RIR | pb.RIR | None = None, assigned_object_rack: str | Rack | pb.Rack | None = None, - assigned_object_rack_reservation: str | RackReservation | pb.RackReservation | None = None, + assigned_object_rack_reservation: ( + str | RackReservation | pb.RackReservation | None + ) = None, assigned_object_rack_role: str | RackRole | pb.RackRole | None = None, assigned_object_rack_type: str | RackType | pb.RackType | None = None, assigned_object_rear_port: str | RearPort | pb.RearPort | None = None, @@ -3229,122 +3974,302 @@ def __new__( assigned_object_tenant_group: str | TenantGroup | pb.TenantGroup | None = None, assigned_object_tunnel: str | Tunnel | pb.Tunnel | None = None, assigned_object_tunnel_group: str | TunnelGroup | pb.TunnelGroup | None = None, - assigned_object_tunnel_termination: str | TunnelTermination | pb.TunnelTermination | None = None, + assigned_object_tunnel_termination: ( + str | TunnelTermination | pb.TunnelTermination | None + ) = None, assigned_object_vlan_group: str | VLANGroup | pb.VLANGroup | None = None, - assigned_object_vlan_translation_policy: str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None = None, - assigned_object_vlan_translation_rule: str | VLANTranslationRule | pb.VLANTranslationRule | None = None, + assigned_object_vlan_translation_policy: ( + str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None + ) = None, + assigned_object_vlan_translation_rule: ( + str | VLANTranslationRule | pb.VLANTranslationRule | None + ) = None, assigned_object_vrf: str | VRF | pb.VRF | None = None, - assigned_object_virtual_chassis: str | VirtualChassis | pb.VirtualChassis | None = None, - assigned_object_virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, - assigned_object_virtual_circuit_termination: str | VirtualCircuitTermination | pb.VirtualCircuitTermination | None = None, - assigned_object_virtual_circuit_type: str | VirtualCircuitType | pb.VirtualCircuitType | None = None, - assigned_object_virtual_device_context: str | VirtualDeviceContext | pb.VirtualDeviceContext | None = None, + assigned_object_virtual_chassis: ( + str | VirtualChassis | pb.VirtualChassis | None + ) = None, + assigned_object_virtual_circuit: ( + str | VirtualCircuit | pb.VirtualCircuit | None + ) = None, + assigned_object_virtual_circuit_termination: ( + str | VirtualCircuitTermination | pb.VirtualCircuitTermination | None + ) = None, + assigned_object_virtual_circuit_type: ( + str | VirtualCircuitType | pb.VirtualCircuitType | None + ) = None, + assigned_object_virtual_device_context: ( + str | VirtualDeviceContext | pb.VirtualDeviceContext | None + ) = None, assigned_object_virtual_disk: str | VirtualDisk | pb.VirtualDisk | None = None, - assigned_object_virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, + assigned_object_virtual_machine: ( + str | VirtualMachine | pb.VirtualMachine | None + ) = None, assigned_object_wireless_lan: str | WirelessLAN | pb.WirelessLAN | None = None, - assigned_object_wireless_lan_group: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, - assigned_object_wireless_link: str | WirelessLink | pb.WirelessLink | None = None, + assigned_object_wireless_lan_group: ( + str | WirelessLANGroup | pb.WirelessLANGroup | None + ) = None, + assigned_object_wireless_link: ( + str | WirelessLink | pb.WirelessLink | None + ) = None, assigned_object_custom_link: str | CustomLink | pb.CustomLink | None = None, tags: list[str | Tag | pb.Tag] | None = None, - custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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_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) + assigned_object_vm_interface = convert_to_protobuf( + assigned_object_vm_interface, pb.VMInterface + ) assigned_object_asn = convert_to_protobuf(assigned_object_asn, pb.ASN) - assigned_object_asn_range = convert_to_protobuf(assigned_object_asn_range, pb.ASNRange) - assigned_object_aggregate = convert_to_protobuf(assigned_object_aggregate, pb.Aggregate) + assigned_object_asn_range = convert_to_protobuf( + assigned_object_asn_range, pb.ASNRange + ) + assigned_object_aggregate = convert_to_protobuf( + assigned_object_aggregate, pb.Aggregate + ) assigned_object_cable = convert_to_protobuf(assigned_object_cable, pb.Cable) - assigned_object_cable_path = convert_to_protobuf(assigned_object_cable_path, pb.CablePath) - assigned_object_cable_termination = convert_to_protobuf(assigned_object_cable_termination, pb.CableTermination) - assigned_object_circuit = convert_to_protobuf(assigned_object_circuit, pb.Circuit) - assigned_object_circuit_group = convert_to_protobuf(assigned_object_circuit_group, pb.CircuitGroup) - assigned_object_circuit_group_assignment = convert_to_protobuf(assigned_object_circuit_group_assignment, pb.CircuitGroupAssignment) - assigned_object_circuit_termination = convert_to_protobuf(assigned_object_circuit_termination, pb.CircuitTermination) - assigned_object_circuit_type = convert_to_protobuf(assigned_object_circuit_type, pb.CircuitType) - assigned_object_cluster = convert_to_protobuf(assigned_object_cluster, pb.Cluster) - assigned_object_cluster_group = convert_to_protobuf(assigned_object_cluster_group, pb.ClusterGroup) - assigned_object_cluster_type = convert_to_protobuf(assigned_object_cluster_type, pb.ClusterType) - assigned_object_console_port = convert_to_protobuf(assigned_object_console_port, pb.ConsolePort) - assigned_object_console_server_port = convert_to_protobuf(assigned_object_console_server_port, pb.ConsoleServerPort) - assigned_object_contact = convert_to_protobuf(assigned_object_contact, pb.Contact) - assigned_object_contact_assignment = convert_to_protobuf(assigned_object_contact_assignment, pb.ContactAssignment) - assigned_object_contact_group = convert_to_protobuf(assigned_object_contact_group, pb.ContactGroup) - assigned_object_contact_role = convert_to_protobuf(assigned_object_contact_role, pb.ContactRole) - assigned_object_custom_field = convert_to_protobuf(assigned_object_custom_field, pb.CustomField) - assigned_object_custom_field_choice_set = convert_to_protobuf(assigned_object_custom_field_choice_set, pb.CustomFieldChoiceSet) + assigned_object_cable_path = convert_to_protobuf( + assigned_object_cable_path, pb.CablePath + ) + assigned_object_cable_termination = convert_to_protobuf( + assigned_object_cable_termination, pb.CableTermination + ) + assigned_object_circuit = convert_to_protobuf( + assigned_object_circuit, pb.Circuit + ) + assigned_object_circuit_group = convert_to_protobuf( + assigned_object_circuit_group, pb.CircuitGroup + ) + assigned_object_circuit_group_assignment = convert_to_protobuf( + assigned_object_circuit_group_assignment, pb.CircuitGroupAssignment + ) + assigned_object_circuit_termination = convert_to_protobuf( + assigned_object_circuit_termination, pb.CircuitTermination + ) + assigned_object_circuit_type = convert_to_protobuf( + assigned_object_circuit_type, pb.CircuitType + ) + assigned_object_cluster = convert_to_protobuf( + assigned_object_cluster, pb.Cluster + ) + assigned_object_cluster_group = convert_to_protobuf( + assigned_object_cluster_group, pb.ClusterGroup + ) + assigned_object_cluster_type = convert_to_protobuf( + assigned_object_cluster_type, pb.ClusterType + ) + assigned_object_console_port = convert_to_protobuf( + assigned_object_console_port, pb.ConsolePort + ) + assigned_object_console_server_port = convert_to_protobuf( + assigned_object_console_server_port, pb.ConsoleServerPort + ) + assigned_object_contact = convert_to_protobuf( + assigned_object_contact, pb.Contact + ) + assigned_object_contact_assignment = convert_to_protobuf( + assigned_object_contact_assignment, pb.ContactAssignment + ) + assigned_object_contact_group = convert_to_protobuf( + assigned_object_contact_group, pb.ContactGroup + ) + assigned_object_contact_role = convert_to_protobuf( + assigned_object_contact_role, pb.ContactRole + ) + assigned_object_custom_field = convert_to_protobuf( + assigned_object_custom_field, pb.CustomField + ) + assigned_object_custom_field_choice_set = convert_to_protobuf( + assigned_object_custom_field_choice_set, pb.CustomFieldChoiceSet + ) assigned_object_device = convert_to_protobuf(assigned_object_device, pb.Device) - assigned_object_device_bay = convert_to_protobuf(assigned_object_device_bay, pb.DeviceBay) - assigned_object_device_role = convert_to_protobuf(assigned_object_device_role, pb.DeviceRole) - assigned_object_device_type = convert_to_protobuf(assigned_object_device_type, pb.DeviceType) - assigned_object_fhrp_group = convert_to_protobuf(assigned_object_fhrp_group, pb.FHRPGroup) - assigned_object_fhrp_group_assignment = convert_to_protobuf(assigned_object_fhrp_group_assignment, pb.FHRPGroupAssignment) - assigned_object_front_port = convert_to_protobuf(assigned_object_front_port, pb.FrontPort) - assigned_object_ike_policy = convert_to_protobuf(assigned_object_ike_policy, pb.IKEPolicy) - assigned_object_ike_proposal = convert_to_protobuf(assigned_object_ike_proposal, pb.IKEProposal) - assigned_object_ip_address = convert_to_protobuf(assigned_object_ip_address, pb.IPAddress) - assigned_object_ip_range = convert_to_protobuf(assigned_object_ip_range, pb.IPRange) - assigned_object_ip_sec_policy = convert_to_protobuf(assigned_object_ip_sec_policy, pb.IPSecPolicy) - assigned_object_ip_sec_profile = convert_to_protobuf(assigned_object_ip_sec_profile, pb.IPSecProfile) - assigned_object_ip_sec_proposal = convert_to_protobuf(assigned_object_ip_sec_proposal, pb.IPSecProposal) - assigned_object_inventory_item = convert_to_protobuf(assigned_object_inventory_item, pb.InventoryItem) - assigned_object_inventory_item_role = convert_to_protobuf(assigned_object_inventory_item_role, pb.InventoryItemRole) - assigned_object_journal_entry = convert_to_protobuf(assigned_object_journal_entry, pb.JournalEntry) + assigned_object_device_bay = convert_to_protobuf( + assigned_object_device_bay, pb.DeviceBay + ) + assigned_object_device_role = convert_to_protobuf( + assigned_object_device_role, pb.DeviceRole + ) + assigned_object_device_type = convert_to_protobuf( + assigned_object_device_type, pb.DeviceType + ) + assigned_object_fhrp_group = convert_to_protobuf( + assigned_object_fhrp_group, pb.FHRPGroup + ) + assigned_object_fhrp_group_assignment = convert_to_protobuf( + assigned_object_fhrp_group_assignment, pb.FHRPGroupAssignment + ) + assigned_object_front_port = convert_to_protobuf( + assigned_object_front_port, pb.FrontPort + ) + assigned_object_ike_policy = convert_to_protobuf( + assigned_object_ike_policy, pb.IKEPolicy + ) + assigned_object_ike_proposal = convert_to_protobuf( + assigned_object_ike_proposal, pb.IKEProposal + ) + assigned_object_ip_address = convert_to_protobuf( + assigned_object_ip_address, pb.IPAddress + ) + assigned_object_ip_range = convert_to_protobuf( + assigned_object_ip_range, pb.IPRange + ) + assigned_object_ip_sec_policy = convert_to_protobuf( + assigned_object_ip_sec_policy, pb.IPSecPolicy + ) + assigned_object_ip_sec_profile = convert_to_protobuf( + assigned_object_ip_sec_profile, pb.IPSecProfile + ) + assigned_object_ip_sec_proposal = convert_to_protobuf( + assigned_object_ip_sec_proposal, pb.IPSecProposal + ) + assigned_object_inventory_item = convert_to_protobuf( + assigned_object_inventory_item, pb.InventoryItem + ) + assigned_object_inventory_item_role = convert_to_protobuf( + assigned_object_inventory_item_role, pb.InventoryItemRole + ) + assigned_object_journal_entry = convert_to_protobuf( + assigned_object_journal_entry, pb.JournalEntry + ) assigned_object_l2vpn = convert_to_protobuf(assigned_object_l2vpn, pb.L2VPN) - assigned_object_l2vpn_termination = convert_to_protobuf(assigned_object_l2vpn_termination, pb.L2VPNTermination) - assigned_object_location = convert_to_protobuf(assigned_object_location, pb.Location) - assigned_object_mac_address = convert_to_protobuf(assigned_object_mac_address, pb.MACAddress) - assigned_object_manufacturer = convert_to_protobuf(assigned_object_manufacturer, pb.Manufacturer) + assigned_object_l2vpn_termination = convert_to_protobuf( + assigned_object_l2vpn_termination, pb.L2VPNTermination + ) + assigned_object_location = convert_to_protobuf( + assigned_object_location, pb.Location + ) + assigned_object_mac_address = convert_to_protobuf( + assigned_object_mac_address, pb.MACAddress + ) + assigned_object_manufacturer = convert_to_protobuf( + assigned_object_manufacturer, pb.Manufacturer + ) assigned_object_module = convert_to_protobuf(assigned_object_module, pb.Module) - assigned_object_module_bay = convert_to_protobuf(assigned_object_module_bay, pb.ModuleBay) - assigned_object_module_type = convert_to_protobuf(assigned_object_module_type, pb.ModuleType) - assigned_object_module_type_profile = convert_to_protobuf(assigned_object_module_type_profile, pb.ModuleTypeProfile) - assigned_object_platform = convert_to_protobuf(assigned_object_platform, pb.Platform) - assigned_object_power_feed = convert_to_protobuf(assigned_object_power_feed, pb.PowerFeed) - assigned_object_power_outlet = convert_to_protobuf(assigned_object_power_outlet, pb.PowerOutlet) - assigned_object_power_panel = convert_to_protobuf(assigned_object_power_panel, pb.PowerPanel) - assigned_object_power_port = convert_to_protobuf(assigned_object_power_port, pb.PowerPort) + assigned_object_module_bay = convert_to_protobuf( + assigned_object_module_bay, pb.ModuleBay + ) + assigned_object_module_type = convert_to_protobuf( + assigned_object_module_type, pb.ModuleType + ) + assigned_object_module_type_profile = convert_to_protobuf( + assigned_object_module_type_profile, pb.ModuleTypeProfile + ) + assigned_object_platform = convert_to_protobuf( + assigned_object_platform, pb.Platform + ) + assigned_object_power_feed = convert_to_protobuf( + assigned_object_power_feed, pb.PowerFeed + ) + assigned_object_power_outlet = convert_to_protobuf( + assigned_object_power_outlet, pb.PowerOutlet + ) + assigned_object_power_panel = convert_to_protobuf( + assigned_object_power_panel, pb.PowerPanel + ) + assigned_object_power_port = convert_to_protobuf( + assigned_object_power_port, pb.PowerPort + ) assigned_object_prefix = convert_to_protobuf(assigned_object_prefix, pb.Prefix) - assigned_object_provider = convert_to_protobuf(assigned_object_provider, pb.Provider) - assigned_object_provider_account = convert_to_protobuf(assigned_object_provider_account, pb.ProviderAccount) - assigned_object_provider_network = convert_to_protobuf(assigned_object_provider_network, pb.ProviderNetwork) + assigned_object_provider = convert_to_protobuf( + assigned_object_provider, pb.Provider + ) + assigned_object_provider_account = convert_to_protobuf( + assigned_object_provider_account, pb.ProviderAccount + ) + assigned_object_provider_network = convert_to_protobuf( + assigned_object_provider_network, pb.ProviderNetwork + ) assigned_object_rir = convert_to_protobuf(assigned_object_rir, pb.RIR) assigned_object_rack = convert_to_protobuf(assigned_object_rack, pb.Rack) - assigned_object_rack_reservation = convert_to_protobuf(assigned_object_rack_reservation, pb.RackReservation) - assigned_object_rack_role = convert_to_protobuf(assigned_object_rack_role, pb.RackRole) - assigned_object_rack_type = convert_to_protobuf(assigned_object_rack_type, pb.RackType) - assigned_object_rear_port = convert_to_protobuf(assigned_object_rear_port, pb.RearPort) + assigned_object_rack_reservation = convert_to_protobuf( + assigned_object_rack_reservation, pb.RackReservation + ) + assigned_object_rack_role = convert_to_protobuf( + assigned_object_rack_role, pb.RackRole + ) + assigned_object_rack_type = convert_to_protobuf( + assigned_object_rack_type, pb.RackType + ) + assigned_object_rear_port = convert_to_protobuf( + assigned_object_rear_port, pb.RearPort + ) assigned_object_region = convert_to_protobuf(assigned_object_region, pb.Region) assigned_object_role = convert_to_protobuf(assigned_object_role, pb.Role) - assigned_object_route_target = convert_to_protobuf(assigned_object_route_target, pb.RouteTarget) - assigned_object_service = convert_to_protobuf(assigned_object_service, pb.Service) + assigned_object_route_target = convert_to_protobuf( + assigned_object_route_target, pb.RouteTarget + ) + assigned_object_service = convert_to_protobuf( + assigned_object_service, pb.Service + ) assigned_object_site = convert_to_protobuf(assigned_object_site, pb.Site) - assigned_object_site_group = convert_to_protobuf(assigned_object_site_group, pb.SiteGroup) + assigned_object_site_group = convert_to_protobuf( + assigned_object_site_group, pb.SiteGroup + ) assigned_object_tag = convert_to_protobuf(assigned_object_tag, pb.Tag) assigned_object_tenant = convert_to_protobuf(assigned_object_tenant, pb.Tenant) - assigned_object_tenant_group = convert_to_protobuf(assigned_object_tenant_group, pb.TenantGroup) + assigned_object_tenant_group = convert_to_protobuf( + assigned_object_tenant_group, pb.TenantGroup + ) assigned_object_tunnel = convert_to_protobuf(assigned_object_tunnel, pb.Tunnel) - assigned_object_tunnel_group = convert_to_protobuf(assigned_object_tunnel_group, pb.TunnelGroup) - assigned_object_tunnel_termination = convert_to_protobuf(assigned_object_tunnel_termination, pb.TunnelTermination) - assigned_object_vlan_group = convert_to_protobuf(assigned_object_vlan_group, pb.VLANGroup) - assigned_object_vlan_translation_policy = convert_to_protobuf(assigned_object_vlan_translation_policy, pb.VLANTranslationPolicy) - assigned_object_vlan_translation_rule = convert_to_protobuf(assigned_object_vlan_translation_rule, pb.VLANTranslationRule) + assigned_object_tunnel_group = convert_to_protobuf( + assigned_object_tunnel_group, pb.TunnelGroup + ) + assigned_object_tunnel_termination = convert_to_protobuf( + assigned_object_tunnel_termination, pb.TunnelTermination + ) + assigned_object_vlan_group = convert_to_protobuf( + assigned_object_vlan_group, pb.VLANGroup + ) + assigned_object_vlan_translation_policy = convert_to_protobuf( + assigned_object_vlan_translation_policy, pb.VLANTranslationPolicy + ) + assigned_object_vlan_translation_rule = convert_to_protobuf( + assigned_object_vlan_translation_rule, pb.VLANTranslationRule + ) assigned_object_vrf = convert_to_protobuf(assigned_object_vrf, pb.VRF) - assigned_object_virtual_chassis = convert_to_protobuf(assigned_object_virtual_chassis, pb.VirtualChassis) - assigned_object_virtual_circuit = convert_to_protobuf(assigned_object_virtual_circuit, pb.VirtualCircuit) - assigned_object_virtual_circuit_termination = convert_to_protobuf(assigned_object_virtual_circuit_termination, pb.VirtualCircuitTermination) - assigned_object_virtual_circuit_type = convert_to_protobuf(assigned_object_virtual_circuit_type, pb.VirtualCircuitType) - assigned_object_virtual_device_context = convert_to_protobuf(assigned_object_virtual_device_context, pb.VirtualDeviceContext) - assigned_object_virtual_disk = convert_to_protobuf(assigned_object_virtual_disk, pb.VirtualDisk) - assigned_object_virtual_machine = convert_to_protobuf(assigned_object_virtual_machine, pb.VirtualMachine) - assigned_object_wireless_lan = convert_to_protobuf(assigned_object_wireless_lan, pb.WirelessLAN) - assigned_object_wireless_lan_group = convert_to_protobuf(assigned_object_wireless_lan_group, pb.WirelessLANGroup) - assigned_object_wireless_link = convert_to_protobuf(assigned_object_wireless_link, pb.WirelessLink) - assigned_object_custom_link = convert_to_protobuf(assigned_object_custom_link, pb.CustomLink) + assigned_object_virtual_chassis = convert_to_protobuf( + assigned_object_virtual_chassis, pb.VirtualChassis + ) + assigned_object_virtual_circuit = convert_to_protobuf( + assigned_object_virtual_circuit, pb.VirtualCircuit + ) + assigned_object_virtual_circuit_termination = convert_to_protobuf( + assigned_object_virtual_circuit_termination, pb.VirtualCircuitTermination + ) + assigned_object_virtual_circuit_type = convert_to_protobuf( + assigned_object_virtual_circuit_type, pb.VirtualCircuitType + ) + assigned_object_virtual_device_context = convert_to_protobuf( + assigned_object_virtual_device_context, pb.VirtualDeviceContext + ) + assigned_object_virtual_disk = convert_to_protobuf( + assigned_object_virtual_disk, pb.VirtualDisk + ) + assigned_object_virtual_machine = convert_to_protobuf( + assigned_object_virtual_machine, pb.VirtualMachine + ) + assigned_object_wireless_lan = convert_to_protobuf( + assigned_object_wireless_lan, pb.WirelessLAN + ) + assigned_object_wireless_lan_group = convert_to_protobuf( + assigned_object_wireless_lan_group, pb.WirelessLANGroup + ) + assigned_object_wireless_link = convert_to_protobuf( + assigned_object_wireless_link, pb.WirelessLink + ) + assigned_object_custom_link = convert_to_protobuf( + assigned_object_custom_link, pb.CustomLink + ) tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + metadata = convert_dict_to_struct(metadata) result = pb.L2VPNTermination( l2vpn=l2vpn, assigned_object_interface=assigned_object_interface, @@ -3442,6 +4367,7 @@ def __new__( assigned_object_custom_link=assigned_object_custom_link, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -3460,8 +4386,11 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, comments: str | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.Location: """Create a new Location.""" site = convert_to_protobuf(site, pb.Site) @@ -3469,6 +4398,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) + metadata = convert_dict_to_struct(metadata) result = pb.Location( name=name, slug=slug, @@ -3481,6 +4411,7 @@ def __new__( tags=tags, custom_fields=custom_fields, comments=comments, + metadata=metadata, ) return result @@ -3496,13 +4427,21 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + 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) + metadata = convert_dict_to_struct(metadata) result = pb.MACAddress( mac_address=mac_address, assigned_object_interface=assigned_object_interface, @@ -3511,6 +4450,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -3524,17 +4464,22 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.Manufacturer( name=name, slug=slug, description=description, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -3553,7 +4498,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.Module: """Create a new Module.""" device = convert_to_protobuf(device, pb.Device) @@ -3561,6 +4509,7 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) result = pb.Module( device=device, module_bay=module_bay, @@ -3572,6 +4521,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -3589,7 +4539,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.ModuleBay: """Create a new ModuleBay.""" device = convert_to_protobuf(device, pb.Device) @@ -3597,6 +4550,7 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) result = pb.ModuleBay( device=device, module=module, @@ -3607,6 +4561,7 @@ def __new__( description=description, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -3625,15 +4580,19 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, attributes: str | None = None, + metadata: dict[str, Any] | 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) profile = convert_to_protobuf(profile, pb.ModuleTypeProfile) + metadata = convert_dict_to_struct(metadata) result = pb.ModuleType( manufacturer=manufacturer, model=model, @@ -3647,6 +4606,7 @@ def __new__( custom_fields=custom_fields, profile=profile, attributes=attributes, + metadata=metadata, ) return result @@ -3661,15 +4621,19 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, parent: str | Platform | pb.Platform | None = None, comments: str | None = None, + metadata: dict[str, Any] | 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) parent = convert_to_protobuf(parent, pb.Platform) + metadata = convert_dict_to_struct(metadata) result = pb.Platform( name=name, slug=slug, @@ -3679,6 +4643,7 @@ def __new__( custom_fields=custom_fields, parent=parent, comments=comments, + metadata=metadata, ) return result @@ -3703,7 +4668,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.PowerFeed: """Create a new PowerFeed.""" power_panel = convert_to_protobuf(power_panel, pb.PowerPanel) @@ -3711,6 +4679,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) + metadata = convert_dict_to_struct(metadata) result = pb.PowerFeed( power_panel=power_panel, rack=rack, @@ -3728,6 +4697,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -3748,8 +4718,11 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, status: str | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.PowerOutlet: """Create a new PowerOutlet.""" device = convert_to_protobuf(device, pb.Device) @@ -3757,6 +4730,7 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) result = pb.PowerOutlet( device=device, module=module, @@ -3771,6 +4745,7 @@ def __new__( tags=tags, custom_fields=custom_fields, status=status, + metadata=metadata, ) return result @@ -3786,13 +4761,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.PowerPanel( site=site, location=location, @@ -3801,6 +4780,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -3820,13 +4800,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.PowerPort( device=device, module=module, @@ -3839,6 +4823,7 @@ def __new__( mark_connected=mark_connected, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -3863,7 +4848,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.Prefix: """Create a new Prefix.""" vrf = convert_to_protobuf(vrf, pb.VRF) @@ -3876,6 +4864,7 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) result = pb.Prefix( prefix=prefix, vrf=vrf, @@ -3893,6 +4882,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -3907,15 +4897,19 @@ def __new__( 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, + 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, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.Provider( name=name, slug=slug, @@ -3925,6 +4919,7 @@ def __new__( custom_fields=custom_fields, accounts=accounts, asns=asns, + metadata=metadata, ) return result @@ -3940,12 +4935,16 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.ProviderAccount( provider=provider, name=name, @@ -3954,6 +4953,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -3969,12 +4969,16 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.ProviderNetwork( provider=provider, name=name, @@ -3983,6 +4987,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -3997,11 +5002,15 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.RIR( name=name, slug=slug, @@ -4009,6 +5018,7 @@ def __new__( description=description, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -4044,8 +5054,11 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, outer_height: int | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.Rack: """Create a new Rack.""" site = convert_to_protobuf(site, pb.Site) @@ -4055,6 +5068,7 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) result = pb.Rack( name=name, facility_id=facility_id, @@ -4084,6 +5098,7 @@ def __new__( tags=tags, custom_fields=custom_fields, outer_height=outer_height, + metadata=metadata, ) return result @@ -4099,14 +5114,18 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, status: str | None = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.RackReservation( rack=rack, units=units, @@ -4116,6 +5135,7 @@ def __new__( tags=tags, custom_fields=custom_fields, status=status, + metadata=metadata, ) return result @@ -4130,11 +5150,15 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.RackRole( name=name, slug=slug, @@ -4142,6 +5166,7 @@ def __new__( description=description, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -4169,13 +5194,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, outer_height: int | None = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.RackType( manufacturer=manufacturer, model=model, @@ -4197,6 +5226,7 @@ def __new__( tags=tags, custom_fields=custom_fields, outer_height=outer_height, + metadata=metadata, ) return result @@ -4216,13 +5246,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.RearPort( device=device, module=module, @@ -4235,6 +5269,7 @@ def __new__( mark_connected=mark_connected, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -4249,13 +5284,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, comments: str | None = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.Region( name=name, slug=slug, @@ -4264,6 +5303,7 @@ def __new__( tags=tags, custom_fields=custom_fields, comments=comments, + metadata=metadata, ) return result @@ -4278,11 +5318,15 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.Role( name=name, slug=slug, @@ -4290,6 +5334,7 @@ def __new__( description=description, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -4304,12 +5349,16 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.RouteTarget( name=name, tenant=tenant, @@ -4317,6 +5366,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -4334,11 +5384,16 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, ipaddresses: list[str | IPAddress | pb.IPAddress] | None = None, parent_object_device: str | Device | pb.Device | None = None, parent_object_fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, - parent_object_virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, + parent_object_virtual_machine: ( + str | VirtualMachine | pb.VirtualMachine | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.Service: """Create a new Service.""" device = convert_to_protobuf(device, pb.Device) @@ -4347,8 +5402,13 @@ def __new__( custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) ipaddresses = convert_to_protobuf_list(ipaddresses, pb.IPAddress) parent_object_device = convert_to_protobuf(parent_object_device, pb.Device) - parent_object_fhrp_group = convert_to_protobuf(parent_object_fhrp_group, pb.FHRPGroup) - parent_object_virtual_machine = convert_to_protobuf(parent_object_virtual_machine, pb.VirtualMachine) + parent_object_fhrp_group = convert_to_protobuf( + parent_object_fhrp_group, pb.FHRPGroup + ) + parent_object_virtual_machine = convert_to_protobuf( + parent_object_virtual_machine, pb.VirtualMachine + ) + metadata = convert_dict_to_struct(metadata) result = pb.Service( device=device, virtual_machine=virtual_machine, @@ -4363,6 +5423,7 @@ def __new__( parent_object_device=parent_object_device, parent_object_fhrp_group=parent_object_fhrp_group, parent_object_virtual_machine=parent_object_virtual_machine, + metadata=metadata, ) return result @@ -4387,8 +5448,11 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, asns: list[str | ASN | pb.ASN] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.Site: """Create a new Site.""" region = convert_to_protobuf(region, pb.Region) @@ -4397,6 +5461,7 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) result = pb.Site( name=name, slug=slug, @@ -4415,6 +5480,7 @@ def __new__( tags=tags, custom_fields=custom_fields, asns=asns, + metadata=metadata, ) return result @@ -4429,13 +5495,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, comments: str | None = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.SiteGroup( name=name, slug=slug, @@ -4444,6 +5514,7 @@ def __new__( tags=tags, custom_fields=custom_fields, comments=comments, + metadata=metadata, ) return result @@ -4459,8 +5530,10 @@ def __new__( description: str | None = None, weight: int | None = None, object_types: list[str] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.Tag: """Create a new Tag.""" + metadata = convert_dict_to_struct(metadata) result = pb.Tag( name=name, slug=slug, @@ -4468,6 +5541,7 @@ def __new__( description=description, weight=weight, object_types=object_types, + metadata=metadata, ) return result @@ -4483,12 +5557,16 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.Tenant( name=name, slug=slug, @@ -4497,6 +5575,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -4511,13 +5590,17 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, comments: str | None = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.TenantGroup( name=name, slug=slug, @@ -4526,6 +5609,7 @@ def __new__( tags=tags, custom_fields=custom_fields, comments=comments, + metadata=metadata, ) return result @@ -4545,7 +5629,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.Tunnel: """Create a new Tunnel.""" group = convert_to_protobuf(group, pb.TunnelGroup) @@ -4553,6 +5640,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) + metadata = convert_dict_to_struct(metadata) result = pb.Tunnel( name=name, status=status, @@ -4565,6 +5653,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -4578,17 +5667,22 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.TunnelGroup( name=name, slug=slug, description=description, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -4605,19 +5699,29 @@ def __new__( 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_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_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_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_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, @@ -4625,7 +5729,9 @@ def __new__( 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_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, @@ -4633,12 +5739,20 @@ def __new__( 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_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_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_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, @@ -4652,11 +5766,17 @@ def __new__( 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_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_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, @@ -4671,31 +5791,58 @@ def __new__( 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_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_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_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_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_lan_group: ( + str | WirelessLANGroup | pb.WirelessLANGroup | None + ) = None, termination_wireless_link: str | WirelessLink | pb.WirelessLink | None = None, termination_custom_field: str | CustomField | pb.CustomField | None = None, - termination_custom_field_choice_set: str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None = None, + termination_custom_field_choice_set: ( + str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None + ) = None, termination_journal_entry: str | JournalEntry | pb.JournalEntry | None = None, - termination_module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, + termination_module_type_profile: ( + str | ModuleTypeProfile | pb.ModuleTypeProfile | None + ) = None, termination_custom_link: str | CustomLink | pb.CustomLink | 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.TunnelTermination: """Create a new TunnelTermination.""" tunnel = convert_to_protobuf(tunnel, pb.Tunnel) @@ -4703,98 +5850,225 @@ def __new__( 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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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) - termination_custom_field = convert_to_protobuf(termination_custom_field, pb.CustomField) - termination_custom_field_choice_set = convert_to_protobuf(termination_custom_field_choice_set, pb.CustomFieldChoiceSet) - termination_journal_entry = convert_to_protobuf(termination_journal_entry, pb.JournalEntry) - termination_module_type_profile = convert_to_protobuf(termination_module_type_profile, pb.ModuleTypeProfile) - termination_custom_link = convert_to_protobuf(termination_custom_link, pb.CustomLink) + 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 + ) + termination_custom_field = convert_to_protobuf( + termination_custom_field, pb.CustomField + ) + termination_custom_field_choice_set = convert_to_protobuf( + termination_custom_field_choice_set, pb.CustomFieldChoiceSet + ) + termination_journal_entry = convert_to_protobuf( + termination_journal_entry, pb.JournalEntry + ) + termination_module_type_profile = convert_to_protobuf( + termination_module_type_profile, pb.ModuleTypeProfile + ) + termination_custom_link = convert_to_protobuf( + termination_custom_link, pb.CustomLink + ) 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) + metadata = convert_dict_to_struct(metadata) result = pb.TunnelTermination( tunnel=tunnel, role=role, @@ -4894,6 +6168,7 @@ def __new__( outside_ip=outside_ip, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -4915,7 +6190,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.VLAN: """Create a new VLAN.""" site = convert_to_protobuf(site, pb.Site) @@ -4925,6 +6203,7 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) result = pb.VLAN( site=site, group=group, @@ -4939,6 +6218,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -4960,8 +6240,11 @@ def __new__( vid_ranges: list[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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, tenant: str | Tenant | pb.Tenant | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.VLANGroup: """Create a new VLANGroup.""" scope_cluster = convert_to_protobuf(scope_cluster, pb.Cluster) @@ -4974,6 +6257,7 @@ def __new__( tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) tenant = convert_to_protobuf(tenant, pb.Tenant) + metadata = convert_dict_to_struct(metadata) result = pb.VLANGroup( name=name, slug=slug, @@ -4989,6 +6273,7 @@ def __new__( tags=tags, custom_fields=custom_fields, tenant=tenant, + metadata=metadata, ) return result @@ -5000,11 +6285,14 @@ def __new__( cls, name: str | None = None, description: str | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.VLANTranslationPolicy: """Create a new VLANTranslationPolicy.""" + metadata = convert_dict_to_struct(metadata) result = pb.VLANTranslationPolicy( name=name, description=description, + metadata=metadata, ) return result @@ -5018,14 +6306,17 @@ def __new__( local_vid: int | None = None, remote_vid: int | None = None, description: str | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.VLANTranslationRule: """Create a new VLANTranslationRule.""" policy = convert_to_protobuf(policy, pb.VLANTranslationPolicy) + metadata = convert_dict_to_struct(metadata) result = pb.VLANTranslationRule( policy=policy, local_vid=local_vid, remote_vid=remote_vid, description=description, + metadata=metadata, ) return result @@ -5046,11 +6337,16 @@ def __new__( mode: str | 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, + 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, tagged_vlans: list[str | VLAN | pb.VLAN] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.VMInterface: """Create a new VMInterface.""" virtual_machine = convert_to_protobuf(virtual_machine, pb.VirtualMachine) @@ -5059,11 +6355,14 @@ def __new__( 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) + 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) tagged_vlans = convert_to_protobuf_list(tagged_vlans, pb.VLAN) + metadata = convert_dict_to_struct(metadata) result = pb.VMInterface( virtual_machine=virtual_machine, name=name, @@ -5081,6 +6380,7 @@ def __new__( tags=tags, custom_fields=custom_fields, tagged_vlans=tagged_vlans, + metadata=metadata, ) return result @@ -5097,9 +6397,12 @@ def __new__( 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, + 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, + metadata: dict[str, Any] | None = None, ) -> pb.VRF: """Create a new VRF.""" tenant = convert_to_protobuf(tenant, pb.Tenant) @@ -5107,6 +6410,7 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) result = pb.VRF( name=name, rd=rd, @@ -5118,6 +6422,7 @@ def __new__( custom_fields=custom_fields, import_targets=import_targets, export_targets=export_targets, + metadata=metadata, ) return result @@ -5133,12 +6438,16 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.VirtualChassis( name=name, domain=domain, @@ -5147,6 +6456,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -5165,7 +6475,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.VirtualCircuit: """Create a new VirtualCircuit.""" provider_network = convert_to_protobuf(provider_network, pb.ProviderNetwork) @@ -5174,6 +6487,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) + metadata = convert_dict_to_struct(metadata) result = pb.VirtualCircuit( cid=cid, provider_network=provider_network, @@ -5185,6 +6499,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -5199,13 +6514,17 @@ def __new__( interface: str | Interface | pb.Interface | None = None, description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, - custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.VirtualCircuitTermination( virtual_circuit=virtual_circuit, role=role, @@ -5213,6 +6532,7 @@ def __new__( description=description, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -5227,11 +6547,15 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.VirtualCircuitType( name=name, slug=slug, @@ -5239,6 +6563,7 @@ def __new__( description=description, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -5258,7 +6583,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.VirtualDeviceContext: """Create a new VirtualDeviceContext.""" device = convert_to_protobuf(device, pb.Device) @@ -5267,6 +6595,7 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) result = pb.VirtualDeviceContext( name=name, device=device, @@ -5279,6 +6608,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -5293,12 +6623,16 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.VirtualDisk( virtual_machine=virtual_machine, name=name, @@ -5306,6 +6640,7 @@ def __new__( size=size, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -5332,7 +6667,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.VirtualMachine: """Create a new VirtualMachine.""" site = convert_to_protobuf(site, pb.Site) @@ -5345,18 +6683,19 @@ def __new__( 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) + metadata = convert_dict_to_struct(metadata) # apply shortcuts if platform is not None: - if device is not None and not device.HasField('platform'): + 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'): + 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'): + 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'): + if device is not None and not device.HasField("role"): device.role.CopyFrom(role) result = pb.VirtualMachine( name=name, @@ -5377,6 +6716,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -5401,7 +6741,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.WirelessLAN: """Create a new WirelessLAN.""" group = convert_to_protobuf(group, pb.WirelessLANGroup) @@ -5413,6 +6756,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) + metadata = convert_dict_to_struct(metadata) result = pb.WirelessLAN( ssid=ssid, description=description, @@ -5430,6 +6774,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -5444,13 +6789,17 @@ def __new__( parent: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, description: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, - custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, comments: str | None = None, + metadata: dict[str, Any] | 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) + metadata = convert_dict_to_struct(metadata) result = pb.WirelessLANGroup( name=name, slug=slug, @@ -5459,6 +6808,7 @@ def __new__( tags=tags, custom_fields=custom_fields, comments=comments, + metadata=metadata, ) return result @@ -5481,7 +6831,10 @@ def __new__( 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.WirelessLink: """Create a new WirelessLink.""" interface_a = convert_to_protobuf(interface_a, pb.Interface) @@ -5489,6 +6842,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) + metadata = convert_dict_to_struct(metadata) result = pb.WirelessLink( interface_a=interface_a, interface_b=interface_b, @@ -5504,6 +6858,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -5535,9 +6890,11 @@ def __new__( choice_set: str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None = None, comments: str | None = None, object_types: list[str] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.CustomField: """Create a new CustomField.""" choice_set = convert_to_protobuf(choice_set, pb.CustomFieldChoiceSet) + metadata = convert_dict_to_struct(metadata) result = pb.CustomField( type=type, related_object_type=related_object_type, @@ -5561,6 +6918,7 @@ def __new__( choice_set=choice_set, comments=comments, object_types=object_types, + metadata=metadata, ) return result @@ -5575,14 +6933,17 @@ def __new__( base_choices: str | None = None, order_alphabetically: bool | None = None, extra_choices: list[str] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.CustomFieldChoiceSet: """Create a new CustomFieldChoiceSet.""" + metadata = convert_dict_to_struct(metadata) result = pb.CustomFieldChoiceSet( name=name, description=description, base_choices=base_choices, order_alphabetically=order_alphabetically, extra_choices=extra_choices, + metadata=metadata, ) return result @@ -5597,50 +6958,86 @@ def __new__( assigned_object_aggregate: str | Aggregate | pb.Aggregate | None = None, assigned_object_cable: str | Cable | pb.Cable | None = None, assigned_object_cable_path: str | CablePath | pb.CablePath | None = None, - assigned_object_cable_termination: str | CableTermination | pb.CableTermination | None = None, + assigned_object_cable_termination: ( + str | CableTermination | pb.CableTermination | None + ) = None, assigned_object_circuit: str | Circuit | pb.Circuit | None = None, - assigned_object_circuit_group: str | CircuitGroup | pb.CircuitGroup | None = None, - assigned_object_circuit_group_assignment: str | CircuitGroupAssignment | pb.CircuitGroupAssignment | None = None, - assigned_object_circuit_termination: str | CircuitTermination | pb.CircuitTermination | None = None, + assigned_object_circuit_group: ( + str | CircuitGroup | pb.CircuitGroup | None + ) = None, + assigned_object_circuit_group_assignment: ( + str | CircuitGroupAssignment | pb.CircuitGroupAssignment | None + ) = None, + assigned_object_circuit_termination: ( + str | CircuitTermination | pb.CircuitTermination | None + ) = None, assigned_object_circuit_type: str | CircuitType | pb.CircuitType | None = None, assigned_object_cluster: str | Cluster | pb.Cluster | None = None, - assigned_object_cluster_group: str | ClusterGroup | pb.ClusterGroup | None = None, + assigned_object_cluster_group: ( + str | ClusterGroup | pb.ClusterGroup | None + ) = None, assigned_object_cluster_type: str | ClusterType | pb.ClusterType | None = None, assigned_object_console_port: str | ConsolePort | pb.ConsolePort | None = None, - assigned_object_console_server_port: str | ConsoleServerPort | pb.ConsoleServerPort | None = None, + assigned_object_console_server_port: ( + str | ConsoleServerPort | pb.ConsoleServerPort | None + ) = None, assigned_object_contact: str | Contact | pb.Contact | None = None, - assigned_object_contact_assignment: str | ContactAssignment | pb.ContactAssignment | None = None, - assigned_object_contact_group: str | ContactGroup | pb.ContactGroup | None = None, + assigned_object_contact_assignment: ( + str | ContactAssignment | pb.ContactAssignment | None + ) = None, + assigned_object_contact_group: ( + str | ContactGroup | pb.ContactGroup | None + ) = None, assigned_object_contact_role: str | ContactRole | pb.ContactRole | None = None, assigned_object_custom_field: str | CustomField | pb.CustomField | None = None, - assigned_object_custom_field_choice_set: str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None = None, + assigned_object_custom_field_choice_set: ( + str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None + ) = None, assigned_object_device: str | Device | pb.Device | None = None, assigned_object_device_bay: str | DeviceBay | pb.DeviceBay | None = None, assigned_object_device_role: str | DeviceRole | pb.DeviceRole | None = None, assigned_object_device_type: str | DeviceType | pb.DeviceType | None = None, assigned_object_fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, - assigned_object_fhrp_group_assignment: str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None = None, + assigned_object_fhrp_group_assignment: ( + str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None + ) = None, assigned_object_front_port: str | FrontPort | pb.FrontPort | None = None, assigned_object_ike_policy: str | IKEPolicy | pb.IKEPolicy | None = None, assigned_object_ike_proposal: str | IKEProposal | pb.IKEProposal | None = None, assigned_object_ip_address: str | IPAddress | pb.IPAddress | None = None, assigned_object_ip_range: str | IPRange | pb.IPRange | None = None, assigned_object_ip_sec_policy: str | IPSecPolicy | pb.IPSecPolicy | None = None, - assigned_object_ip_sec_profile: str | IPSecProfile | pb.IPSecProfile | None = None, - assigned_object_ip_sec_proposal: str | IPSecProposal | pb.IPSecProposal | None = None, + assigned_object_ip_sec_profile: ( + str | IPSecProfile | pb.IPSecProfile | None + ) = None, + assigned_object_ip_sec_proposal: ( + str | IPSecProposal | pb.IPSecProposal | None + ) = None, assigned_object_interface: str | Interface | pb.Interface | None = None, - assigned_object_inventory_item: str | InventoryItem | pb.InventoryItem | None = None, - assigned_object_inventory_item_role: str | InventoryItemRole | pb.InventoryItemRole | None = None, - assigned_object_journal_entry: str | JournalEntry | pb.JournalEntry | None = None, + assigned_object_inventory_item: ( + str | InventoryItem | pb.InventoryItem | None + ) = None, + assigned_object_inventory_item_role: ( + str | InventoryItemRole | pb.InventoryItemRole | None + ) = None, + assigned_object_journal_entry: ( + str | JournalEntry | pb.JournalEntry | None + ) = None, assigned_object_l2vpn: str | L2VPN | pb.L2VPN | None = None, - assigned_object_l2vpn_termination: str | L2VPNTermination | pb.L2VPNTermination | None = None, + assigned_object_l2vpn_termination: ( + str | L2VPNTermination | pb.L2VPNTermination | None + ) = None, assigned_object_location: str | Location | pb.Location | None = None, assigned_object_mac_address: str | MACAddress | pb.MACAddress | None = None, - assigned_object_manufacturer: str | Manufacturer | pb.Manufacturer | None = None, + assigned_object_manufacturer: ( + str | Manufacturer | pb.Manufacturer | None + ) = None, assigned_object_module: str | Module | pb.Module | None = None, assigned_object_module_bay: str | ModuleBay | pb.ModuleBay | None = None, assigned_object_module_type: str | ModuleType | pb.ModuleType | None = None, - assigned_object_module_type_profile: str | ModuleTypeProfile | pb.ModuleTypeProfile | None = None, + assigned_object_module_type_profile: ( + str | ModuleTypeProfile | pb.ModuleTypeProfile | None + ) = None, assigned_object_platform: str | Platform | pb.Platform | None = None, assigned_object_power_feed: str | PowerFeed | pb.PowerFeed | None = None, assigned_object_power_outlet: str | PowerOutlet | pb.PowerOutlet | None = None, @@ -5648,11 +7045,17 @@ def __new__( assigned_object_power_port: str | PowerPort | pb.PowerPort | None = None, assigned_object_prefix: str | Prefix | pb.Prefix | None = None, assigned_object_provider: str | Provider | pb.Provider | None = None, - assigned_object_provider_account: str | ProviderAccount | pb.ProviderAccount | None = None, - assigned_object_provider_network: str | ProviderNetwork | pb.ProviderNetwork | None = None, + assigned_object_provider_account: ( + str | ProviderAccount | pb.ProviderAccount | None + ) = None, + assigned_object_provider_network: ( + str | ProviderNetwork | pb.ProviderNetwork | None + ) = None, assigned_object_rir: str | RIR | pb.RIR | None = None, assigned_object_rack: str | Rack | pb.Rack | None = None, - assigned_object_rack_reservation: str | RackReservation | pb.RackReservation | None = None, + assigned_object_rack_reservation: ( + str | RackReservation | pb.RackReservation | None + ) = None, assigned_object_rack_role: str | RackRole | pb.RackRole | None = None, assigned_object_rack_type: str | RackType | pb.RackType | None = None, assigned_object_rear_port: str | RearPort | pb.RearPort | None = None, @@ -5667,125 +7070,305 @@ def __new__( assigned_object_tenant_group: str | TenantGroup | pb.TenantGroup | None = None, assigned_object_tunnel: str | Tunnel | pb.Tunnel | None = None, assigned_object_tunnel_group: str | TunnelGroup | pb.TunnelGroup | None = None, - assigned_object_tunnel_termination: str | TunnelTermination | pb.TunnelTermination | None = None, + assigned_object_tunnel_termination: ( + str | TunnelTermination | pb.TunnelTermination | None + ) = None, assigned_object_vlan: str | VLAN | pb.VLAN | None = None, assigned_object_vlan_group: str | VLANGroup | pb.VLANGroup | None = None, - assigned_object_vlan_translation_policy: str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None = None, - assigned_object_vlan_translation_rule: str | VLANTranslationRule | pb.VLANTranslationRule | None = None, + assigned_object_vlan_translation_policy: ( + str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None + ) = None, + assigned_object_vlan_translation_rule: ( + str | VLANTranslationRule | pb.VLANTranslationRule | None + ) = None, assigned_object_vm_interface: str | VMInterface | pb.VMInterface | None = None, assigned_object_vrf: str | VRF | pb.VRF | None = None, - assigned_object_virtual_chassis: str | VirtualChassis | pb.VirtualChassis | None = None, - assigned_object_virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, - assigned_object_virtual_circuit_termination: str | VirtualCircuitTermination | pb.VirtualCircuitTermination | None = None, - assigned_object_virtual_circuit_type: str | VirtualCircuitType | pb.VirtualCircuitType | None = None, - assigned_object_virtual_device_context: str | VirtualDeviceContext | pb.VirtualDeviceContext | None = None, + assigned_object_virtual_chassis: ( + str | VirtualChassis | pb.VirtualChassis | None + ) = None, + assigned_object_virtual_circuit: ( + str | VirtualCircuit | pb.VirtualCircuit | None + ) = None, + assigned_object_virtual_circuit_termination: ( + str | VirtualCircuitTermination | pb.VirtualCircuitTermination | None + ) = None, + assigned_object_virtual_circuit_type: ( + str | VirtualCircuitType | pb.VirtualCircuitType | None + ) = None, + assigned_object_virtual_device_context: ( + str | VirtualDeviceContext | pb.VirtualDeviceContext | None + ) = None, assigned_object_virtual_disk: str | VirtualDisk | pb.VirtualDisk | None = None, - assigned_object_virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, + assigned_object_virtual_machine: ( + str | VirtualMachine | pb.VirtualMachine | None + ) = None, assigned_object_wireless_lan: str | WirelessLAN | pb.WirelessLAN | None = None, - assigned_object_wireless_lan_group: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, - assigned_object_wireless_link: str | WirelessLink | pb.WirelessLink | None = None, + assigned_object_wireless_lan_group: ( + str | WirelessLANGroup | pb.WirelessLANGroup | None + ) = None, + assigned_object_wireless_link: ( + str | WirelessLink | pb.WirelessLink | None + ) = None, assigned_object_custom_link: str | CustomLink | pb.CustomLink | None = None, kind: 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.JournalEntry: """Create a new JournalEntry.""" assigned_object_asn = convert_to_protobuf(assigned_object_asn, pb.ASN) - assigned_object_asn_range = convert_to_protobuf(assigned_object_asn_range, pb.ASNRange) - assigned_object_aggregate = convert_to_protobuf(assigned_object_aggregate, pb.Aggregate) + assigned_object_asn_range = convert_to_protobuf( + assigned_object_asn_range, pb.ASNRange + ) + assigned_object_aggregate = convert_to_protobuf( + assigned_object_aggregate, pb.Aggregate + ) assigned_object_cable = convert_to_protobuf(assigned_object_cable, pb.Cable) - assigned_object_cable_path = convert_to_protobuf(assigned_object_cable_path, pb.CablePath) - assigned_object_cable_termination = convert_to_protobuf(assigned_object_cable_termination, pb.CableTermination) - assigned_object_circuit = convert_to_protobuf(assigned_object_circuit, pb.Circuit) - assigned_object_circuit_group = convert_to_protobuf(assigned_object_circuit_group, pb.CircuitGroup) - assigned_object_circuit_group_assignment = convert_to_protobuf(assigned_object_circuit_group_assignment, pb.CircuitGroupAssignment) - assigned_object_circuit_termination = convert_to_protobuf(assigned_object_circuit_termination, pb.CircuitTermination) - assigned_object_circuit_type = convert_to_protobuf(assigned_object_circuit_type, pb.CircuitType) - assigned_object_cluster = convert_to_protobuf(assigned_object_cluster, pb.Cluster) - assigned_object_cluster_group = convert_to_protobuf(assigned_object_cluster_group, pb.ClusterGroup) - assigned_object_cluster_type = convert_to_protobuf(assigned_object_cluster_type, pb.ClusterType) - assigned_object_console_port = convert_to_protobuf(assigned_object_console_port, pb.ConsolePort) - assigned_object_console_server_port = convert_to_protobuf(assigned_object_console_server_port, pb.ConsoleServerPort) - assigned_object_contact = convert_to_protobuf(assigned_object_contact, pb.Contact) - assigned_object_contact_assignment = convert_to_protobuf(assigned_object_contact_assignment, pb.ContactAssignment) - assigned_object_contact_group = convert_to_protobuf(assigned_object_contact_group, pb.ContactGroup) - assigned_object_contact_role = convert_to_protobuf(assigned_object_contact_role, pb.ContactRole) - assigned_object_custom_field = convert_to_protobuf(assigned_object_custom_field, pb.CustomField) - assigned_object_custom_field_choice_set = convert_to_protobuf(assigned_object_custom_field_choice_set, pb.CustomFieldChoiceSet) + assigned_object_cable_path = convert_to_protobuf( + assigned_object_cable_path, pb.CablePath + ) + assigned_object_cable_termination = convert_to_protobuf( + assigned_object_cable_termination, pb.CableTermination + ) + assigned_object_circuit = convert_to_protobuf( + assigned_object_circuit, pb.Circuit + ) + assigned_object_circuit_group = convert_to_protobuf( + assigned_object_circuit_group, pb.CircuitGroup + ) + assigned_object_circuit_group_assignment = convert_to_protobuf( + assigned_object_circuit_group_assignment, pb.CircuitGroupAssignment + ) + assigned_object_circuit_termination = convert_to_protobuf( + assigned_object_circuit_termination, pb.CircuitTermination + ) + assigned_object_circuit_type = convert_to_protobuf( + assigned_object_circuit_type, pb.CircuitType + ) + assigned_object_cluster = convert_to_protobuf( + assigned_object_cluster, pb.Cluster + ) + assigned_object_cluster_group = convert_to_protobuf( + assigned_object_cluster_group, pb.ClusterGroup + ) + assigned_object_cluster_type = convert_to_protobuf( + assigned_object_cluster_type, pb.ClusterType + ) + assigned_object_console_port = convert_to_protobuf( + assigned_object_console_port, pb.ConsolePort + ) + assigned_object_console_server_port = convert_to_protobuf( + assigned_object_console_server_port, pb.ConsoleServerPort + ) + assigned_object_contact = convert_to_protobuf( + assigned_object_contact, pb.Contact + ) + assigned_object_contact_assignment = convert_to_protobuf( + assigned_object_contact_assignment, pb.ContactAssignment + ) + assigned_object_contact_group = convert_to_protobuf( + assigned_object_contact_group, pb.ContactGroup + ) + assigned_object_contact_role = convert_to_protobuf( + assigned_object_contact_role, pb.ContactRole + ) + assigned_object_custom_field = convert_to_protobuf( + assigned_object_custom_field, pb.CustomField + ) + assigned_object_custom_field_choice_set = convert_to_protobuf( + assigned_object_custom_field_choice_set, pb.CustomFieldChoiceSet + ) assigned_object_device = convert_to_protobuf(assigned_object_device, pb.Device) - assigned_object_device_bay = convert_to_protobuf(assigned_object_device_bay, pb.DeviceBay) - assigned_object_device_role = convert_to_protobuf(assigned_object_device_role, pb.DeviceRole) - assigned_object_device_type = convert_to_protobuf(assigned_object_device_type, pb.DeviceType) - assigned_object_fhrp_group = convert_to_protobuf(assigned_object_fhrp_group, pb.FHRPGroup) - assigned_object_fhrp_group_assignment = convert_to_protobuf(assigned_object_fhrp_group_assignment, pb.FHRPGroupAssignment) - assigned_object_front_port = convert_to_protobuf(assigned_object_front_port, pb.FrontPort) - assigned_object_ike_policy = convert_to_protobuf(assigned_object_ike_policy, pb.IKEPolicy) - assigned_object_ike_proposal = convert_to_protobuf(assigned_object_ike_proposal, pb.IKEProposal) - assigned_object_ip_address = convert_to_protobuf(assigned_object_ip_address, pb.IPAddress) - assigned_object_ip_range = convert_to_protobuf(assigned_object_ip_range, pb.IPRange) - assigned_object_ip_sec_policy = convert_to_protobuf(assigned_object_ip_sec_policy, pb.IPSecPolicy) - assigned_object_ip_sec_profile = convert_to_protobuf(assigned_object_ip_sec_profile, pb.IPSecProfile) - assigned_object_ip_sec_proposal = convert_to_protobuf(assigned_object_ip_sec_proposal, pb.IPSecProposal) - assigned_object_interface = convert_to_protobuf(assigned_object_interface, pb.Interface) - assigned_object_inventory_item = convert_to_protobuf(assigned_object_inventory_item, pb.InventoryItem) - assigned_object_inventory_item_role = convert_to_protobuf(assigned_object_inventory_item_role, pb.InventoryItemRole) - assigned_object_journal_entry = convert_to_protobuf(assigned_object_journal_entry, pb.JournalEntry) + assigned_object_device_bay = convert_to_protobuf( + assigned_object_device_bay, pb.DeviceBay + ) + assigned_object_device_role = convert_to_protobuf( + assigned_object_device_role, pb.DeviceRole + ) + assigned_object_device_type = convert_to_protobuf( + assigned_object_device_type, pb.DeviceType + ) + assigned_object_fhrp_group = convert_to_protobuf( + assigned_object_fhrp_group, pb.FHRPGroup + ) + assigned_object_fhrp_group_assignment = convert_to_protobuf( + assigned_object_fhrp_group_assignment, pb.FHRPGroupAssignment + ) + assigned_object_front_port = convert_to_protobuf( + assigned_object_front_port, pb.FrontPort + ) + assigned_object_ike_policy = convert_to_protobuf( + assigned_object_ike_policy, pb.IKEPolicy + ) + assigned_object_ike_proposal = convert_to_protobuf( + assigned_object_ike_proposal, pb.IKEProposal + ) + assigned_object_ip_address = convert_to_protobuf( + assigned_object_ip_address, pb.IPAddress + ) + assigned_object_ip_range = convert_to_protobuf( + assigned_object_ip_range, pb.IPRange + ) + assigned_object_ip_sec_policy = convert_to_protobuf( + assigned_object_ip_sec_policy, pb.IPSecPolicy + ) + assigned_object_ip_sec_profile = convert_to_protobuf( + assigned_object_ip_sec_profile, pb.IPSecProfile + ) + assigned_object_ip_sec_proposal = convert_to_protobuf( + assigned_object_ip_sec_proposal, pb.IPSecProposal + ) + assigned_object_interface = convert_to_protobuf( + assigned_object_interface, pb.Interface + ) + assigned_object_inventory_item = convert_to_protobuf( + assigned_object_inventory_item, pb.InventoryItem + ) + assigned_object_inventory_item_role = convert_to_protobuf( + assigned_object_inventory_item_role, pb.InventoryItemRole + ) + assigned_object_journal_entry = convert_to_protobuf( + assigned_object_journal_entry, pb.JournalEntry + ) assigned_object_l2vpn = convert_to_protobuf(assigned_object_l2vpn, pb.L2VPN) - assigned_object_l2vpn_termination = convert_to_protobuf(assigned_object_l2vpn_termination, pb.L2VPNTermination) - assigned_object_location = convert_to_protobuf(assigned_object_location, pb.Location) - assigned_object_mac_address = convert_to_protobuf(assigned_object_mac_address, pb.MACAddress) - assigned_object_manufacturer = convert_to_protobuf(assigned_object_manufacturer, pb.Manufacturer) + assigned_object_l2vpn_termination = convert_to_protobuf( + assigned_object_l2vpn_termination, pb.L2VPNTermination + ) + assigned_object_location = convert_to_protobuf( + assigned_object_location, pb.Location + ) + assigned_object_mac_address = convert_to_protobuf( + assigned_object_mac_address, pb.MACAddress + ) + assigned_object_manufacturer = convert_to_protobuf( + assigned_object_manufacturer, pb.Manufacturer + ) assigned_object_module = convert_to_protobuf(assigned_object_module, pb.Module) - assigned_object_module_bay = convert_to_protobuf(assigned_object_module_bay, pb.ModuleBay) - assigned_object_module_type = convert_to_protobuf(assigned_object_module_type, pb.ModuleType) - assigned_object_module_type_profile = convert_to_protobuf(assigned_object_module_type_profile, pb.ModuleTypeProfile) - assigned_object_platform = convert_to_protobuf(assigned_object_platform, pb.Platform) - assigned_object_power_feed = convert_to_protobuf(assigned_object_power_feed, pb.PowerFeed) - assigned_object_power_outlet = convert_to_protobuf(assigned_object_power_outlet, pb.PowerOutlet) - assigned_object_power_panel = convert_to_protobuf(assigned_object_power_panel, pb.PowerPanel) - assigned_object_power_port = convert_to_protobuf(assigned_object_power_port, pb.PowerPort) + assigned_object_module_bay = convert_to_protobuf( + assigned_object_module_bay, pb.ModuleBay + ) + assigned_object_module_type = convert_to_protobuf( + assigned_object_module_type, pb.ModuleType + ) + assigned_object_module_type_profile = convert_to_protobuf( + assigned_object_module_type_profile, pb.ModuleTypeProfile + ) + assigned_object_platform = convert_to_protobuf( + assigned_object_platform, pb.Platform + ) + assigned_object_power_feed = convert_to_protobuf( + assigned_object_power_feed, pb.PowerFeed + ) + assigned_object_power_outlet = convert_to_protobuf( + assigned_object_power_outlet, pb.PowerOutlet + ) + assigned_object_power_panel = convert_to_protobuf( + assigned_object_power_panel, pb.PowerPanel + ) + assigned_object_power_port = convert_to_protobuf( + assigned_object_power_port, pb.PowerPort + ) assigned_object_prefix = convert_to_protobuf(assigned_object_prefix, pb.Prefix) - assigned_object_provider = convert_to_protobuf(assigned_object_provider, pb.Provider) - assigned_object_provider_account = convert_to_protobuf(assigned_object_provider_account, pb.ProviderAccount) - assigned_object_provider_network = convert_to_protobuf(assigned_object_provider_network, pb.ProviderNetwork) + assigned_object_provider = convert_to_protobuf( + assigned_object_provider, pb.Provider + ) + assigned_object_provider_account = convert_to_protobuf( + assigned_object_provider_account, pb.ProviderAccount + ) + assigned_object_provider_network = convert_to_protobuf( + assigned_object_provider_network, pb.ProviderNetwork + ) assigned_object_rir = convert_to_protobuf(assigned_object_rir, pb.RIR) assigned_object_rack = convert_to_protobuf(assigned_object_rack, pb.Rack) - assigned_object_rack_reservation = convert_to_protobuf(assigned_object_rack_reservation, pb.RackReservation) - assigned_object_rack_role = convert_to_protobuf(assigned_object_rack_role, pb.RackRole) - assigned_object_rack_type = convert_to_protobuf(assigned_object_rack_type, pb.RackType) - assigned_object_rear_port = convert_to_protobuf(assigned_object_rear_port, pb.RearPort) + assigned_object_rack_reservation = convert_to_protobuf( + assigned_object_rack_reservation, pb.RackReservation + ) + assigned_object_rack_role = convert_to_protobuf( + assigned_object_rack_role, pb.RackRole + ) + assigned_object_rack_type = convert_to_protobuf( + assigned_object_rack_type, pb.RackType + ) + assigned_object_rear_port = convert_to_protobuf( + assigned_object_rear_port, pb.RearPort + ) assigned_object_region = convert_to_protobuf(assigned_object_region, pb.Region) assigned_object_role = convert_to_protobuf(assigned_object_role, pb.Role) - assigned_object_route_target = convert_to_protobuf(assigned_object_route_target, pb.RouteTarget) - assigned_object_service = convert_to_protobuf(assigned_object_service, pb.Service) + assigned_object_route_target = convert_to_protobuf( + assigned_object_route_target, pb.RouteTarget + ) + assigned_object_service = convert_to_protobuf( + assigned_object_service, pb.Service + ) assigned_object_site = convert_to_protobuf(assigned_object_site, pb.Site) - assigned_object_site_group = convert_to_protobuf(assigned_object_site_group, pb.SiteGroup) + assigned_object_site_group = convert_to_protobuf( + assigned_object_site_group, pb.SiteGroup + ) assigned_object_tag = convert_to_protobuf(assigned_object_tag, pb.Tag) assigned_object_tenant = convert_to_protobuf(assigned_object_tenant, pb.Tenant) - assigned_object_tenant_group = convert_to_protobuf(assigned_object_tenant_group, pb.TenantGroup) + assigned_object_tenant_group = convert_to_protobuf( + assigned_object_tenant_group, pb.TenantGroup + ) assigned_object_tunnel = convert_to_protobuf(assigned_object_tunnel, pb.Tunnel) - assigned_object_tunnel_group = convert_to_protobuf(assigned_object_tunnel_group, pb.TunnelGroup) - assigned_object_tunnel_termination = convert_to_protobuf(assigned_object_tunnel_termination, pb.TunnelTermination) + assigned_object_tunnel_group = convert_to_protobuf( + assigned_object_tunnel_group, pb.TunnelGroup + ) + assigned_object_tunnel_termination = convert_to_protobuf( + assigned_object_tunnel_termination, pb.TunnelTermination + ) assigned_object_vlan = convert_to_protobuf(assigned_object_vlan, pb.VLAN) - assigned_object_vlan_group = convert_to_protobuf(assigned_object_vlan_group, pb.VLANGroup) - assigned_object_vlan_translation_policy = convert_to_protobuf(assigned_object_vlan_translation_policy, pb.VLANTranslationPolicy) - assigned_object_vlan_translation_rule = convert_to_protobuf(assigned_object_vlan_translation_rule, pb.VLANTranslationRule) - assigned_object_vm_interface = convert_to_protobuf(assigned_object_vm_interface, pb.VMInterface) + assigned_object_vlan_group = convert_to_protobuf( + assigned_object_vlan_group, pb.VLANGroup + ) + assigned_object_vlan_translation_policy = convert_to_protobuf( + assigned_object_vlan_translation_policy, pb.VLANTranslationPolicy + ) + assigned_object_vlan_translation_rule = convert_to_protobuf( + assigned_object_vlan_translation_rule, pb.VLANTranslationRule + ) + assigned_object_vm_interface = convert_to_protobuf( + assigned_object_vm_interface, pb.VMInterface + ) assigned_object_vrf = convert_to_protobuf(assigned_object_vrf, pb.VRF) - assigned_object_virtual_chassis = convert_to_protobuf(assigned_object_virtual_chassis, pb.VirtualChassis) - assigned_object_virtual_circuit = convert_to_protobuf(assigned_object_virtual_circuit, pb.VirtualCircuit) - assigned_object_virtual_circuit_termination = convert_to_protobuf(assigned_object_virtual_circuit_termination, pb.VirtualCircuitTermination) - assigned_object_virtual_circuit_type = convert_to_protobuf(assigned_object_virtual_circuit_type, pb.VirtualCircuitType) - assigned_object_virtual_device_context = convert_to_protobuf(assigned_object_virtual_device_context, pb.VirtualDeviceContext) - assigned_object_virtual_disk = convert_to_protobuf(assigned_object_virtual_disk, pb.VirtualDisk) - assigned_object_virtual_machine = convert_to_protobuf(assigned_object_virtual_machine, pb.VirtualMachine) - assigned_object_wireless_lan = convert_to_protobuf(assigned_object_wireless_lan, pb.WirelessLAN) - assigned_object_wireless_lan_group = convert_to_protobuf(assigned_object_wireless_lan_group, pb.WirelessLANGroup) - assigned_object_wireless_link = convert_to_protobuf(assigned_object_wireless_link, pb.WirelessLink) - assigned_object_custom_link = convert_to_protobuf(assigned_object_custom_link, pb.CustomLink) + assigned_object_virtual_chassis = convert_to_protobuf( + assigned_object_virtual_chassis, pb.VirtualChassis + ) + assigned_object_virtual_circuit = convert_to_protobuf( + assigned_object_virtual_circuit, pb.VirtualCircuit + ) + assigned_object_virtual_circuit_termination = convert_to_protobuf( + assigned_object_virtual_circuit_termination, pb.VirtualCircuitTermination + ) + assigned_object_virtual_circuit_type = convert_to_protobuf( + assigned_object_virtual_circuit_type, pb.VirtualCircuitType + ) + assigned_object_virtual_device_context = convert_to_protobuf( + assigned_object_virtual_device_context, pb.VirtualDeviceContext + ) + assigned_object_virtual_disk = convert_to_protobuf( + assigned_object_virtual_disk, pb.VirtualDisk + ) + assigned_object_virtual_machine = convert_to_protobuf( + assigned_object_virtual_machine, pb.VirtualMachine + ) + assigned_object_wireless_lan = convert_to_protobuf( + assigned_object_wireless_lan, pb.WirelessLAN + ) + assigned_object_wireless_lan_group = convert_to_protobuf( + assigned_object_wireless_lan_group, pb.WirelessLANGroup + ) + assigned_object_wireless_link = convert_to_protobuf( + assigned_object_wireless_link, pb.WirelessLink + ) + assigned_object_custom_link = convert_to_protobuf( + assigned_object_custom_link, pb.CustomLink + ) tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + metadata = convert_dict_to_struct(metadata) result = pb.JournalEntry( assigned_object_asn=assigned_object_asn, assigned_object_asn_range=assigned_object_asn_range, @@ -5884,6 +7467,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -5898,11 +7482,15 @@ def __new__( schema: 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, + custom_fields: ( + dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None + ) = None, + metadata: dict[str, Any] | None = None, ) -> pb.ModuleTypeProfile: """Create a new ModuleTypeProfile.""" tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + metadata = convert_dict_to_struct(metadata) result = pb.ModuleTypeProfile( name=name, description=description, @@ -5910,6 +7498,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + metadata=metadata, ) return result @@ -5928,8 +7517,10 @@ def __new__( button_class: str | None = None, new_window: bool | None = None, object_types: list[str] | None = None, + metadata: dict[str, Any] | None = None, ) -> pb.CustomLink: """Create a new CustomLink.""" + metadata = convert_dict_to_struct(metadata) result = pb.CustomLink( name=name, enabled=enabled, @@ -5940,5 +7531,6 @@ def __new__( button_class=button_class, new_window=new_window, object_types=object_types, + metadata=metadata, ) return result From b4100ddbf42500730ff23eceb9cff62d769fe939 Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Fri, 14 Nov 2025 19:19:11 +0100 Subject: [PATCH 6/9] feat: enhance entity tests to validate metadata integration across various entity types Signed-off-by: Michal Fiedorowicz --- tests/test_ingester.py | 214 +++++++++++++++++++++-------------------- 1 file changed, 111 insertions(+), 103 deletions(-) diff --git a/tests/test_ingester.py b/tests/test_ingester.py index 4339bfe..4a53857 100644 --- a/tests/test_ingester.py +++ b/tests/test_ingester.py @@ -138,11 +138,12 @@ def test_platform_instantiation_with_all_fields(): tags=["tag1", "tag2"], ) assert isinstance(platform, PlatformPb) + assert hasattr(platform, 'metadata') assert platform.name == "Platform1" assert platform.slug == "platform1" + assert platform.description == "This is a platform" assert isinstance(platform.manufacturer, ManufacturerPb) assert platform.manufacturer.name == "Manufacturer1" - assert platform.description == "This is a platform" assert len(platform.tags) == 2 for tag in platform.tags: assert isinstance(tag, TagPb) @@ -157,9 +158,11 @@ def test_platform_instantiation_with_explicit_manufacturer(): tags=["tag1", "tag2"], ) assert isinstance(platform, PlatformPb) + assert hasattr(platform, 'metadata') + + # Test user-facing API: works like protobuf assert platform.name == "Platform1" assert platform.slug == "platform1" - assert isinstance(platform.manufacturer, ManufacturerPb) assert platform.manufacturer.name == "Manufacturer1" assert len(platform.tags) == 2 for tag in platform.tags: @@ -261,10 +264,6 @@ def test_device_instantiation_with_explicit_nested_object_types(): manufacturer=Manufacturer(name="Manufacturer1"), ) assert isinstance(device, DevicePb) - assert isinstance(device.device_type, DeviceTypePb) - assert isinstance(device.role, DeviceRolePb) - assert isinstance(device.platform, PlatformPb) - assert isinstance(device.site, SitePb) assert isinstance(device.primary_ip4, IPAddressPb) assert isinstance(device.primary_ip6, IPAddressPb) assert device.device_type.manufacturer.name == "Manufacturer1" @@ -409,12 +408,6 @@ def test_ip_address_instantiation_with_explicit_nested_object_types(): tags=["tag1", "tag2"], ) assert isinstance(ip_address, IPAddressPb) - 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" @@ -522,7 +515,6 @@ def test_cluster_instantiation_with_all_fields(): tags=["us", "gc"], ) assert isinstance(cluster, ClusterPb) - assert isinstance(cluster.group, ClusterGroupPb) assert isinstance(cluster.type, ClusterTypePb) assert isinstance(cluster.scope_site, SitePb) assert cluster.name == "gc-us-east1" @@ -581,8 +573,6 @@ def test_virtual_machine_instantiation_with_cluster_without_site(): description="VM on google cloud", ) assert isinstance(virtual_machine, VirtualMachinePb) - assert isinstance(virtual_machine.cluster, ClusterPb) - assert isinstance(virtual_machine.site, SitePb) assert isinstance(virtual_machine.role, DeviceRolePb) assert virtual_machine.name == "vm1" assert virtual_machine.status == "active" @@ -832,9 +822,6 @@ def test_entity_instantiation_with_vm_interface(): assert isinstance(entity.vm_interface, VMInterfacePb) assert entity.vm_interface.name == "VMInterface1" -# ==================== Entity-Level Metadata Tests ==================== - - def test_entity_with_metadata(): """Test Entity with entity-level metadata.""" metadata = { @@ -842,24 +829,21 @@ def test_entity_with_metadata(): "import_id": "batch-123", "priority": 5, } - - entity = Entity( - site="TestSite", - metadata=metadata, - ) - + + site = Site(name="TestSite", metadata=metadata) + entity = Entity(site=site) + assert isinstance(entity, EntityPb) assert entity.HasField("site") assert entity.site.name == "TestSite" - - # Verify metadata is present - assert entity.HasField("metadata") - assert "source" in entity.metadata.fields - assert entity.metadata.fields["source"].string_value == "import-script" - assert "import_id" in entity.metadata.fields - assert entity.metadata.fields["import_id"].string_value == "batch-123" - assert "priority" in entity.metadata.fields - assert entity.metadata.fields["priority"].number_value == 5 + + assert entity.site.HasField("metadata") + assert "source" in entity.site.metadata.fields + assert entity.site.metadata.fields["source"].string_value == "import-script" + assert "import_id" in entity.site.metadata.fields + assert entity.site.metadata.fields["import_id"].string_value == "batch-123" + assert "priority" in entity.site.metadata.fields + assert entity.site.metadata.fields["priority"].number_value == 5 def test_entity_with_nested_metadata(): @@ -871,28 +855,25 @@ def test_entity_with_nested_metadata(): "retry_count": 3, } } - - entity = Entity( - device="TestDevice", - metadata=metadata, - ) - + + device = Device(name="TestDevice", metadata=metadata) + entity = Entity(device=device) + assert isinstance(entity, EntityPb) assert entity.HasField("device") assert entity.device.name == "TestDevice" - - # Verify metadata structure - assert entity.HasField("metadata") - assert "tags" in entity.metadata.fields - assert entity.metadata.fields["tags"].HasField("list_value") - tags_list = entity.metadata.fields["tags"].list_value.values + + assert entity.device.HasField("metadata") + assert "tags" in entity.device.metadata.fields + assert entity.device.metadata.fields["tags"].HasField("list_value") + tags_list = entity.device.metadata.fields["tags"].list_value.values assert len(tags_list) == 2 assert tags_list[0].string_value == "production" assert tags_list[1].string_value == "critical" - - assert "config" in entity.metadata.fields - assert entity.metadata.fields["config"].HasField("struct_value") - config_struct = entity.metadata.fields["config"].struct_value.fields + + assert "config" in entity.device.metadata.fields + assert entity.device.metadata.fields["config"].HasField("struct_value") + config_struct = entity.device.metadata.fields["config"].struct_value.fields assert "auto_sync" in config_struct assert config_struct["auto_sync"].bool_value is True assert "retry_count" in config_struct @@ -902,17 +883,16 @@ def test_entity_with_nested_metadata(): def test_entity_without_metadata(): """Test Entity without metadata (backward compatibility).""" entity = Entity(site="TestSite") - + assert isinstance(entity, EntityPb) assert entity.HasField("site") assert entity.site.name == "TestSite" - - # Verify metadata field exists but is empty - assert not entity.HasField("metadata") or len(entity.metadata.fields) == 0 + + assert not entity.site.HasField("metadata") or len(entity.site.metadata.fields) == 0 def test_entity_metadata_type_conversion(): - """Test Entity metadata with different Python types.""" + """Test entity type metadata with different Python types.""" metadata = { "string_val": "test", "int_val": 42, @@ -921,22 +901,19 @@ def test_entity_metadata_type_conversion(): "bool_false": False, "null_val": None, } - - entity = Entity( - site="TestSite", - metadata=metadata, - ) - + + site = Site(name="TestSite", metadata=metadata) + entity = Entity(site=site) + assert isinstance(entity, EntityPb) - assert entity.HasField("metadata") - - # Verify type conversions - assert entity.metadata.fields["string_val"].string_value == "test" - assert entity.metadata.fields["int_val"].number_value == 42 - assert entity.metadata.fields["float_val"].number_value == 3.14 - assert entity.metadata.fields["bool_true"].bool_value is True - assert entity.metadata.fields["bool_false"].bool_value is False - assert entity.metadata.fields["null_val"].HasField("null_value") + assert entity.site.HasField("metadata") + + assert entity.site.metadata.fields["string_val"].string_value == "test" + assert entity.site.metadata.fields["int_val"].number_value == 42 + assert entity.site.metadata.fields["float_val"].number_value == 3.14 + assert entity.site.metadata.fields["bool_true"].bool_value is True + assert entity.site.metadata.fields["bool_false"].bool_value is False + assert entity.site.metadata.fields["null_val"].HasField("null_value") def test_device_with_metadata(): @@ -945,47 +922,78 @@ def test_device_with_metadata(): "rack_position": "A1", "warranty_expires": "2025-12-31", } - - entity = Entity( - device=Device( - name="switch-01", - device_type="Catalyst 9300", - site="DC1", - ), + + device = Device( + name="switch-01", + device_type="Catalyst 9300", + site="DC1", metadata=metadata, ) - + entity = Entity(device=device) + assert isinstance(entity, EntityPb) assert entity.HasField("device") assert entity.device.name == "switch-01" - assert entity.HasField("metadata") - assert entity.metadata.fields["rack_position"].string_value == "A1" - assert entity.metadata.fields["warranty_expires"].string_value == "2025-12-31" + assert entity.device.HasField("metadata") + assert entity.device.metadata.fields["rack_position"].string_value == "A1" + assert entity.device.metadata.fields["warranty_expires"].string_value == "2025-12-31" def test_multiple_entities_with_different_metadata(): - """Test multiple entities each with their own metadata.""" + """Test multiple entities each with metadata.""" entities = [ - Entity( - site="Site1", - metadata={"region": "us-west", "priority": 1} - ), - Entity( - site="Site2", - metadata={"region": "us-east", "priority": 2} - ), - Entity( - device="Device1", - metadata={"rack": "A1", "power_source": "UPS-1"} - ), + Entity(site=Site(name="Site1", metadata={"region": "us-west", "priority": 1})), + Entity(site=Site(name="Site2", metadata={"region": "us-east", "priority": 2})), + Entity(device=Device(name="Device1", metadata={"rack": "A1", "power_source": "UPS-1"})), ] - - # Verify each entity has its own metadata - assert entities[0].metadata.fields["region"].string_value == "us-west" - assert entities[0].metadata.fields["priority"].number_value == 1 - - assert entities[1].metadata.fields["region"].string_value == "us-east" - assert entities[1].metadata.fields["priority"].number_value == 2 - - assert entities[2].metadata.fields["rack"].string_value == "A1" - assert entities[2].metadata.fields["power_source"].string_value == "UPS-1" + + assert entities[0].site.metadata.fields["region"].string_value == "us-west" + assert entities[0].site.metadata.fields["priority"].number_value == 1 + + assert entities[1].site.metadata.fields["region"].string_value == "us-east" + assert entities[1].site.metadata.fields["priority"].number_value == 2 + + assert entities[2].device.metadata.fields["rack"].string_value == "A1" + assert entities[2].device.metadata.fields["power_source"].string_value == "UPS-1" + + +def test_entity_with_nested_entity_both_with_metadata(): + """Test that nested entity metadata is embedded in protobufs.""" + manufacturer = Manufacturer( + name="Cisco Systems", + metadata={ + "vendor_id": "CSCO-001", + "support_tier": "platinum", + "contract_number": "SUP-12345", + } + ) + + platform = Platform( + name="Cisco IOS XE", + manufacturer=manufacturer, + metadata={ + "platform_version": "17.3.4", + "certified": True, + "eol_date": "2030-12-31", + } + ) + + assert isinstance(platform, PlatformPb) + assert platform.HasField("metadata") + assert platform.metadata.fields["platform_version"].string_value == "17.3.4" + assert platform.metadata.fields["certified"].bool_value is True + assert platform.metadata.fields["eol_date"].string_value == "2030-12-31" + + assert isinstance(platform.manufacturer, ManufacturerPb) + assert platform.manufacturer.HasField("metadata") + assert platform.manufacturer.metadata.fields["vendor_id"].string_value == "CSCO-001" + assert platform.manufacturer.metadata.fields["support_tier"].string_value == "platinum" + assert platform.manufacturer.metadata.fields["contract_number"].string_value == "SUP-12345" + assert platform.manufacturer.name == "Cisco Systems" + + platform_entity = Entity(platform=platform) + assert isinstance(platform_entity, EntityPb) + assert platform_entity.HasField('platform') + assert platform_entity.platform.name == "Cisco IOS XE" + assert platform_entity.platform.HasField('manufacturer') + assert platform_entity.platform.manufacturer.name == "Cisco Systems" From 16a0d44602c58d134dbea4ef16b8da1589ca60da Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Fri, 14 Nov 2025 19:19:28 +0100 Subject: [PATCH 7/9] feat: update README to include examples of metadata usage Signed-off-by: Michal Fiedorowicz --- README.md | 82 +++++++++++++++++++++++++------------------------------ 1 file changed, 37 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index 01ec71e..cc6ca61 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,7 @@ Entities support attaching custom metadata as key-value pairs. Metadata can be u ```python from netboxlabs.diode.sdk import DiodeClient, Entity -from netboxlabs.diode.sdk.ingester import Device, Site +from netboxlabs.diode.sdk.ingester import Device, Site, IPAddress with DiodeClient( target="grpc://localhost:8080/diode", @@ -98,64 +98,54 @@ with DiodeClient( app_version="1.0.0", ) as client: # Create a device with metadata - # Note: Both the device and its nested site can have metadata - device_entity = Entity( - device=Device( - name="Device A", - device_type="Device Type A", - site=Site( - name="Site ABC", - # Nested entities can also have metadata - metadata={ - "site_region": "us-west", - "site_cost_center": "CC-001", - } - ), - role="Role ABC", + # Note: Both the device and its nested site can have its own metadata + device = Device( + name="Device A", + device_type="Device Type A", + site=Site( + name="Site ABC", + metadata={ + "site_region": "us-west", + "site_cost_center": "CC-001", + }, ), - # Add metadata to track additional information about the device + role="Role ABC", metadata={ "source": "network_discovery", "discovered_at": "2024-01-15T10:30:00Z", "import_batch": "batch-123", "priority": 1, "verified": True, - } + }, ) # Create an IP address with metadata - from netboxlabs.diode.sdk.ingester import IPAddress - ip_entity = Entity( - ip_address=IPAddress( - address="192.168.1.10/24", - status="active", - ), - # Metadata can store various data types + ip_address = IPAddress( + address="192.168.1.10/24", + status="active", metadata={ "last_scan": "2024-01-15T12:00:00Z", "scan_id": "scan-456", "response_time": 23.5, "reachable": True, "owner_team": "network-ops", - } + }, ) # Create a site with metadata - site_entity = Entity( - site=Site( - name="Data Center 1", - status="active", - ), + site = Site( + name="Data Center 1", + status="active", metadata={ "region": "us-west", "cost_center": "CC-001", "capacity": 500, "is_primary": True, "contact_email": "dc1-ops@example.com", - } + }, ) - entities = [device_entity, ip_entity, site_entity] + entities = [Entity(device=device), Entity(ip_address=ip_address), Entity(site=site)] response = client.ingest(entities=entities) if response.errors: print(f"Errors: {response.errors}") @@ -174,17 +164,19 @@ with DiodeClient( app_name="my-app", app_version="1.0.0", ) as client: - # Create entities - entities = [ - Entity(device=Device( - name="Device A", - site=Site(name="Site ABC"), - )), - Entity(device=Device( - name="Device B", - site=Site(name="Site XYZ"), - )), - ] + # Create device A + device_a = Device( + name="Device A", + site=Site(name="Site ABC"), + ) + + # Create device B + device_b = Device( + name="Device B", + site=Site(name="Site XYZ"), + ) + + entities = [Entity(device=device_a), Entity(device=device_b)] # Add request-level metadata to track the ingestion batch response = client.ingest( @@ -195,7 +187,7 @@ with DiodeClient( "import_type": "automated", "record_count": len(entities), "validated": True, - } + }, ) if response.errors: print(f"Errors: {response.errors}") @@ -379,7 +371,7 @@ with DiodeOTLPClient( "deployment": "us-west-2", "version": "1.2.3", "priority": 5, - } + }, ) ``` From 480fd3c6e4de8b800ae652b11cf895c4048e4a9a Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Fri, 14 Nov 2025 19:41:41 +0100 Subject: [PATCH 8/9] fix: tests formatting Signed-off-by: Michal Fiedorowicz --- tests/test_client.py | 161 +++++++++++++++++++++++------------------ tests/test_ingester.py | 76 ++++++++++++++----- 2 files changed, 147 insertions(+), 90 deletions(-) diff --git a/tests/test_client.py b/tests/test_client.py index 3e9d81e..0371a39 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -749,8 +749,12 @@ def test_load_dryrun_entities_from_fixture(message_path, tmp_path): def test_otlp_client_exports_entities(): """Ensure DiodeOTLPClient serializes entities and exports them as logs.""" with ( - patch("netboxlabs.diode.sdk.client.grpc.insecure_channel") as mock_insecure_channel, - patch("netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub") as mock_stub_cls, + patch( + "netboxlabs.diode.sdk.client.grpc.insecure_channel" + ) as mock_insecure_channel, + patch( + "netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub" + ) as mock_stub_cls, ): mock_insecure_channel.return_value = mock.Mock() stub_instance = mock_stub_cls.return_value @@ -795,8 +799,12 @@ def details(self): return self._details with ( - patch("netboxlabs.diode.sdk.client.grpc.insecure_channel") as mock_insecure_channel, - patch("netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub") as mock_stub_cls, + patch( + "netboxlabs.diode.sdk.client.grpc.insecure_channel" + ) as mock_insecure_channel, + patch( + "netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub" + ) as mock_stub_cls, ): mock_insecure_channel.return_value = mock.Mock() stub_instance = mock_stub_cls.return_value @@ -820,9 +828,13 @@ def details(self): def test_otlp_client_grpcs_uses_secure_channel(): """Ensure DiodeOTLPClient configures SSL credentials for secure targets.""" with ( - patch("netboxlabs.diode.sdk.client.grpc.ssl_channel_credentials") as mock_ssl_credentials, + patch( + "netboxlabs.diode.sdk.client.grpc.ssl_channel_credentials" + ) as mock_ssl_credentials, patch("netboxlabs.diode.sdk.client.grpc.secure_channel") as mock_secure_channel, - patch("netboxlabs.diode.sdk.client.grpc.intercept_channel") as mock_intercept_channel, + patch( + "netboxlabs.diode.sdk.client.grpc.intercept_channel" + ) as mock_intercept_channel, patch("netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub"), ): base_channel = mock.Mock() @@ -1287,6 +1299,7 @@ def test_certificate_loading_efficiency(tmp_path): # Verify _load_certs was NOT called again (certificates reused) mock_load_certs.assert_not_called() + # ==================== Request-Level Metadata Tests ==================== @@ -1295,7 +1308,7 @@ def test_grpc_client_ingest_with_request_metadata(mock_diode_authentication): with patch("netboxlabs.diode.sdk.client.grpc.insecure_channel") as mock_channel: mock_stub = MagicMock() mock_channel.return_value = MagicMock() - + client = DiodeClient( target="grpc://localhost:8081", app_name="test-app", @@ -1305,24 +1318,24 @@ def test_grpc_client_ingest_with_request_metadata(mock_diode_authentication): ) client._stub = mock_stub mock_stub.Ingest.return_value = ingester_pb2.IngestResponse() - + # Ingest with request-level metadata metadata = { "batch_id": "batch-123", "record_count": 150, "validated": True, } - + response = client.ingest( entities=[Entity(site="TestSite")], metadata=metadata, ) - + # Verify Ingest was called assert mock_stub.Ingest.called call_args = mock_stub.Ingest.call_args[0] request = call_args[0] - + # Verify metadata is in the request assert request.HasField("metadata") assert "batch_id" in request.metadata.fields @@ -1331,7 +1344,7 @@ def test_grpc_client_ingest_with_request_metadata(mock_diode_authentication): assert request.metadata.fields["record_count"].number_value == 150 assert "validated" in request.metadata.fields assert request.metadata.fields["validated"].bool_value is True - + assert isinstance(response, ingester_pb2.IngestResponse) @@ -1340,7 +1353,7 @@ def test_grpc_client_ingest_without_metadata(mock_diode_authentication): with patch("netboxlabs.diode.sdk.client.grpc.insecure_channel") as mock_channel: mock_stub = MagicMock() mock_channel.return_value = MagicMock() - + client = DiodeClient( target="grpc://localhost:8081", app_name="test-app", @@ -1350,15 +1363,15 @@ def test_grpc_client_ingest_without_metadata(mock_diode_authentication): ) client._stub = mock_stub mock_stub.Ingest.return_value = ingester_pb2.IngestResponse() - + # Ingest without metadata response = client.ingest(entities=[Entity(site="TestSite")]) - + # Verify Ingest was called assert mock_stub.Ingest.called call_args = mock_stub.Ingest.call_args[0] request = call_args[0] - + # Verify metadata field exists but is empty assert not request.HasField("metadata") or len(request.metadata.fields) == 0 assert isinstance(response, ingester_pb2.IngestResponse) @@ -1368,36 +1381,36 @@ def test_dryrun_client_includes_metadata_in_output(tmp_path): """Test DiodeDryRunClient includes request-level metadata in JSON output.""" output_dir = tmp_path / "dryrun_output" output_dir.mkdir() - + client = DiodeDryRunClient( app_name="test-producer", output_dir=str(output_dir), ) - + metadata = { "import_id": "imp-456", "source": "csv-import", "priority": 5, } - + client.ingest( entities=[Entity(site="Site1"), Entity(device="Device1")], metadata=metadata, ) - + # Find the generated JSON file json_files = list(output_dir.glob("*.json")) assert len(json_files) == 1 - + with open(json_files[0]) as f: data = json.load(f) - + # Verify metadata is in the output assert "metadata" in data assert data["metadata"]["import_id"] == "imp-456" assert data["metadata"]["source"] == "csv-import" assert data["metadata"]["priority"] == 5 - + # Verify entities are present assert "entities" in data assert len(data["entities"]) == 2 @@ -1406,40 +1419,42 @@ def test_dryrun_client_includes_metadata_in_output(tmp_path): def test_otlp_client_maps_metadata_to_resource_attributes(): """Test DiodeOTLPClient maps request metadata to OTLP resource attributes.""" with ( - patch("netboxlabs.diode.sdk.client.grpc.insecure_channel") as mock_insecure_channel, - patch("netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub") as mock_stub_cls, + patch( + "netboxlabs.diode.sdk.client.grpc.insecure_channel" + ) as mock_insecure_channel, + patch( + "netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub" + ) as mock_stub_cls, ): mock_insecure_channel.return_value = mock.Mock() stub_instance = mock_stub_cls.return_value - + client = DiodeOTLPClient( target="grpc://collector:4317", app_name="test-app", app_version="1.0.0", ) - + metadata = { "environment": "production", "region": "us-west", "instance_count": 10, } - + client.ingest( entities=[Entity(site="TestSite")], metadata=metadata, ) - + # Get the Export call arguments stub_instance.Export.assert_called_once() export_args, _ = stub_instance.Export.call_args request = export_args[0] resource_logs = request.resource_logs[0] - + # Extract resource attributes - attributes = { - kv.key: kv.value for kv in resource_logs.resource.attributes - } - + attributes = {kv.key: kv.value for kv in resource_logs.resource.attributes} + # Verify metadata is mapped with diode.metadata.* prefix assert "diode.metadata.environment" in attributes assert attributes["diode.metadata.environment"].string_value == "production" @@ -1452,18 +1467,22 @@ def test_otlp_client_maps_metadata_to_resource_attributes(): def test_otlp_client_handles_nested_metadata(): """Test DiodeOTLPClient handles nested metadata structures.""" with ( - patch("netboxlabs.diode.sdk.client.grpc.insecure_channel") as mock_insecure_channel, - patch("netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub") as mock_stub_cls, + patch( + "netboxlabs.diode.sdk.client.grpc.insecure_channel" + ) as mock_insecure_channel, + patch( + "netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub" + ) as mock_stub_cls, ): mock_insecure_channel.return_value = mock.Mock() stub_instance = mock_stub_cls.return_value - + client = DiodeOTLPClient( target="grpc://collector:4317", app_name="test-app", app_version="1.0.0", ) - + metadata = { "tags": ["prod", "critical"], "config": { @@ -1472,26 +1491,24 @@ def test_otlp_client_handles_nested_metadata(): "features": { "validation": True, "auto_sync": False, - } - } + }, + }, } - + client.ingest( entities=[Entity(site="TestSite")], metadata=metadata, ) - + # Get the Export call arguments stub_instance.Export.assert_called_once() export_args, _ = stub_instance.Export.call_args request = export_args[0] resource_logs = request.resource_logs[0] - + # Extract resource attributes - attributes = { - kv.key: kv.value for kv in resource_logs.resource.attributes - } - + attributes = {kv.key: kv.value for kv in resource_logs.resource.attributes} + # Verify nested metadata is present assert "diode.metadata.tags" in attributes assert attributes["diode.metadata.tags"].HasField("array_value") @@ -1499,12 +1516,12 @@ def test_otlp_client_handles_nested_metadata(): assert len(tags_array) == 2 assert tags_array[0].string_value == "prod" assert tags_array[1].string_value == "critical" - + assert "diode.metadata.config" in attributes assert attributes["diode.metadata.config"].HasField("kvlist_value") config_kvlist = attributes["diode.metadata.config"].kvlist_value.values config_dict = {kv.key: kv.value for kv in config_kvlist} - + assert "retry_count" in config_dict assert config_dict["retry_count"].int_value == 3 assert "timeout" in config_dict @@ -1516,18 +1533,22 @@ def test_otlp_client_handles_nested_metadata(): def test_otlp_client_metadata_type_conversion(): """Test DiodeOTLPClient correctly converts different Python types.""" with ( - patch("netboxlabs.diode.sdk.client.grpc.insecure_channel") as mock_insecure_channel, - patch("netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub") as mock_stub_cls, + patch( + "netboxlabs.diode.sdk.client.grpc.insecure_channel" + ) as mock_insecure_channel, + patch( + "netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub" + ) as mock_stub_cls, ): mock_insecure_channel.return_value = mock.Mock() stub_instance = mock_stub_cls.return_value - + client = DiodeOTLPClient( target="grpc://collector:4317", app_name="test-app", app_version="1.0.0", ) - + metadata = { "string_val": "test", "int_val": 42, @@ -1535,23 +1556,21 @@ def test_otlp_client_metadata_type_conversion(): "bool_true": True, "bool_false": False, } - + client.ingest( entities=[Entity(site="TestSite")], metadata=metadata, ) - + # Get the Export call arguments stub_instance.Export.assert_called_once() export_args, _ = stub_instance.Export.call_args request = export_args[0] resource_logs = request.resource_logs[0] - + # Extract resource attributes - attributes = { - kv.key: kv.value for kv in resource_logs.resource.attributes - } - + attributes = {kv.key: kv.value for kv in resource_logs.resource.attributes} + # Verify type conversions assert attributes["diode.metadata.string_val"].string_value == "test" assert attributes["diode.metadata.int_val"].int_value == 42 @@ -1563,32 +1582,34 @@ def test_otlp_client_metadata_type_conversion(): def test_otlp_client_without_metadata(): """Test DiodeOTLPClient works without metadata (backward compatibility).""" with ( - patch("netboxlabs.diode.sdk.client.grpc.insecure_channel") as mock_insecure_channel, - patch("netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub") as mock_stub_cls, + patch( + "netboxlabs.diode.sdk.client.grpc.insecure_channel" + ) as mock_insecure_channel, + patch( + "netboxlabs.diode.sdk.client.logs_service_pb2_grpc.LogsServiceStub" + ) as mock_stub_cls, ): mock_insecure_channel.return_value = mock.Mock() stub_instance = mock_stub_cls.return_value - + client = DiodeOTLPClient( target="grpc://collector:4317", app_name="test-app", app_version="1.0.0", ) - + # Ingest without metadata client.ingest(entities=[Entity(site="TestSite")]) - + # Get the Export call arguments stub_instance.Export.assert_called_once() export_args, _ = stub_instance.Export.call_args request = export_args[0] resource_logs = request.resource_logs[0] - + # Extract resource attributes - attributes = { - kv.key for kv in resource_logs.resource.attributes - } - + attributes = {kv.key for kv in resource_logs.resource.attributes} + # Verify no diode.metadata.* attributes are present metadata_attrs = [k for k in attributes if k.startswith("diode.metadata.")] assert len(metadata_attrs) == 0 diff --git a/tests/test_ingester.py b/tests/test_ingester.py index 4a53857..473eaea 100644 --- a/tests/test_ingester.py +++ b/tests/test_ingester.py @@ -138,7 +138,7 @@ def test_platform_instantiation_with_all_fields(): tags=["tag1", "tag2"], ) assert isinstance(platform, PlatformPb) - assert hasattr(platform, 'metadata') + assert hasattr(platform, "metadata") assert platform.name == "Platform1" assert platform.slug == "platform1" assert platform.description == "This is a platform" @@ -158,7 +158,7 @@ def test_platform_instantiation_with_explicit_manufacturer(): tags=["tag1", "tag2"], ) assert isinstance(platform, PlatformPb) - assert hasattr(platform, 'metadata') + assert hasattr(platform, "metadata") # Test user-facing API: works like protobuf assert platform.name == "Platform1" @@ -365,14 +365,24 @@ def test_ip_address_instantiation_with_all_fields(): 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.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.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" @@ -408,8 +418,14 @@ def test_ip_address_instantiation_with_explicit_nested_object_types(): tags=["tag1", "tag2"], ) assert isinstance(ip_address, IPAddressPb) - 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.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" @@ -435,12 +451,20 @@ def test_ip_address_instantiation_with_manufacturer_populated_to_device_type_and assert isinstance(ip_address, IPAddressPb) 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.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.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" @@ -822,6 +846,7 @@ def test_entity_instantiation_with_vm_interface(): assert isinstance(entity.vm_interface, VMInterfacePb) assert entity.vm_interface.name == "VMInterface1" + def test_entity_with_metadata(): """Test Entity with entity-level metadata.""" metadata = { @@ -853,7 +878,7 @@ def test_entity_with_nested_metadata(): "config": { "auto_sync": True, "retry_count": 3, - } + }, } device = Device(name="TestDevice", metadata=metadata) @@ -936,7 +961,9 @@ def test_device_with_metadata(): assert entity.device.name == "switch-01" assert entity.device.HasField("metadata") assert entity.device.metadata.fields["rack_position"].string_value == "A1" - assert entity.device.metadata.fields["warranty_expires"].string_value == "2025-12-31" + assert ( + entity.device.metadata.fields["warranty_expires"].string_value == "2025-12-31" + ) def test_multiple_entities_with_different_metadata(): @@ -944,7 +971,11 @@ def test_multiple_entities_with_different_metadata(): entities = [ Entity(site=Site(name="Site1", metadata={"region": "us-west", "priority": 1})), Entity(site=Site(name="Site2", metadata={"region": "us-east", "priority": 2})), - Entity(device=Device(name="Device1", metadata={"rack": "A1", "power_source": "UPS-1"})), + Entity( + device=Device( + name="Device1", metadata={"rack": "A1", "power_source": "UPS-1"} + ) + ), ] assert entities[0].site.metadata.fields["region"].string_value == "us-west" @@ -965,7 +996,7 @@ def test_entity_with_nested_entity_both_with_metadata(): "vendor_id": "CSCO-001", "support_tier": "platinum", "contract_number": "SUP-12345", - } + }, ) platform = Platform( @@ -975,7 +1006,7 @@ def test_entity_with_nested_entity_both_with_metadata(): "platform_version": "17.3.4", "certified": True, "eol_date": "2030-12-31", - } + }, ) assert isinstance(platform, PlatformPb) @@ -987,13 +1018,18 @@ def test_entity_with_nested_entity_both_with_metadata(): assert isinstance(platform.manufacturer, ManufacturerPb) assert platform.manufacturer.HasField("metadata") assert platform.manufacturer.metadata.fields["vendor_id"].string_value == "CSCO-001" - assert platform.manufacturer.metadata.fields["support_tier"].string_value == "platinum" - assert platform.manufacturer.metadata.fields["contract_number"].string_value == "SUP-12345" + assert ( + platform.manufacturer.metadata.fields["support_tier"].string_value == "platinum" + ) + assert ( + platform.manufacturer.metadata.fields["contract_number"].string_value + == "SUP-12345" + ) assert platform.manufacturer.name == "Cisco Systems" platform_entity = Entity(platform=platform) assert isinstance(platform_entity, EntityPb) - assert platform_entity.HasField('platform') + assert platform_entity.HasField("platform") assert platform_entity.platform.name == "Cisco IOS XE" - assert platform_entity.platform.HasField('manufacturer') + assert platform_entity.platform.HasField("manufacturer") assert platform_entity.platform.manufacturer.name == "Cisco Systems" From 13cb78939405aec41b35c9455d20588b8419e4c2 Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Fri, 14 Nov 2025 19:45:19 +0100 Subject: [PATCH 9/9] fix: correct import order in ingester.py Signed-off-by: Michal Fiedorowicz --- netboxlabs/diode/sdk/ingester.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netboxlabs/diode/sdk/ingester.py b/netboxlabs/diode/sdk/ingester.py index ffd6596..805b054 100644 --- a/netboxlabs/diode/sdk/ingester.py +++ b/netboxlabs/diode/sdk/ingester.py @@ -12,8 +12,8 @@ import re from typing import Any -from google.protobuf import timestamp_pb2 as _timestamp_pb2 from google.protobuf import struct_pb2 as _struct_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 import netboxlabs.diode.sdk.diode.v1.ingester_pb2 as pb