Skip to content

Commit a58c6ff

Browse files
authored
Merge pull request #134 from SaaShup/road_2_v4
👽 Make plugin compatible with Netbox v4
2 parents ea13d79 + ee89dee commit a58c6ff

38 files changed

+189
-108
lines changed

.github/workflows/main_ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
max-parallel: 4
1313
matrix:
1414
python-version: ["3.11"]
15-
netbox-version: ["v3.6.9","v3.7.8"]
15+
netbox-version: ["v4.0.3"]
1616
services:
1717
redis:
1818
image: redis

.github/workflows/pr_ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
max-parallel: 4
1616
matrix:
1717
python-version: ["3.11"]
18-
netbox-version: ["v3.6.9","v3.7.8"]
18+
netbox-version: ["v4.0.3"]
1919
services:
2020
redis:
2121
image: redis

netbox_docker_plugin/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""Netbox Plugin Configuration"""
22

3-
from extras.plugins import PluginConfig
43
from django.db.models.signals import post_migrate
4+
from netbox.plugins import PluginConfig
55
from .utilities import create_webhook
66

77
class NetBoxDockerConfig(PluginConfig):
@@ -10,8 +10,9 @@ class NetBoxDockerConfig(PluginConfig):
1010
name = "netbox_docker_plugin"
1111
verbose_name = " NetBox Docker Plugin"
1212
description = "Manage Docker"
13-
version = "1.11.0"
13+
version = "2.0.0"
1414
base_url = "docker"
15+
min_version = "4.0.0"
1516
author= "Vincent Simonin <vincent@saashup.com>, David Delassus <david.jose.delassus@gmail.com>"
1617
author_email= "vincent@saashup.com, david.jose.delassus@gmail.com"
1718

netbox_docker_plugin/api/serializers.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# pylint: disable=E1101
44

55
from rest_framework import serializers
6-
from utilities.utils import dict_to_filter_params
6+
from utilities.query import dict_to_filter_params
77
from users.api.nested_serializers import NestedTokenSerializer
88
from netbox.api.serializers import NetBoxModelSerializer, WritableNestedSerializer
99
from ..models.host import Host
@@ -95,7 +95,7 @@ def to_internal_value(self, data):
9595
params = dict_to_filter_params(data)
9696
if Volume.objects.filter(**params).count() == 0:
9797
host = Host.objects.get(pk=params["host"])
98-
volume = Volume(host= host, name= params["name"])
98+
volume = Volume(host=host, name=params["name"])
9999
volume.save()
100100
return volume
101101

@@ -229,6 +229,7 @@ class Meta:
229229
"containers",
230230
"tags",
231231
)
232+
brief_fields = NestedImageSerializer.Meta.fields
232233

233234

234235
class VolumeSerializer(NetBoxModelSerializer):
@@ -257,6 +258,7 @@ class Meta:
257258
"mounts",
258259
"tags",
259260
)
261+
brief_fields = NestedVolumeSerializer.Meta.fields
260262

261263

262264
class NetworkSerializer(NetBoxModelSerializer):
@@ -287,6 +289,7 @@ class Meta:
287289
"network_settings",
288290
"tags",
289291
)
292+
brief_fields = NestedNetworkSerializer.Meta.fields
290293

291294

292295
class PortSerializer(serializers.ModelSerializer):
@@ -414,6 +417,7 @@ class Meta:
414417
"last_updated",
415418
"tags",
416419
)
420+
brief_fields = NestedContainerSerializer.Meta.fields
417421

418422
def validate(self, data):
419423
attrs = data.copy()
@@ -544,6 +548,7 @@ class Meta:
544548
"email",
545549
"images",
546550
)
551+
brief_fields = NestedRegistrySerializer.Meta.fields
547552

548553

549554
class HostSerializer(NetBoxModelSerializer):
@@ -584,11 +589,13 @@ class Meta:
584589
"containers",
585590
"registries",
586591
)
592+
brief_fields = NestedHostSerializer.Meta.fields
593+
587594

588595
class ContainerCommandSerializer(serializers.Serializer):
589596
"""Container command Serializer class"""
590597

591-
cmd=serializers.ListField(child=serializers.CharField())
598+
cmd = serializers.ListField(child=serializers.CharField())
592599

593600
def create(self, validated_data):
594601
pass

netbox_docker_plugin/forms/bind.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
"""Mount Form definition"""
22

33
from django import forms
4-
from utilities.forms.mixins import BootstrapMixin
54
from utilities.forms.fields import (
65
DynamicModelMultipleChoiceField,
76
DynamicModelChoiceField,
@@ -12,7 +11,7 @@
1211
from ..models.container import Bind, Container
1312

1413

15-
class BindForm(BootstrapMixin, forms.ModelForm):
14+
class BindForm(forms.ModelForm):
1615
"""Bind form definition class"""
1716

1817
container = DynamicModelChoiceField(

netbox_docker_plugin/forms/container.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Container Forms definitions"""
22

