- Start- und Endadressen als netaddr-Objekte übergeben - Fehler einzelner IP-Adressen beim Abgleich protokollieren - IP-Netzübersicht direkt im IPAM-Menü registrieren - Plugin-Version auf 1.2.1 erhöhen
28 lines
1.2 KiB
Python
28 lines
1.2 KiB
Python
from django.core.management.base import BaseCommand
|
|
from ipam.models import IPAddress
|
|
|
|
from netbox_better_ips.services import ensure_range_for_ip
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Create missing usable-host IP ranges for existing IP addresses"
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument("--dry-run", action="store_true")
|
|
|
|
def handle(self, *args, **options):
|
|
created = skipped = failed = 0
|
|
for address in IPAddress.objects.select_related("tenant", "assigned_object_type").iterator():
|
|
try:
|
|
ip_range, was_created = ensure_range_for_ip(address)
|
|
if options["dry_run"] and was_created:
|
|
ip_range.delete()
|
|
created += int(was_created)
|
|
skipped += int(ip_range is None)
|
|
except Exception as exc:
|
|
failed += 1
|
|
self.stderr.write(f"Fehler bei {address}: {exc}")
|
|
verb = "würden erstellt" if options["dry_run"] else "erstellt"
|
|
message = f"{created} IP-Bereiche {verb}; {skipped} Hostmasken ignoriert; {failed} Fehler."
|
|
self.stdout.write(self.style.SUCCESS(message) if not failed else self.style.WARNING(message))
|