feat: add NetBox plugin store
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
initial = True
|
||||
|
||||
dependencies = [migrations.swappable_dependency(settings.AUTH_USER_MODEL)]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="ManagedPlugin",
|
||||
fields=[
|
||||
("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
|
||||
("slug", models.SlugField(max_length=64, unique=True)),
|
||||
("name", models.CharField(max_length=200)),
|
||||
("package_name", models.CharField(max_length=128)),
|
||||
("import_name", models.CharField(max_length=128)),
|
||||
("repository_url", models.URLField(blank=True, max_length=500)),
|
||||
("installed_version", models.CharField(blank=True, max_length=64)),
|
||||
("available_version", models.CharField(blank=True, max_length=64)),
|
||||
("enabled", models.BooleanField(default=False)),
|
||||
("restart_required", models.BooleanField(default=False)),
|
||||
(
|
||||
"state",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("unknown", "Unknown"),
|
||||
("running", "Operation running"),
|
||||
("installed", "Installed"),
|
||||
("enabled", "Enabled"),
|
||||
("disabled", "Disabled"),
|
||||
("restart-required", "Restart required"),
|
||||
("handed-off", "Handed to agent"),
|
||||
("failed", "Failed"),
|
||||
],
|
||||
default="unknown",
|
||||
max_length=32,
|
||||
),
|
||||
),
|
||||
("last_error", models.TextField(blank=True)),
|
||||
("last_checked", models.DateTimeField(blank=True, null=True)),
|
||||
("created", models.DateTimeField(auto_now_add=True)),
|
||||
("updated", models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
options={
|
||||
"ordering": ("name", "slug"),
|
||||
"permissions": (("manage_plugin", "Can execute Plugin Store lifecycle actions"),),
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="LifecycleAudit",
|
||||
fields=[
|
||||
("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
|
||||
("slug", models.SlugField(max_length=64)),
|
||||
("action", models.CharField(max_length=16)),
|
||||
("requested_version", models.CharField(blank=True, max_length=64)),
|
||||
("dry_run", models.BooleanField(default=True)),
|
||||
(
|
||||
"status",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("queued", "Queued"),
|
||||
("running", "Running"),
|
||||
("succeeded", "Succeeded"),
|
||||
("failed", "Failed"),
|
||||
("handed-off", "Handed to host agent"),
|
||||
],
|
||||
default="queued",
|
||||
max_length=16,
|
||||
),
|
||||
),
|
||||
("request_data", models.JSONField(blank=True, default=dict)),
|
||||
("result_data", models.JSONField(blank=True, default=dict)),
|
||||
("error", models.TextField(blank=True)),
|
||||
("external_operation_id", models.UUIDField(blank=True, null=True, unique=True)),
|
||||
("created", models.DateTimeField(auto_now_add=True)),
|
||||
("started", models.DateTimeField(blank=True, null=True)),
|
||||
("completed", models.DateTimeField(blank=True, null=True)),
|
||||
(
|
||||
"actor",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="+",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"ordering": ("-created",),
|
||||
"permissions": (("execute_plugin_lifecycle", "Can request Plugin Store lifecycle execution"),),
|
||||
},
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="lifecycleaudit",
|
||||
index=models.Index(fields=["slug", "-created"], name="nbps_audit_slug_created"),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
Reference in New Issue
Block a user