Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ jobs:
"version": "1.0.0",
"devDependencies": {
"semantic-release-export-data": "^1.0.1",
"semantic-release": "25.0.0-beta.6",
"@semantic-release/changelog": "^6.0.3"
}
}
Expand Down Expand Up @@ -99,7 +100,7 @@ jobs:
]
}
- name: setup semantic-release
run: npm i
run: npm install --legacy-peer-deps
- name: release dry-run
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_SEMANTIC_RELEASE_WEBHOOK }}
Expand Down Expand Up @@ -193,6 +194,7 @@ jobs:
"version": "1.0.0",
"devDependencies": {
"semantic-release-export-data": "^1.0.1",
"semantic-release": "25.0.0-beta.6",
"@semantic-release/changelog": "^6.0.3"
}
}
Expand Down Expand Up @@ -238,7 +240,7 @@ jobs:
]
}
- name: setup semantic-release
run: npm i
run: npm install --legacy-peer-deps
- name: Release
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_OBSERVABILITY_RELEASE_WEBHOOK }}
Expand Down
248 changes: 125 additions & 123 deletions netboxlabs/diode/sdk/diode/v1/ingester_pb2.py

Large diffs are not rendered by default.

20 changes: 13 additions & 7 deletions netboxlabs/diode/sdk/diode/v1/ingester_pb2.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -2563,7 +2563,7 @@ class ModuleType(_message.Message):
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: ...

class Platform(_message.Message):
__slots__ = ("name", "slug", "manufacturer", "description", "tags", "custom_fields")
__slots__ = ("name", "slug", "manufacturer", "description", "tags", "custom_fields", "parent", "comments")
class CustomFieldsEntry(_message.Message):
__slots__ = ("key", "value")
KEY_FIELD_NUMBER: _ClassVar[int]
Expand All @@ -2577,13 +2577,17 @@ class Platform(_message.Message):
DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
TAGS_FIELD_NUMBER: _ClassVar[int]
CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int]
PARENT_FIELD_NUMBER: _ClassVar[int]
COMMENTS_FIELD_NUMBER: _ClassVar[int]
name: str
slug: str
manufacturer: Manufacturer
description: str
tags: _containers.RepeatedCompositeFieldContainer[Tag]
custom_fields: _containers.MessageMap[str, CustomFieldValue]
def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ...
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: ...

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")
Expand Down Expand Up @@ -2934,7 +2938,7 @@ class Rack(_message.Message):
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: ...

