Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 14828e9d authored by Frederico SEQUEIRA's avatar Frederico SEQUEIRA
Browse files

:lipstick: removed site from VM, added gatewat IP

parent 8d031f65
No related branches found
No related tags found
1 merge request!4Add createvm form
# SYS Address Plugin for Netbox
# SYS Plugin for Netbox
A Netbox plugin for Certificate management.
A Netbox plugin for Create Virtual Machine Process.
## Installation
......
......@@ -23,7 +23,7 @@ class ClusterForm(NetBoxModelForm):
class Meta:
model = Cluster
fields = ('name', 'type', 'description','status','tags')
fields = ('name', 'type', 'description','site','status','tags')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
......@@ -53,7 +53,7 @@ class VirtualMachineForm(NetBoxModelForm):
class Meta:
model = VirtualMachine
fields = ('name', 'cluster', 'status','site','role','platform', 'description','tags')
fields = ('name', 'cluster', 'status','role','platform', 'description','tags')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
......@@ -88,7 +88,7 @@ class IPAddressForm(NetBoxModelForm):
"""Form for IP Addresses."""
class Meta:
model = IPAddress
fields = ('address', 'status', 'role', 'tags')
fields = ('address', 'status', 'tags')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
......@@ -193,6 +193,10 @@ class CreateVmForm(NetBoxModelForm):
self.ip_formsets = []
empty_ip_formset = IPAddressFormSet(data=data, prefix='ip_new')
self.ip_formsets.append(('new', empty_ip_formset))
# IP Address Gateway
self.gateway_formsets = []
empty_gateway_formset = IPAddressFormSet(data=data, prefix='gateway_new')
self.gateway_formsets.append(('new', empty_gateway_formset))
# List Cluster
self.cl_list_formsets = []
empty_cl_list_formset = ClusterListFormSet(data=data, prefix='cl_list_new')
......@@ -256,6 +260,7 @@ class CreateVmForm(NetBoxModelForm):
name=data.get('name', ''),
slug=data.get('slug', ''),
description=data.get('description', ''),
tags = CreateVmForm.get_parse_tags(data)
)
cluster_type.full_clean()
cluster_type.save()
......@@ -265,7 +270,7 @@ class CreateVmForm(NetBoxModelForm):
@staticmethod
def create_cluster(data, cluster_type):
"""Create and save a Cluster object."""
site_id = data.get('vms_new-0-role', '')
site_id = data.get('clusters-0-site', '')
try:
site = Site.objects.get(pk=site_id)
except Site.DoesNotExist:
......@@ -277,6 +282,7 @@ class CreateVmForm(NetBoxModelForm):
status=data.get('clusters-0-status', ''),
site=site,
description=data.get('clusters-0-description', ''),
tags = CreateVmForm.get_parse_tags(data)
)
cluster.full_clean()
cluster.save()
......@@ -302,10 +308,10 @@ class CreateVmForm(NetBoxModelForm):
name=data.get('vms_new-0-name', ''),
status=data.get('vms_new-0-status', ''),
role=role,
site=cluster.site,
platform=platform,
description=data.get('vms_new-0-description', ''),
cluster=cluster,
tags = CreateVmForm.get_parse_tags(data)
)
vm.full_clean()
vm.save()
......@@ -317,7 +323,8 @@ class CreateVmForm(NetBoxModelForm):
"""Create and save a VMInterface object."""
vmi = VMInterface(
name=data.get('vmis_new-0-name', ''),
virtual_machine=vm
virtual_machine=vm,
tags = CreateVmForm.get_parse_tags(data)
)
vmi.full_clean()
vmi.save()
......@@ -336,6 +343,7 @@ class CreateVmForm(NetBoxModelForm):
ports=ports,
description=description,
virtual_machine=vm,
tags = CreateVmForm.get_parse_tags(data)
)
service.full_clean()
service.save()
......@@ -349,9 +357,9 @@ class CreateVmForm(NetBoxModelForm):
self.create_service(data, vm, 'service_syslog', 'SYSLOG Server')
@staticmethod
def create_ip_address(data, vm_interface):
def create_ip_address(data, vm_interface, prefix, description):
"""Create and save an IPAddress object."""
ipaddress_raw=data.get('ip_new-address', '').strip()
ipaddress_raw=data.get(f'{prefix}-address', '').strip()
if not ipaddress_raw:
raise ValueError("IP Address cannot be empty")
try:
......@@ -361,15 +369,21 @@ class CreateVmForm(NetBoxModelForm):
ip_address = IPAddress(
address=ipaddress_raw,
status=data.get('ip_new-status', ''),
role=data.get('ip_new-role', ''),
status=data.get(f'{prefix}-status', ''),
assigned_object=vm_interface,
tags = CreateVmForm.get_parse_tags(data),
description=description
)
ip_address.full_clean()
ip_address.save()
CreateVmForm.assign_tags(ip_address,data)
return ip_address
def create_all_ip_adresses(self, data, vm_interface,):
self.create_ip_address(data,vm_interface,'ip_new','IP Address')
self.create_ip_address(data,vm_interface,'gateway_new','Gateway')
def process_creation(self, data):
"""Object creation"""
try:
......@@ -384,7 +398,7 @@ class CreateVmForm(NetBoxModelForm):
vm = self.create_virtual_machine(data, cluster, cluster_exists)
vmi = self.create_vm_interface(data, vm)
self.create_all_services(data, vm)
self.create_ip_address(data, vmi)
self.create_all_ip_adresses(data, vmi)
return vm
except ValueError as e:
......
......@@ -109,6 +109,14 @@ SYS - Virtual Machine
</div>
{% endfor %}
{% endfor %}
<h5>Gateway</h5>
{% for gateway_formset in form.gateway_formsets %}
{% for gateway_form in gateway_formset %}
<div class="form-group" class="field-group mb-5">
{{ gateway_form.as_p }}
</div>
{% endfor %}
{% endfor %}
</div>
<div class="field-group my-5">
<h5>Dependencies</h5>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment