Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion netbox_docker_plugin/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class NetBoxDockerConfig(PluginConfig):
name = "netbox_docker_plugin"
verbose_name = " NetBox Docker Plugin"
description = "Manage Docker"
version = "4.9.0"
version = "4.10.0"
base_url = "docker"
min_version = "4.3.7"
author = "Vincent Simonin <vincent@saashup.com>, David Delassus <david.jose.delassus@gmail.com>"
Expand Down
21 changes: 17 additions & 4 deletions netbox_docker_plugin/forms/bind.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
from django import forms
from utilities.forms.fields import (
DynamicModelMultipleChoiceField,
DynamicModelChoiceField,
)
from netbox.forms import (
NetBoxModelFilterSetForm,
Expand All @@ -14,8 +13,11 @@
class BindForm(forms.ModelForm):
"""Bind form definition class"""

container = DynamicModelChoiceField(
label="Container", queryset=Container.objects.all(), required=True
container = forms.ModelChoiceField(
label="Container",
queryset=Container.objects.all(),
required=True,
widget=forms.HiddenInput,
)

class Meta:
Expand All @@ -29,12 +31,23 @@ class Meta:
"read_only",
)
labels = {
"container": "Container",
"host_path": "Path to mount on host",
"container_path": "Mountpoint in container",
"read_only": "Mount as read-only within the container",
}

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

if "data" in kwargs:
container = Container.objects.filter(id=kwargs["data"]["container"])
elif "initial" in kwargs and "container" in kwargs["initial"]:
container = Container.objects.filter(id=kwargs["initial"]["container"])
else:
container = Container.objects.filter(id=self.instance.container.id)

self.instance._meta.verbose_name = f"Bind — {container.first()}"


class BindFilterForm(NetBoxModelFilterSetForm):
"""Bind filter form definition class"""
Expand Down
12 changes: 7 additions & 5 deletions netbox_docker_plugin/forms/container.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,10 @@ class Meta:
class ContainerEditForm(NetBoxModelForm):
"""Container form definition class"""

image = DynamicModelChoiceField(
image = forms.ModelChoiceField(
label="Image",
queryset=Image.objects.all(),
required=True,
query_params={"host_id": "$host"},
)
cap_add = forms.MultipleChoiceField(choices=ContainerCapAddChoices, required=False)

Expand Down Expand Up @@ -99,6 +98,11 @@ class Meta:
"cmd": "Command",
}

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

self.fields["image"].queryset = Image.objects.filter(host=self.instance.host)


class ContainerFilterForm(NetBoxModelFilterSetForm):
"""Container filter form definition class"""
Expand All @@ -124,9 +128,7 @@ class ContainerFilterForm(NetBoxModelFilterSetForm):
restart_policy = forms.ChoiceField(
label="Restart Policy", choices=ContainerRestartPolicyChoices, required=False
)
log_driver = forms.ChoiceField(
label="Logging driver", required=False
)
log_driver = forms.ChoiceField(label="Logging driver", required=False)
tag = TagFilterField(model)


Expand Down
21 changes: 17 additions & 4 deletions netbox_docker_plugin/forms/device.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
from django import forms
from utilities.forms.fields import (
DynamicModelMultipleChoiceField,
DynamicModelChoiceField,
)
from netbox.forms import (
NetBoxModelFilterSetForm,
Expand All @@ -14,8 +13,11 @@
class DeviceForm(forms.ModelForm):
"""Device form definition class"""

container = DynamicModelChoiceField(
label="Container", queryset=Container.objects.all(), required=True
container = forms.ModelChoiceField(
label="Container",
queryset=Container.objects.all(),
required=True,
widget=forms.HiddenInput,
)

class Meta:
Expand All @@ -28,11 +30,22 @@ class Meta:
"container_path",
)
labels = {
"container": "Container",
"host_path": "Path to the device on host",
"container_path": "Path to the device in container",
}

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

if "data" in kwargs:
container = Container.objects.filter(id=kwargs["data"]["container"])
elif "initial" in kwargs and "container" in kwargs["initial"]:
container = Container.objects.filter(id=kwargs["initial"]["container"])
else:
container = Container.objects.filter(id=self.instance.container.id)

self.instance._meta.verbose_name = f"Device — {container.first()}"


class DeviceFilterForm(NetBoxModelFilterSetForm):
"""Device filter form definition class"""
Expand Down
21 changes: 17 additions & 4 deletions netbox_docker_plugin/forms/env.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
"""Env Form definition"""

from django import forms
from utilities.forms.fields import DynamicModelChoiceField
from ..models.container import Env, Container


class EnvForm(forms.ModelForm):
"""Env form definition class"""

container = DynamicModelChoiceField(
label="Container", queryset=Container.objects.all(), required=True
container = forms.ModelChoiceField(
label="Container",
queryset=Container.objects.all(),
required=True,
widget=forms.HiddenInput,
)

class Meta:
Expand All @@ -22,7 +24,18 @@ class Meta:
"value",
)
labels = {
"container": "Container",
"var_name": "Variable Name",
"value": "Value",
}

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

if "data" in kwargs:
container = Container.objects.filter(id=kwargs["data"]["container"])
elif "initial" in kwargs and "container" in kwargs["initial"]:
container = Container.objects.filter(id=kwargs["initial"]["container"])
else:
container = Container.objects.filter(id=self.instance.container.id)

self.instance._meta.verbose_name = f"Environment variable — {container.first()}"
21 changes: 17 additions & 4 deletions netbox_docker_plugin/forms/label.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
"""Label Form definition"""

from django import forms
from utilities.forms.fields import DynamicModelChoiceField
from ..models.container import Label, Container


class LabelForm(forms.ModelForm):
"""Label form definition class"""

container = DynamicModelChoiceField(
label="Container", queryset=Container.objects.all(), required=True
container = forms.ModelChoiceField(
label="Container",
queryset=Container.objects.all(),
required=True,
widget=forms.HiddenInput,
)

class Meta:
Expand All @@ -22,7 +24,18 @@ class Meta:
"value",
)
labels = {
"container": "Container",
"key": "Key",
"value": "Value",
}

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

if "data" in kwargs:
container = Container.objects.filter(id=kwargs["data"]["container"])
elif "initial" in kwargs and "container" in kwargs["initial"]:
container = Container.objects.filter(id=kwargs["initial"]["container"])
else:
container = Container.objects.filter(id=self.instance.container.id)

self.instance._meta.verbose_name = f"Label — {container.first()}"
21 changes: 17 additions & 4 deletions netbox_docker_plugin/forms/log_driver_option.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
"""Log Driver option Form definition"""

from django import forms
from utilities.forms.fields import DynamicModelChoiceField
from ..models.container import LogDriverOption, Container


class LogDriverOptionForm(forms.ModelForm):
"""Log Driver option form definition class"""

container = DynamicModelChoiceField(
label="Container", queryset=Container.objects.all(), required=True
container = forms.ModelChoiceField(
label="Container",
queryset=Container.objects.all(),
required=True,
widget=forms.HiddenInput,
)

class Meta:
Expand All @@ -22,7 +24,18 @@ class Meta:
"value",
)
labels = {
"container": "Container",
"option_name": "Option Name",
"value": "Value",
}

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

if "data" in kwargs:
container = Container.objects.filter(id=kwargs["data"]["container"])
elif "initial" in kwargs and "container" in kwargs["initial"]:
container = Container.objects.filter(id=kwargs["initial"]["container"])
else:
container = Container.objects.filter(id=self.instance.container.id)

self.instance._meta.verbose_name = f"Log driver option — {container.first()}"
27 changes: 22 additions & 5 deletions netbox_docker_plugin/forms/mount.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
from django import forms
from utilities.forms.fields import (
DynamicModelMultipleChoiceField,
DynamicModelChoiceField,
)
from netbox.forms import (
NetBoxModelFilterSetForm,
Expand All @@ -15,10 +14,13 @@
class MountForm(forms.ModelForm):
"""Mount form definition class"""

container = DynamicModelChoiceField(
label="Container", queryset=Container.objects.all(), required=True
container = forms.ModelChoiceField(
label="Container",
queryset=Container.objects.all(),
required=True,
widget=forms.HiddenInput,
)
volume = DynamicModelChoiceField(
volume = forms.ModelChoiceField(
label="Volume", queryset=Volume.objects.all(), required=True
)

Expand All @@ -33,12 +35,27 @@ class Meta:
"read_only",
)
labels = {
"container": "Container",
"source": "Source directory",
"volume": "Volume",
"read_only": "Mount as read-only within the container",
}

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

if "data" in kwargs:
container = Container.objects.filter(id=kwargs["data"]["container"])
elif "initial" in kwargs and "container" in kwargs["initial"]:
container = Container.objects.filter(id=kwargs["initial"]["container"])
else:
container = Container.objects.filter(id=self.instance.container.id)

self.fields["volume"].queryset = Volume.objects.filter(
host=container.first().host
)

self.instance._meta.verbose_name = f"Mount — {container.first()}"


class MountFilterForm(NetBoxModelFilterSetForm):
"""Mount filter form definition class"""
Expand Down
33 changes: 24 additions & 9 deletions netbox_docker_plugin/forms/network_setting.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
from django import forms
from utilities.forms.fields import (
DynamicModelMultipleChoiceField,
DynamicModelChoiceField,
)
from netbox.forms import (
NetBoxModelFilterSetForm,
Expand All @@ -15,26 +14,42 @@
class NetworkSettingForm(forms.ModelForm):
"""NetworkSetting form definition class"""

container = DynamicModelChoiceField(
label="Container", queryset=Container.objects.all(), required=True
container = forms.ModelChoiceField(
label="Container",
queryset=Container.objects.all(),
required=True,
widget=forms.HiddenInput,
)
network = DynamicModelChoiceField(
network = forms.ModelChoiceField(
label="Network", queryset=Network.objects.all(), required=True
)

class Meta:
"""NetworkSetting form definition Meta class"""

model = NetworkSetting
fields = (
"container",
"network"
)
fields = ("container", "network")
labels = {
"container": "Container",
"network": "Network",
}

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

if "data" in kwargs:
container = Container.objects.filter(id=kwargs["data"]["container"])
elif "initial" in kwargs and "container" in kwargs["initial"]:
container = Container.objects.filter(id=kwargs["initial"]["container"])
else:
container = Container.objects.filter(id=self.instance.container.id)

self.fields["network"].queryset = Network.objects.filter(
host=container.first().host
)

self.instance._meta.verbose_name = f"Network setting — {container.first()}"


class NetworkSettingFilterForm(NetBoxModelFilterSetForm):
"""Mount filter form definition class"""

Expand Down
Loading