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))