modified: netbox_dns_bridge/models.py deleted: netbox_dns_bridge/migrations/0003_catalogzone_and_per_zone_identifier.py new file: netbox_dns_bridge/migrations/0003_full_netbox_models.py Adjust model access and function calls to match new models: modified: netbox_dns_bridge/signals/netbox_dns_zones.py modified: netbox_dns_bridge/management/commands/dns_transfer_endpoint/catalog_zone_manager.py modified: netbox_dns_bridge/management/commands/dns_transfer_endpoint/request_handler.py Update UI elements and permission interactions: modified: netbox_dns_bridge/filtersets.py modified: netbox_dns_bridge/forms.py modified: netbox_dns_bridge/jobs/notify.py modified: netbox_dns_bridge/navigation.py modified: netbox_dns_bridge/tables.py deleted: netbox_dns_bridge/templates/netbox_dns_bridge/catalog_zone_members.html new file: netbox_dns_bridge/templates/netbox_dns_bridge/catalogzone.html new file: netbox_dns_bridge/templates/netbox_dns_bridge/catalogzonemember.html deleted: netbox_dns_bridge/templates/netbox_dns_bridge/notify_overview.html new file: netbox_dns_bridge/templates/netbox_dns_bridge/seentransferclient.html modified: netbox_dns_bridge/urls.py modified: netbox_dns_bridge/views.py AI/LLM updated tests (Not verified): modified: netbox_dns_bridge/tests/conftest.py modified: netbox_dns_bridge/tests/test_catalog_zone_manager.py modified: netbox_dns_bridge/tests/test_models.py modified: netbox_dns_bridge/tests/test_notify.py modified: netbox_dns_bridge/tests/test_request_handler_integration.py modified: netbox_dns_bridge/tests/test_signals.py modified: netbox_dns_bridge/tests/test_smoke.py modified: netbox_dns_bridge/tests/test_views.py
83 lines
2.2 KiB
Python
83 lines
2.2 KiB
Python
from django.db import models
|
|
|
|
# import netbox.models
|
|
import netbox_dns.models
|
|
from netbox.models import NetBoxModel
|
|
|
|
|
|
class CatalogZone(NetBoxModel):
|
|
view = models.OneToOneField(
|
|
to=netbox_dns.models.View,
|
|
on_delete=models.CASCADE,
|
|
related_name="catalog_zone",
|
|
)
|
|
soa_serial = models.IntegerField(default=1)
|
|
soa_refresh = models.IntegerField(default=60)
|
|
soa_retry = models.IntegerField(default=10)
|
|
soa_expire = models.IntegerField(default=1209600)
|
|
soa_minimum = models.IntegerField(default=0)
|
|
|
|
class Meta:
|
|
ordering = ("view__name",)
|
|
verbose_name = "Catalog Zone"
|
|
verbose_name_plural = "Catalog Zones"
|
|
|
|
def __str__(self):
|
|
return f"{self.view.name}: {self.soa_serial}"
|
|
|
|
|
|
class CatalogZoneMember(NetBoxModel):
|
|
name = models.CharField(
|
|
max_length=26,
|
|
)
|
|
|
|
zone = models.OneToOneField(
|
|
to=netbox_dns.models.Zone,
|
|
on_delete=models.CASCADE,
|
|
related_name="catalog_zone_member",
|
|
)
|
|
|
|
catalog_zone = models.ForeignKey(
|
|
to=CatalogZone,
|
|
on_delete=models.CASCADE,
|
|
related_name="members",
|
|
)
|
|
|
|
class Meta:
|
|
ordering = ("name",)
|
|
verbose_name = "Catalog Zone Member"
|
|
verbose_name_plural = "Catalog Zone Members"
|
|
constraints = [
|
|
models.UniqueConstraint(
|
|
fields=["name", "catalog_zone"],
|
|
name="unique_name_per_catalog_zone",
|
|
),
|
|
]
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
|
|
class SeenTransferClient(NetBoxModel):
|
|
source_ip = models.GenericIPAddressField()
|
|
last_seen = models.DateTimeField()
|
|
view = models.ForeignKey(
|
|
to=netbox_dns.models.View,
|
|
on_delete=models.PROTECT,
|
|
related_name="seen_transfer_clients",
|
|
)
|
|
|
|
def __str__(self):
|
|
return f"{self.source_ip} ({self.view.name})"
|
|
|
|
class Meta:
|
|
ordering = ("source_ip",)
|
|
verbose_name = "Seen Transfer Client"
|
|
verbose_name_plural = "Seen Transfer Clients"
|
|
constraints = [
|
|
models.UniqueConstraint(
|
|
fields=["source_ip", "view"],
|
|
name="unique_ip_view_seen_client",
|
|
),
|
|
]
|