Fix paths after restructuring renamed: netbox_dns_bridge/management/commands/export-dns-zone.py -> netbox_dns_bridge/management/commands/dns-export-zone.py renamed: netbox_dns_bridge/management/commands/export-all-dns-zones.py -> netbox_dns_bridge/management/commands/dns-export-zones.py Unify command naming scheme new file: netbox_dns_bridge/migrations/0001_initial.py Adds the missing migration. Since the plugin was renamed this is also an opportunity to merge all changes into a single migration. renamed: netbox_dns_bridge/service/transfer/catalog_zone_manager.py -> netbox_dns_bridge/catalog_zone_manager.py renamed: netbox_dns_bridge/service/transfer/dns_server.py -> netbox_dns_bridge/dns_server.py new file: netbox_dns_bridge/management/commands/dns-settings.py modified: netbox_dns_bridge/management/commands/dns-transfer-endpoint.py renamed: netbox_dns_bridge/service/transfer/request_handler.py -> netbox_dns_bridge/request_handler.py deleted: netbox_dns_bridge/service/transfer/__init__.py Another restructure to simplify code re-use. New command dns-settings added to allow setting of catalog zone serial. This will be needed to migrate from previous versions.
48 lines
1.9 KiB
Python
48 lines
1.9 KiB
Python
from django.core.management.base import BaseCommand, CommandError
|
|
from netbox_dns_bridge.models import IntegerKeyValueSetting
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Get or set integer key-value settings"
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument("action", choices=["get", "set", "list"], help="Action to perform")
|
|
parser.add_argument("key", nargs="?", help="Setting key")
|
|
parser.add_argument("value", nargs="?", type=int, help="Value to set (required for 'set')")
|
|
|
|
def handle(self, *args, **options):
|
|
action = options["action"]
|
|
key = options.get("key")
|
|
value = options.get("value")
|
|
|
|
if action == "list":
|
|
settings = IntegerKeyValueSetting.objects.all()
|
|
if not settings.exists():
|
|
self.stdout.write("No settings found.")
|
|
return
|
|
for setting in settings:
|
|
self.stdout.write(str(setting))
|
|
|
|
elif action == "get":
|
|
if not key:
|
|
raise CommandError("A key is required for GET")
|
|
try:
|
|
setting = IntegerKeyValueSetting.objects.get(key=key)
|
|
self.stdout.write(f"{setting.key}: {setting.value}")
|
|
except IntegerKeyValueSetting.DoesNotExist:
|
|
raise CommandError(f"No setting was found for {key}")
|
|
|
|
elif action == "set":
|
|
if not key:
|
|
raise CommandError("A setting is required for SET command")
|
|
if value is None:
|
|
raise CommandError("A value is required for SET command")
|
|
try:
|
|
setting = IntegerKeyValueSetting.objects.get(key=key)
|
|
old_value = setting.value
|
|
setting.value = value
|
|
setting.save()
|
|
self.stdout.write(f"Updated {key} from {old_value} to {value}")
|
|
except IntegerKeyValueSetting.DoesNotExist:
|
|
raise CommandError(f"No setting found for {key}")
|