33
from django import forms
4+
from utilities.forms.rendering import FieldSet
45
from utilities.forms.fields import (
56
TagFilterField,
67
DynamicModelMultipleChoiceField,
@@ -51,6 +52,7 @@ class Meta:
5152
"restart_policy": "Restart Policy",
5253
}
5354

55+
5456
class ContainerEditForm(NetBoxModelForm):
5557
"""Container form definition class"""
5658

@@ -148,7 +150,7 @@ class ContainerBulkEditForm(NetBoxModelBulkEditForm):
148150
)
149151

150152
model = Container
151-
fieldsets = (("General", ("restart_policy", "hostname")),)
153+
fieldsets = (FieldSet("restart_policy", "hostname", name="General"),)
152154

153155

154156
class ContainerOperationForm(NetBoxModelForm):

netbox_docker_plugin/forms/env.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
from django import forms
44
from utilities.forms.fields import DynamicModelChoiceField
5-
from utilities.forms.mixins import BootstrapMixin
65
from ..models.container import Env, Container
76

87

9-
class EnvForm(BootstrapMixin, forms.ModelForm):
8+
class EnvForm(forms.ModelForm):
109
"""Env form definition class"""
1110

1211
container = DynamicModelChoiceField(

netbox_docker_plugin/forms/host.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Host Forms definitions"""
22

33
from django import forms
4+
from utilities.forms.rendering import FieldSet
45
from utilities.forms.fields import TagFilterField
56
from netbox.forms import (
67
NetBoxModelForm,
@@ -70,4 +71,4 @@ class HostBulkEditForm(NetBoxModelBulkEditForm):
7071
)
7172

7273
model = Host
73-
fieldsets = (("General", ("endpoint",)),)
74+
fieldsets = (FieldSet("endpoint", name="General"),)

netbox_docker_plugin/forms/image.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Image Forms definitions"""
22

33
from django import forms
4+
from utilities.forms.rendering import FieldSet
45
from utilities.forms.fields import (
56
TagFilterField,
67
DynamicModelMultipleChoiceField,
@@ -101,4 +102,4 @@ class ImageBulkEditForm(NetBoxModelBulkEditForm):
101102
)
102103

103104
model = Image
104-
fieldsets = (("General", ("version",)),)
105+
fieldsets = (FieldSet("version", name="General"),)

netbox_docker_plugin/forms/label.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
from django import forms
44
from utilities.forms.fields import DynamicModelChoiceField
5-
from utilities.forms.mixins import BootstrapMixin
65
from ..models.container import Label, Container
76

87

9-
class LabelForm(BootstrapMixin, forms.ModelForm):
8+
class LabelForm(forms.ModelForm):
109
"""Label form definition class"""
1110

1211
container = DynamicModelChoiceField(

0 commit comments

Comments
 (0)