diff --git a/docs/README.md b/docs/README.md index 4ee1d80..f06a55b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,7 +1,7 @@ # Diode Python SDK - Entity Examples Source: NetBox v4.6.0 -Generated: 2026-05-14 20:30:15Z +Generated: 2026-07-03 00:59:24Z ## Prerequisites diff --git a/docs/examples/cable.py b/docs/examples/cable.py index 4ae63a2..1cc8d64 100644 --- a/docs/examples/cable.py +++ b/docs/examples/cable.py @@ -11,9 +11,16 @@ from netboxlabs.diode.sdk.ingester import ( Cable, CableBundle, + Device, + DeviceRole, + DeviceType, Entity, + GenericObject, + Interface, + Manufacturer, Owner, OwnerGroup, + Site, Tag, Tenant, ) @@ -50,6 +57,76 @@ def cable_minimal() -> Cable: """Create a Cable with only required fields using flat strings.""" return Cable( metadata={"source": "example"}, + a_terminations=[ + GenericObject( + object_interface=Interface( + device=Device( + device_type=DeviceType( + manufacturer=Manufacturer( + name="Example Name", + slug="example-slug", + metadata={"source": "example"}, + ), + model="Model X", + slug="example-slug", + metadata={"source": "example"}, + ), + role=DeviceRole( + name="Example Name", + slug="example-slug", + color="0000ff", + metadata={"source": "example"}, + ), + site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + status="active", + metadata={"source": "example"}, + ), + name="Example Name A", + type="1000base-t", + metadata={"source": "example"}, + ) + ) + ], + b_terminations=[ + GenericObject( + object_interface=Interface( + device=Device( + device_type=DeviceType( + manufacturer=Manufacturer( + name="Example Name", + slug="example-slug", + metadata={"source": "example"}, + ), + model="Model X", + slug="example-slug", + metadata={"source": "example"}, + ), + role=DeviceRole( + name="Example Name", + slug="example-slug", + color="0000ff", + metadata={"source": "example"}, + ), + site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + status="active", + metadata={"source": "example"}, + ), + name="Example Name B", + type="1000base-t", + metadata={"source": "example"}, + ) + ) + ], ) @@ -57,7 +134,7 @@ def cable_extended() -> Cable: """Create a Cable with common optional fields.""" return Cable( metadata={"source": "example", "custom_key": "custom_value"}, - status="connected", + status="planned", description="Example description", color="0000ff", type="aoc", @@ -67,6 +144,76 @@ def cable_extended() -> Cable: length_unit="cm", comments="Example comments", profile="breakout-1c2p-2c1p", + a_terminations=[ + GenericObject( + object_interface=Interface( + device=Device( + device_type=DeviceType( + manufacturer=Manufacturer( + name="Example Name", + slug="example-slug", + metadata={"source": "example"}, + ), + model="Model X", + slug="example-slug", + metadata={"source": "example"}, + ), + role=DeviceRole( + name="Example Name", + slug="example-slug", + color="0000ff", + metadata={"source": "example"}, + ), + site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + status="active", + metadata={"source": "example"}, + ), + name="Example Name A", + type="1000base-t", + metadata={"source": "example"}, + ) + ) + ], + b_terminations=[ + GenericObject( + object_interface=Interface( + device=Device( + device_type=DeviceType( + manufacturer=Manufacturer( + name="Example Name", + slug="example-slug", + metadata={"source": "example"}, + ), + model="Model X", + slug="example-slug", + metadata={"source": "example"}, + ), + role=DeviceRole( + name="Example Name", + slug="example-slug", + color="0000ff", + metadata={"source": "example"}, + ), + site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + status="active", + metadata={"source": "example"}, + ), + name="Example Name B", + type="1000base-t", + metadata={"source": "example"}, + ) + ) + ], ) @@ -78,7 +225,7 @@ def cable_explicit() -> Cable: "custom_key": "custom_value", "collected_at": "2024-01-15T10:30:00Z", }, - status="connected", + status="planned", description="Example description", color="0000ff", comments="Example comments", @@ -96,6 +243,76 @@ def cable_explicit() -> Cable: metadata={"source": "example"}, ), bundle=CableBundle(name="Example Name", metadata={"source": "example"}), + a_terminations=[ + GenericObject( + object_interface=Interface( + device=Device( + device_type=DeviceType( + manufacturer=Manufacturer( + name="Example Name", + slug="example-slug", + metadata={"source": "example"}, + ), + model="Model X", + slug="example-slug", + metadata={"source": "example"}, + ), + role=DeviceRole( + name="Example Name", + slug="example-slug", + color="0000ff", + metadata={"source": "example"}, + ), + site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + status="active", + metadata={"source": "example"}, + ), + name="Example Name A", + type="1000base-t", + metadata={"source": "example"}, + ) + ) + ], + b_terminations=[ + GenericObject( + object_interface=Interface( + device=Device( + device_type=DeviceType( + manufacturer=Manufacturer( + name="Example Name", + slug="example-slug", + metadata={"source": "example"}, + ), + model="Model X", + slug="example-slug", + metadata={"source": "example"}, + ), + role=DeviceRole( + name="Example Name", + slug="example-slug", + color="0000ff", + metadata={"source": "example"}, + ), + site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + status="active", + metadata={"source": "example"}, + ), + name="Example Name B", + type="1000base-t", + metadata={"source": "example"}, + ) + ) + ], tags=[Tag(name="production")], ) diff --git a/docs/examples/cable_termination.py b/docs/examples/cable_termination.py index d0b44a0..63dfcb1 100644 --- a/docs/examples/cable_termination.py +++ b/docs/examples/cable_termination.py @@ -11,7 +11,25 @@ from netboxlabs.diode.sdk.ingester import ( Cable, CableTermination, + Circuit, + CircuitTermination, + CircuitType, + ConsolePort, + ConsoleServerPort, + Device, + DeviceRole, + DeviceType, Entity, + FrontPort, + Interface, + Manufacturer, + PowerFeed, + PowerOutlet, + PowerPanel, + PowerPort, + Provider, + RearPort, + Site, ) TARGET = "grpc://localhost:8080/diode" @@ -63,13 +81,53 @@ def cable_termination_extended() -> CableTermination: def cable_termination_explicit() -> CableTermination: """Create a CableTermination with fully nested objects and all common fields.""" return CableTermination( - cable=Cable(status="active", color="0000ff", metadata={"source": "example"}), + cable=Cable(status="planned", color="0000ff", metadata={"source": "example"}), cable_end="A", metadata={ "source": "example", "custom_key": "custom_value", "collected_at": "2024-01-15T10:30:00Z", }, + # Polymorphic 'termination' — choose ONE of these mutually exclusive variants: + termination_interface=Interface( + device=Device( + device_type=DeviceType( + manufacturer=Manufacturer( + name="Example Name", + slug="example-slug", + metadata={"source": "example"}, + ), + model="Model X", + slug="example-slug", + metadata={"source": "example"}, + ), + role=DeviceRole( + name="Example Name", + slug="example-slug", + color="0000ff", + metadata={"source": "example"}, + ), + site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + status="active", + metadata={"source": "example"}, + ), + name="Example Name", + type="1000base-t", + metadata={"source": "example"}, + ), + # termination_circuit_termination=CircuitTermination(circuit=Circuit(cid="CID-001", provider=Provider(name="Example Name", slug="example-slug", metadata={"source": "example"}), type=CircuitType(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), status="active", metadata={"source": "example"}), term_side="A", metadata={"source": "example"}), + # termination_console_port=ConsolePort(device=Device(device_type=DeviceType(manufacturer=Manufacturer(name="Example Name", slug="example-slug", metadata={"source": "example"}), model="Model X", slug="example-slug", metadata={"source": "example"}), role=DeviceRole(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), name="Example Name", metadata={"source": "example"}), + # termination_console_server_port=ConsoleServerPort(device=Device(device_type=DeviceType(manufacturer=Manufacturer(name="Example Name", slug="example-slug", metadata={"source": "example"}), model="Model X", slug="example-slug", metadata={"source": "example"}), role=DeviceRole(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), name="Example Name", metadata={"source": "example"}), + # termination_front_port=FrontPort(device=Device(device_type=DeviceType(manufacturer=Manufacturer(name="Example Name", slug="example-slug", metadata={"source": "example"}), model="Model X", slug="example-slug", metadata={"source": "example"}), role=DeviceRole(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), name="Example Name", type="110-punch", color="0000ff", rear_port=RearPort(device=Device(device_type=DeviceType(manufacturer=Manufacturer(name="Example Name", slug="example-slug", metadata={"source": "example"}), model="Model X", slug="example-slug", metadata={"source": "example"}), role=DeviceRole(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), name="Example Name", type="110-punch", color="0000ff", metadata={"source": "example"}), metadata={"source": "example"}), + # termination_power_feed=PowerFeed(power_panel=PowerPanel(site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), name="Example Name", metadata={"source": "example"}), name="Example Name", status="active", metadata={"source": "example"}), + # termination_power_outlet=PowerOutlet(device=Device(device_type=DeviceType(manufacturer=Manufacturer(name="Example Name", slug="example-slug", metadata={"source": "example"}), model="Model X", slug="example-slug", metadata={"source": "example"}), role=DeviceRole(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), name="Example Name", color="0000ff", status="disabled", metadata={"source": "example"}), + # termination_power_port=PowerPort(device=Device(device_type=DeviceType(manufacturer=Manufacturer(name="Example Name", slug="example-slug", metadata={"source": "example"}), model="Model X", slug="example-slug", metadata={"source": "example"}), role=DeviceRole(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), name="Example Name", metadata={"source": "example"}), + # termination_rear_port=RearPort(device=Device(device_type=DeviceType(manufacturer=Manufacturer(name="Example Name", slug="example-slug", metadata={"source": "example"}), model="Model X", slug="example-slug", metadata={"source": "example"}), role=DeviceRole(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), name="Example Name", type="110-punch", color="0000ff", metadata={"source": "example"}), ) diff --git a/docs/examples/circuit_group_assignment.py b/docs/examples/circuit_group_assignment.py index 3272774..40b7cef 100644 --- a/docs/examples/circuit_group_assignment.py +++ b/docs/examples/circuit_group_assignment.py @@ -9,10 +9,16 @@ from netboxlabs.diode.sdk import DiodeClient from netboxlabs.diode.sdk.ingester import ( + Circuit, CircuitGroup, CircuitGroupAssignment, + CircuitType, Entity, + Provider, + ProviderNetwork, Tag, + VirtualCircuit, + VirtualCircuitType, ) TARGET = "grpc://localhost:8080/diode" @@ -74,6 +80,22 @@ def circuit_group_assignment_explicit() -> CircuitGroupAssignment: "collected_at": "2024-01-15T10:30:00Z", }, priority="inactive", + # Polymorphic 'member' — choose ONE of these mutually exclusive variants: + member_circuit=Circuit( + cid="CID-001", + provider=Provider( + name="Example Name", slug="example-slug", metadata={"source": "example"} + ), + type=CircuitType( + name="Example Name", + slug="example-slug", + color="0000ff", + metadata={"source": "example"}, + ), + status="active", + metadata={"source": "example"}, + ), + # member_virtual_circuit=VirtualCircuit(cid="CID-001", provider_network=ProviderNetwork(provider=Provider(name="Example Name", slug="example-slug", metadata={"source": "example"}), name="Example Name", metadata={"source": "example"}), type=VirtualCircuitType(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), status="active", metadata={"source": "example"}), tags=[Tag(name="production")], ) diff --git a/docs/examples/circuit_termination.py b/docs/examples/circuit_termination.py index 7d655d6..0f719d9 100644 --- a/docs/examples/circuit_termination.py +++ b/docs/examples/circuit_termination.py @@ -13,7 +13,12 @@ CircuitTermination, CircuitType, Entity, + Location, Provider, + ProviderNetwork, + Region, + Site, + SiteGroup, Tag, ) @@ -100,6 +105,17 @@ def circuit_termination_explicit() -> CircuitTermination: xconnect_id="Example Xconnect Id", pp_info="Example Pp Info", mark_connected=True, + # Polymorphic 'termination' — choose ONE of these mutually exclusive variants: + termination_site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + # termination_location=Location(name="Example Name", slug="example-slug", site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), + # termination_provider_network=ProviderNetwork(provider=Provider(name="Example Name", slug="example-slug", metadata={"source": "example"}), name="Example Name", metadata={"source": "example"}), + # termination_region=Region(name="Example Name", slug="example-slug", metadata={"source": "example"}), + # termination_site_group=SiteGroup(name="Example Name", slug="example-slug", metadata={"source": "example"}), tags=[Tag(name="production")], ) diff --git a/docs/examples/cluster.py b/docs/examples/cluster.py index 777c294..3e9d819 100644 --- a/docs/examples/cluster.py +++ b/docs/examples/cluster.py @@ -13,8 +13,12 @@ ClusterGroup, ClusterType, Entity, + Location, Owner, OwnerGroup, + Region, + Site, + SiteGroup, Tag, Tenant, ) @@ -95,6 +99,16 @@ def cluster_explicit() -> Cluster: group=OwnerGroup(name="Example Name", metadata={"source": "example"}), metadata={"source": "example"}, ), + # Polymorphic 'scope' — choose ONE of these mutually exclusive variants: + scope_site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + # scope_location=Location(name="Example Name", slug="example-slug", site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), + # scope_region=Region(name="Example Name", slug="example-slug", metadata={"source": "example"}), + # scope_site_group=SiteGroup(name="Example Name", slug="example-slug", metadata={"source": "example"}), tags=[Tag(name="production")], ) diff --git a/docs/examples/console_port.py b/docs/examples/console_port.py index a0d0b68..0901cf9 100644 --- a/docs/examples/console_port.py +++ b/docs/examples/console_port.py @@ -70,7 +70,7 @@ def console_port_extended() -> ConsolePort: description="Example description", label="Example Label", type="db-25", - speed=1, + speed=1200, mark_connected=True, ) @@ -113,7 +113,7 @@ def console_port_explicit() -> ConsolePort: description="Example description", label="Example Label", type="db-25", - speed=1, + speed=1200, mark_connected=True, module=Module( device=Device( diff --git a/docs/examples/console_server_port.py b/docs/examples/console_server_port.py index dda1700..053d8a4 100644 --- a/docs/examples/console_server_port.py +++ b/docs/examples/console_server_port.py @@ -72,7 +72,7 @@ def console_server_port_extended() -> ConsoleServerPort: description="Example description", label="Example Label", type="db-25", - speed=1, + speed=1200, mark_connected=True, ) @@ -115,7 +115,7 @@ def console_server_port_explicit() -> ConsoleServerPort: description="Example description", label="Example Label", type="db-25", - speed=1, + speed=1200, mark_connected=True, module=Module( device=Device( diff --git a/docs/examples/fhrp_group_assignment.py b/docs/examples/fhrp_group_assignment.py index 4c60662..05b8276 100644 --- a/docs/examples/fhrp_group_assignment.py +++ b/docs/examples/fhrp_group_assignment.py @@ -65,9 +65,7 @@ def fhrp_group_assignment_extended() -> FHRPGroupAssignment: def fhrp_group_assignment_explicit() -> FHRPGroupAssignment: """Create a FHRPGroupAssignment with fully nested objects and all common fields.""" return FHRPGroupAssignment( - group=FHRPGroup( - protocol="Example Protocol", group_id=1, metadata={"source": "example"} - ), + group=FHRPGroup(protocol="carp", group_id=1, metadata={"source": "example"}), priority=1, metadata={ "source": "example", diff --git a/docs/examples/front_port.py b/docs/examples/front_port.py index 37fe25d..675482f 100644 --- a/docs/examples/front_port.py +++ b/docs/examples/front_port.py @@ -140,7 +140,7 @@ def front_port_explicit() -> FrontPort: metadata={"source": "example"}, ), name="Example Name", - type="Example Type", + type="110-punch", color="0000ff", metadata={"source": "example"}, ), diff --git a/docs/examples/interface_example.py b/docs/examples/interface_example.py index c07d258..60eba36 100644 --- a/docs/examples/interface_example.py +++ b/docs/examples/interface_example.py @@ -61,7 +61,7 @@ def interface_example_minimal() -> Interface: return Interface( device="Example Device", # flat string -> Device name="Example Name", - type="1.6tbase-cr8", + type="1000base-t", metadata={"source": "example"}, ) @@ -71,7 +71,7 @@ def interface_example_extended() -> Interface: return Interface( device="Example Device", name="Example Name", - type="1.6tbase-cr8", + type="1000base-t", metadata={"source": "example", "custom_key": "custom_value"}, description="Example description", label="Example Label", @@ -84,8 +84,8 @@ def interface_example_extended() -> Interface: mode="access", rf_role="ap", rf_channel="2.4g-1-2412-22", - poe_mode="pd", - poe_type="passive-24v-2pair", + poe_mode="pse", + poe_type="type1-ieee802.3af", rf_channel_frequency=1.0, rf_channel_width=1.0, tx_power=1, @@ -123,7 +123,7 @@ def interface_example_explicit() -> Interface: metadata={"source": "example"}, ), name="Example Name", - type="1.6tbase-cr8", + type="1000base-t", metadata={ "source": "example", "custom_key": "custom_value", @@ -140,8 +140,8 @@ def interface_example_explicit() -> Interface: mode="access", rf_role="ap", rf_channel="2.4g-1-2412-22", - poe_mode="pd", - poe_type="passive-24v-2pair", + poe_mode="pse", + poe_type="type1-ieee802.3af", rf_channel_frequency=1.0, rf_channel_width=1.0, tx_power=1, @@ -243,7 +243,7 @@ def interface_example_explicit() -> Interface: metadata={"source": "example"}, ), name="Example Name", - type="Example Type", + type="1000base-t", metadata={"source": "example"}, ), bridge=Interface( @@ -274,7 +274,7 @@ def interface_example_explicit() -> Interface: metadata={"source": "example"}, ), name="Example Name", - type="Example Type", + type="1000base-t", metadata={"source": "example"}, ), lag=Interface( @@ -305,7 +305,7 @@ def interface_example_explicit() -> Interface: metadata={"source": "example"}, ), name="Example Name", - type="Example Type", + type="1000base-t", metadata={"source": "example"}, ), primary_mac_address=MACAddress( diff --git a/docs/examples/inventory_item.py b/docs/examples/inventory_item.py index 56ce544..1aafbf0 100644 --- a/docs/examples/inventory_item.py +++ b/docs/examples/inventory_item.py @@ -9,15 +9,22 @@ from netboxlabs.diode.sdk import DiodeClient from netboxlabs.diode.sdk.ingester import ( + ConsolePort, + ConsoleServerPort, Device, DeviceRole, DeviceType, Entity, + FrontPort, + Interface, InventoryItem, InventoryItemRole, Manufacturer, Owner, OwnerGroup, + PowerOutlet, + PowerPort, + RearPort, Site, Tag, ) @@ -164,6 +171,44 @@ def inventory_item_explicit() -> InventoryItem: group=OwnerGroup(name="Example Name", metadata={"source": "example"}), metadata={"source": "example"}, ), + # Polymorphic 'component' — choose ONE of these mutually exclusive variants: + component_interface=Interface( + device=Device( + device_type=DeviceType( + manufacturer=Manufacturer( + name="Example Name", + slug="example-slug", + metadata={"source": "example"}, + ), + model="Model X", + slug="example-slug", + metadata={"source": "example"}, + ), + role=DeviceRole( + name="Example Name", + slug="example-slug", + color="0000ff", + metadata={"source": "example"}, + ), + site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + status="active", + metadata={"source": "example"}, + ), + name="Example Name", + type="1000base-t", + metadata={"source": "example"}, + ), + # component_console_port=ConsolePort(device=Device(device_type=DeviceType(manufacturer=Manufacturer(name="Example Name", slug="example-slug", metadata={"source": "example"}), model="Model X", slug="example-slug", metadata={"source": "example"}), role=DeviceRole(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), name="Example Name", metadata={"source": "example"}), + # component_console_server_port=ConsoleServerPort(device=Device(device_type=DeviceType(manufacturer=Manufacturer(name="Example Name", slug="example-slug", metadata={"source": "example"}), model="Model X", slug="example-slug", metadata={"source": "example"}), role=DeviceRole(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), name="Example Name", metadata={"source": "example"}), + # component_front_port=FrontPort(device=Device(device_type=DeviceType(manufacturer=Manufacturer(name="Example Name", slug="example-slug", metadata={"source": "example"}), model="Model X", slug="example-slug", metadata={"source": "example"}), role=DeviceRole(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), name="Example Name", type="110-punch", color="0000ff", rear_port=RearPort(device=Device(device_type=DeviceType(manufacturer=Manufacturer(name="Example Name", slug="example-slug", metadata={"source": "example"}), model="Model X", slug="example-slug", metadata={"source": "example"}), role=DeviceRole(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), name="Example Name", type="110-punch", color="0000ff", metadata={"source": "example"}), metadata={"source": "example"}), + # component_power_outlet=PowerOutlet(device=Device(device_type=DeviceType(manufacturer=Manufacturer(name="Example Name", slug="example-slug", metadata={"source": "example"}), model="Model X", slug="example-slug", metadata={"source": "example"}), role=DeviceRole(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), name="Example Name", color="0000ff", status="disabled", metadata={"source": "example"}), + # component_power_port=PowerPort(device=Device(device_type=DeviceType(manufacturer=Manufacturer(name="Example Name", slug="example-slug", metadata={"source": "example"}), model="Model X", slug="example-slug", metadata={"source": "example"}), role=DeviceRole(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), name="Example Name", metadata={"source": "example"}), + # component_rear_port=RearPort(device=Device(device_type=DeviceType(manufacturer=Manufacturer(name="Example Name", slug="example-slug", metadata={"source": "example"}), model="Model X", slug="example-slug", metadata={"source": "example"}), role=DeviceRole(name="Example Name", slug="example-slug", color="0000ff", metadata={"source": "example"}), site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), name="Example Name", type="110-punch", color="0000ff", metadata={"source": "example"}), tags=[Tag(name="production")], ) diff --git a/docs/examples/ip_address.py b/docs/examples/ip_address.py index 7b61aba..89fa49c 100644 --- a/docs/examples/ip_address.py +++ b/docs/examples/ip_address.py @@ -9,13 +9,22 @@ from netboxlabs.diode.sdk import DiodeClient from netboxlabs.diode.sdk.ingester import ( + Device, + DeviceRole, + DeviceType, Entity, + FHRPGroup, IPAddress, + Interface, + Manufacturer, Owner, OwnerGroup, + Site, Tag, Tenant, + VMInterface, VRF, + VirtualMachine, ) TARGET = "grpc://localhost:8080/diode" @@ -63,7 +72,7 @@ def ip_address_extended() -> IPAddress: description="Example description", tenant="Example Tenant", role="anycast", - dns_name="Example Dns Name", + dns_name="example.host.local", comments="Example comments", ) @@ -81,7 +90,7 @@ def ip_address_explicit() -> IPAddress: description="Example description", comments="Example comments", role="anycast", - dns_name="Example Dns Name", + dns_name="example.host.local", vrf=VRF(name="Example Name", metadata={"source": "example"}), tenant=Tenant( name="Example Name", slug="example-slug", metadata={"source": "example"} @@ -94,6 +103,40 @@ def ip_address_explicit() -> IPAddress: group=OwnerGroup(name="Example Name", metadata={"source": "example"}), metadata={"source": "example"}, ), + # Polymorphic 'assigned_object' — choose ONE of these mutually exclusive variants: + assigned_object_interface=Interface( + device=Device( + device_type=DeviceType( + manufacturer=Manufacturer( + name="Example Name", + slug="example-slug", + metadata={"source": "example"}, + ), + model="Model X", + slug="example-slug", + metadata={"source": "example"}, + ), + role=DeviceRole( + name="Example Name", + slug="example-slug", + color="0000ff", + metadata={"source": "example"}, + ), + site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + status="active", + metadata={"source": "example"}, + ), + name="Example Name", + type="1000base-t", + metadata={"source": "example"}, + ), + # assigned_object_vm_interface=VMInterface(virtual_machine=VirtualMachine(name="Example Name", status="active", metadata={"source": "example"}), name="Example Name", metadata={"source": "example"}), + # assigned_object_fhrp_group=FHRPGroup(protocol="carp", group_id=1, metadata={"source": "example"}), tags=[Tag(name="production")], ) diff --git a/docs/examples/mac_address.py b/docs/examples/mac_address.py index ea08a07..0a72564 100644 --- a/docs/examples/mac_address.py +++ b/docs/examples/mac_address.py @@ -9,11 +9,19 @@ from netboxlabs.diode.sdk import DiodeClient from netboxlabs.diode.sdk.ingester import ( + Device, + DeviceRole, + DeviceType, Entity, + Interface, MACAddress, + Manufacturer, Owner, OwnerGroup, + Site, Tag, + VMInterface, + VirtualMachine, ) TARGET = "grpc://localhost:8080/diode" @@ -78,6 +86,39 @@ def mac_address_explicit() -> MACAddress: group=OwnerGroup(name="Example Name", metadata={"source": "example"}), metadata={"source": "example"}, ), + # Polymorphic 'assigned_object' — choose ONE of these mutually exclusive variants: + assigned_object_interface=Interface( + device=Device( + device_type=DeviceType( + manufacturer=Manufacturer( + name="Example Name", + slug="example-slug", + metadata={"source": "example"}, + ), + model="Model X", + slug="example-slug", + metadata={"source": "example"}, + ), + role=DeviceRole( + name="Example Name", + slug="example-slug", + color="0000ff", + metadata={"source": "example"}, + ), + site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + status="active", + metadata={"source": "example"}, + ), + name="Example Name", + type="1000base-t", + metadata={"source": "example"}, + ), + # assigned_object_vm_interface=VMInterface(virtual_machine=VirtualMachine(name="Example Name", status="active", metadata={"source": "example"}), name="Example Name", metadata={"source": "example"}), tags=[Tag(name="production")], ) diff --git a/docs/examples/prefix.py b/docs/examples/prefix.py index 0898a58..889a0b1 100644 --- a/docs/examples/prefix.py +++ b/docs/examples/prefix.py @@ -10,10 +10,14 @@ from netboxlabs.diode.sdk import DiodeClient from netboxlabs.diode.sdk.ingester import ( Entity, + Location, Owner, OwnerGroup, Prefix, + Region, Role, + Site, + SiteGroup, Tag, Tenant, VLAN, @@ -100,6 +104,16 @@ def prefix_explicit() -> Prefix: group=OwnerGroup(name="Example Name", metadata={"source": "example"}), metadata={"source": "example"}, ), + # Polymorphic 'scope' — choose ONE of these mutually exclusive variants: + scope_site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + # scope_location=Location(name="Example Name", slug="example-slug", site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), + # scope_region=Region(name="Example Name", slug="example-slug", metadata={"source": "example"}), + # scope_site_group=SiteGroup(name="Example Name", slug="example-slug", metadata={"source": "example"}), tags=[Tag(name="production")], ) diff --git a/docs/examples/rack.py b/docs/examples/rack.py index 077b8e9..e4df201 100644 --- a/docs/examples/rack.py +++ b/docs/examples/rack.py @@ -75,7 +75,7 @@ def rack_extended() -> Rack: role="Example Role", asset_tag="ASSET-001", form_factor="2-post-frame", - width=1, + width=10, u_height=1, starting_unit=1, weight=1.0, @@ -114,7 +114,7 @@ def rack_explicit() -> Rack: asset_tag="ASSET-001", facility_id="Example Facility Id", form_factor="2-post-frame", - width=1, + width=10, u_height=1, starting_unit=1, weight=1.0, diff --git a/docs/examples/rack_type.py b/docs/examples/rack_type.py index ee4f3f4..5ae26f6 100644 --- a/docs/examples/rack_type.py +++ b/docs/examples/rack_type.py @@ -64,7 +64,7 @@ def rack_type_extended() -> RackType: metadata={"source": "example", "custom_key": "custom_value"}, description="Example description", form_factor="2-post-frame", - width=1, + width=10, u_height=1, starting_unit=1, desc_units=True, @@ -96,7 +96,7 @@ def rack_type_explicit() -> RackType: description="Example description", comments="Example comments", form_factor="2-post-frame", - width=1, + width=10, u_height=1, starting_unit=1, desc_units=True, diff --git a/docs/examples/service.py b/docs/examples/service.py index 2b00f73..b6e21b4 100644 --- a/docs/examples/service.py +++ b/docs/examples/service.py @@ -13,6 +13,7 @@ DeviceRole, DeviceType, Entity, + FHRPGroup, Manufacturer, Owner, OwnerGroup, @@ -116,6 +117,35 @@ def service_explicit() -> Service: group=OwnerGroup(name="Example Name", metadata={"source": "example"}), metadata={"source": "example"}, ), + # Polymorphic 'parent_object' — choose ONE of these mutually exclusive variants: + parent_object_device=Device( + device_type=DeviceType( + manufacturer=Manufacturer( + name="Example Name", + slug="example-slug", + metadata={"source": "example"}, + ), + model="Model X", + slug="example-slug", + metadata={"source": "example"}, + ), + role=DeviceRole( + name="Example Name", + slug="example-slug", + color="0000ff", + metadata={"source": "example"}, + ), + site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + status="active", + metadata={"source": "example"}, + ), + # parent_object_fhrp_group=FHRPGroup(protocol="carp", group_id=1, metadata={"source": "example"}), + # parent_object_virtual_machine=VirtualMachine(name="Example Name", status="active", metadata={"source": "example"}), tags=[Tag(name="production")], ) diff --git a/docs/examples/tunnel.py b/docs/examples/tunnel.py index 44a9512..0cb2371 100644 --- a/docs/examples/tunnel.py +++ b/docs/examples/tunnel.py @@ -92,7 +92,7 @@ def tunnel_explicit() -> Tunnel: ), ipsec_profile=IPSecProfile( name="Example Name", - mode="Example Mode", + mode="ah", ike_policy=IKEPolicy( name="Example Name", version=1, metadata={"source": "example"} ), diff --git a/docs/examples/tunnel_termination.py b/docs/examples/tunnel_termination.py index e34ade2..2293571 100644 --- a/docs/examples/tunnel_termination.py +++ b/docs/examples/tunnel_termination.py @@ -70,7 +70,7 @@ def tunnel_termination_explicit() -> TunnelTermination: tunnel=Tunnel( name="Example Name", status="active", - encapsulation="Example Encapsulation", + encapsulation="gre", metadata={"source": "example"}, ), role="hub", diff --git a/docs/examples/virtual_circuit_termination.py b/docs/examples/virtual_circuit_termination.py index 907794b..802395c 100644 --- a/docs/examples/virtual_circuit_termination.py +++ b/docs/examples/virtual_circuit_termination.py @@ -125,7 +125,7 @@ def virtual_circuit_termination_explicit() -> VirtualCircuitTermination: metadata={"source": "example"}, ), name="Example Name", - type="Example Type", + type="1000base-t", metadata={"source": "example"}, ), metadata={ diff --git a/docs/examples/vlan_group.py b/docs/examples/vlan_group.py index 2c75c61..253ac5f 100644 --- a/docs/examples/vlan_group.py +++ b/docs/examples/vlan_group.py @@ -9,9 +9,18 @@ from netboxlabs.diode.sdk import DiodeClient from netboxlabs.diode.sdk.ingester import ( + Cluster, + ClusterGroup, + ClusterType, Entity, + Location, Owner, OwnerGroup, + Rack, + RackGroup, + Region, + Site, + SiteGroup, Tag, Tenant, VLANGroup, @@ -86,6 +95,20 @@ def vlan_group_explicit() -> VLANGroup: group=OwnerGroup(name="Example Name", metadata={"source": "example"}), metadata={"source": "example"}, ), + # Polymorphic 'scope' — choose ONE of these mutually exclusive variants: + scope_site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + # scope_cluster=Cluster(name="Example Name", type=ClusterType(name="Example Name", slug="example-slug", metadata={"source": "example"}), status="active", metadata={"source": "example"}), + # scope_cluster_group=ClusterGroup(name="Example Name", slug="example-slug", metadata={"source": "example"}), + # scope_location=Location(name="Example Name", slug="example-slug", site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), + # scope_rack=Rack(name="Example Name", site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), + # scope_region=Region(name="Example Name", slug="example-slug", metadata={"source": "example"}), + # scope_site_group=SiteGroup(name="Example Name", slug="example-slug", metadata={"source": "example"}), + # scope_rack_group=RackGroup(name="Example Name", slug="example-slug", metadata={"source": "example"}), tags=[Tag(name="production")], ) diff --git a/docs/examples/wireless_lan.py b/docs/examples/wireless_lan.py index 0e21827..4c5cf13 100644 --- a/docs/examples/wireless_lan.py +++ b/docs/examples/wireless_lan.py @@ -10,8 +10,12 @@ from netboxlabs.diode.sdk import DiodeClient from netboxlabs.diode.sdk.ingester import ( Entity, + Location, Owner, OwnerGroup, + Region, + Site, + SiteGroup, Tag, Tenant, VLAN, @@ -99,6 +103,16 @@ def wireless_lan_explicit() -> WirelessLAN: group=OwnerGroup(name="Example Name", metadata={"source": "example"}), metadata={"source": "example"}, ), + # Polymorphic 'scope' — choose ONE of these mutually exclusive variants: + scope_site=Site( + name="Example Name", + slug="example-slug", + status="active", + metadata={"source": "example"}, + ), + # scope_location=Location(name="Example Name", slug="example-slug", site=Site(name="Example Name", slug="example-slug", status="active", metadata={"source": "example"}), status="active", metadata={"source": "example"}), + # scope_region=Region(name="Example Name", slug="example-slug", metadata={"source": "example"}), + # scope_site_group=SiteGroup(name="Example Name", slug="example-slug", metadata={"source": "example"}), tags=[Tag(name="production")], ) diff --git a/docs/examples/wireless_link.py b/docs/examples/wireless_link.py index a22335e..21f7e31 100644 --- a/docs/examples/wireless_link.py +++ b/docs/examples/wireless_link.py @@ -66,7 +66,7 @@ def wireless_link_extended() -> WirelessLink: interface_a="Example Interface A", interface_b="Example Interface B", metadata={"source": "example", "custom_key": "custom_value"}, - status="connected", + status="planned", description="Example description", ssid="ExampleSSID", tenant="Example Tenant", @@ -110,7 +110,7 @@ def wireless_link_explicit() -> WirelessLink: metadata={"source": "example"}, ), name="Example Name", - type="Example Type", + type="1000base-t", metadata={"source": "example"}, ), interface_b=Interface( @@ -141,7 +141,7 @@ def wireless_link_explicit() -> WirelessLink: metadata={"source": "example"}, ), name="Example Name", - type="Example Type", + type="1000base-t", metadata={"source": "example"}, ), metadata={ @@ -149,7 +149,7 @@ def wireless_link_explicit() -> WirelessLink: "custom_key": "custom_value", "collected_at": "2024-01-15T10:30:00Z", }, - status="connected", + status="planned", description="Example description", comments="Example comments", ssid="ExampleSSID",