From b1d8acd72281965028248b7140b7573789f805b2 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 5 Oct 2023 10:38:24 -0700 Subject: [PATCH] 12336 switch to pg locks --- netbox/dcim/api/views.py | 10 +++++----- netbox/netbox/constants.py | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 0421e6730..9b79fac4a 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -1,6 +1,6 @@ -from django.db import transaction from django.http import Http404, HttpResponse from django.shortcuts import get_object_or_404 +from django_pglocks import advisory_lock from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import extend_schema, OpenApiParameter from rest_framework.decorators import action @@ -23,7 +23,7 @@ from netbox.api.pagination import StripCountAnnotationsPaginator from netbox.api.renderers import TextRenderer from netbox.api.viewsets import NetBoxModelViewSet from netbox.api.viewsets.mixins import SequentialBulkCreatesMixin -from netbox.constants import NESTED_SERIALIZER_PREFIX +from netbox.constants import NESTED_SERIALIZER_PREFIX, ADVISORY_LOCK_KEYS from utilities.api import get_serializer_for_model from utilities.utils import count_related from virtualization.models import VirtualMachine @@ -110,15 +110,15 @@ class RegionViewSet(NetBoxModelViewSet): serializer_class = serializers.RegionSerializer filterset_class = filtersets.RegionFilterSet - @transaction.atomic + @advisory_lock(ADVISORY_LOCK_KEYS['regions']) def create(self, request, *args, **kwargs): return super().create(request, *args, **kwargs) - @transaction.atomic + @advisory_lock(ADVISORY_LOCK_KEYS['regions']) def update(self, request, *args, **kwargs): return super().update(request, *args, **kwargs) - @transaction.atomic + @advisory_lock(ADVISORY_LOCK_KEYS['regions']) def destroy(self, request, *args, **kwargs): return super().destroy(request, *args, **kwargs) diff --git a/netbox/netbox/constants.py b/netbox/netbox/constants.py index d69edc69c..d5da1c912 100644 --- a/netbox/netbox/constants.py +++ b/netbox/netbox/constants.py @@ -15,4 +15,5 @@ ADVISORY_LOCK_KEYS = { 'available-ips': 100200, 'available-vlans': 100300, 'available-asns': 100400, + 'regions': 100500, }