class RackReservation(_message.Message):
__slots__ = ("rack", "units", "tenant", "description", "comments", "tags", "custom_fields")
__slots__ = ("rack", "units", "tenant", "description", "comments", "tags", "custom_fields", "status")
class CustomFieldsEntry(_message.Message):
__slots__ = ("key", "value")
KEY_FIELD_NUMBER: _ClassVar[int]
Expand All @@ -2949,14 +2953,16 @@ class RackReservation(_message.Message):
COMMENTS_FIELD_NUMBER: _ClassVar[int]
TAGS_FIELD_NUMBER: _ClassVar[int]
CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int]
STATUS_FIELD_NUMBER: _ClassVar[int]
rack: Rack
units: _containers.RepeatedScalarFieldContainer[int]
tenant: Tenant
description: str
comments: str
tags: _containers.RepeatedCompositeFieldContainer[Tag]
custom_fields: _containers.MessageMap[str, CustomFieldValue]
def __init__(self, rack: _Optional[_Union[Rack, _Mapping]] = ..., units: _Optional[_Iterable[int]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ...
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: ...

class RackRole(_message.Message):
__slots__ = ("name", "slug", "color", "description", "tags", "custom_fields")
Expand Down Expand Up @@ -4092,13 +4098,13 @@ class CustomField(_message.Message):
default: str
related_object_filter: str
weight: int
validation_minimum: int
validation_maximum: int
validation_minimum: float
validation_maximum: float
validation_regex: str
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[int] = ..., validation_maximum: _Optional[int] = ..., validation_regex: _Optional[str] = ..., choice_set: _Optional[_Union[CustomFieldChoiceSet, _Mapping]] = ..., comments: _Optional[str] = ..., object_types: _Optional[_Iterable[str]] = ...) -> None: ...
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: ...

class CustomFieldChoiceSet(_message.Message):
__slots__ = ("name", "description", "base_choices", "order_alphabetically", "extra_choices")
Expand Down
13 changes: 10 additions & 3 deletions netboxlabs/diode/sdk/ingester.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@

#
# Generated code. DO NOT EDIT.
# Timestamp: 2025-07-23 01:46:43Z
# Timestamp: 2025-10-02 12:39:10Z
#
# ruff: noqa: C901

from __future__ import annotations

import datetime
import re
from typing import Any
from google.protobuf import timestamp_pb2 as _timestamp_pb2
import netboxlabs.diode.sdk.diode.v1.ingester_pb2 as pb

Check failure on line 15 in netboxlabs/diode/sdk/ingester.py

View workflow job for this annotation

GitHub Actions / tests (3.10)

Ruff (I001)

netboxlabs/diode/sdk/ingester.py:9:1: I001 Import block is un-sorted or un-formatted

Check failure on line 15 in netboxlabs/diode/sdk/ingester.py

View workflow job for this annotation

GitHub Actions / tests (3.11)

Ruff (I001)

netboxlabs/diode/sdk/ingester.py:9:1: I001 Import block is un-sorted or un-formatted

PRIMARY_VALUE_MAP = {
'ASN': 'asn',
Expand Down Expand Up @@ -3270,7 +3270,7 @@
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)

Check failure on line 3273 in netboxlabs/diode/sdk/ingester.py

View workflow job for this annotation

GitHub Actions / tests (3.10)

Ruff (E501)

netboxlabs/diode/sdk/ingester.py:3273:141: E501 Line too long (148 > 140)

Check failure on line 3273 in netboxlabs/diode/sdk/ingester.py

View workflow job for this annotation

GitHub Actions / tests (3.11)

Ruff (E501)

netboxlabs/diode/sdk/ingester.py:3273:141: E501 Line too long (148 > 140)
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)
Expand Down Expand Up @@ -3591,18 +3591,23 @@
description: str | None = None,
tags: list[str | Tag | pb.Tag] | None = None,
custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None,
parent: str | Platform | pb.Platform | None = None,
comments: str | 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(
name=name,
slug=slug,
manufacturer=manufacturer,
description=description,
tags=tags,
custom_fields=custom_fields,
parent=parent,
comments=comments,
)


Expand Down Expand Up @@ -4013,6 +4018,7 @@
comments: str | None = None,
tags: list[str | Tag | pb.Tag] | None = None,
custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None,
status: str | None = None,
) -> pb.RackReservation:
"""Create a new RackReservation."""
rack = convert_to_protobuf(rack, pb.Rack)
Expand All @@ -4027,6 +4033,7 @@
comments=comments,
tags=tags,
custom_fields=custom_fields,
status=status,
)


Expand Down Expand Up @@ -5408,8 +5415,8 @@
default: str | None = None,
related_object_filter: str | None = None,
weight: int | None = None,
validation_minimum: int | None = None,
validation_maximum: int | None = None,
validation_minimum: float | None = None,
validation_maximum: float | None = None,
validation_regex: str | None = None,
choice_set: str | CustomFieldChoiceSet | pb.CustomFieldChoiceSet | None = None,
comments: str | None = None,
Expand Down Expand Up @@ -5652,7 +5659,7 @@
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)

Check failure on line 5662 in netboxlabs/diode/sdk/ingester.py

View workflow job for this annotation

GitHub Actions / tests (3.10)

Ruff (E501)

netboxlabs/diode/sdk/ingester.py:5662:141: E501 Line too long (148 > 140)

Check failure on line 5662 in netboxlabs/diode/sdk/ingester.py

View workflow job for this annotation

GitHub Actions / tests (3.11)

Ruff (E501)

netboxlabs/diode/sdk/ingester.py:5662:141: E501 Line too long (148 > 140)
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)
Expand Down
Loading