feat: add scoped NetBox ZIP export and import plugin
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import uuid
|
||||
|
||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.db import models
|
||||
|
||||
|
||||
class InstanceIdentity(models.Model):
|
||||
"""Stable identity used to correlate repeat exports from this NetBox."""
|
||||
|
||||
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||||
singleton = models.BooleanField(default=True, unique=True, editable=False)
|
||||
|
||||
@classmethod
|
||||
def local_id(cls):
|
||||
return cls.objects.get_or_create(singleton=True)[0].pk
|
||||
|
||||
|
||||
class ImportedObjectMapping(models.Model):
|
||||
"""Maps an object from another NetBox instance to its local counterpart."""
|
||||
|
||||
source_instance = models.UUIDField()
|
||||
source_model = models.CharField(max_length=100)
|
||||
source_object_id = models.CharField(max_length=255)
|
||||
target_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
|
||||
target_id = models.CharField(max_length=255)
|
||||
target = GenericForeignKey("target_type", "target_id")
|
||||
last_imported = models.DateTimeField(auto_now=True)
|
||||
|
||||
class Meta:
|
||||
constraints = (
|
||||
models.UniqueConstraint(
|
||||
fields=("source_instance", "source_model", "source_object_id"),
|
||||
name="netbox_export_unique_source_object",
|
||||
),
|
||||
)
|
||||
indexes = (
|
||||
models.Index(fields=("target_type", "target_id"), name="netbox_exp_target__d4d805_idx"),
|
||||
)
|
||||
Reference in New Issue
Block a user