Last active
July 1, 2022 01:57
-
-
Save tyler-8/61358efaaf223841cc9b229f12954bf2 to your computer and use it in GitHub Desktop.
A Custom Validator for NetBox 3.0+ to prevent sites from being retired if they have circuits that aren't deprovisioning or decommissioned.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from extras.validators import CustomValidator | |
from circuits.models import Circuit | |
class SiteStatusCircuitValidator(CustomValidator): | |
""" | |
Prevent sites from being retired if they have circuits that aren't in deprovisioning or decommissioned status. | |
""" | |
def validate(self, site): | |
circuit_count = Circuit.objects.filter(terminations__site=site).exclude( | |
status__in=["deprovisioning", "decommissioned"] | |
).count() | |
if site.status == "retired" and circuit_count > 0: | |
self.fail( | |
f"Site status cannot be set to 'retired', {circuit_count} circuits" | |
"are not in deprovisioning or decommissioned status.", | |
field="status", | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment