1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Initial work on config contexts

This commit is contained in:
Jeremy Stretch
2018-06-27 16:02:34 -04:00
parent ffcbc54522
commit c13e4858d7
26 changed files with 565 additions and 16 deletions

View File

@@ -1,5 +1,9 @@
from __future__ import unicode_literals
from django.shortcuts import get_object_or_404
from rest_framework.decorators import detail_route
from rest_framework.response import Response
from dcim.models import Interface
from extras.api.views import CustomFieldModelViewSet
from utilities.api import FieldChoicesViewSet, ModelViewSet
@@ -49,6 +53,11 @@ class VirtualMachineViewSet(CustomFieldModelViewSet):
serializer_class = serializers.VirtualMachineSerializer
filter_class = filters.VirtualMachineFilter
@detail_route(url_path='config-context')
def config_context(self, request, pk):
device = get_object_or_404(VirtualMachine, pk=pk)
return Response(device.get_config_context())
class InterfaceViewSet(ModelViewSet):
queryset = Interface.objects.filter(virtual_machine__isnull=False).select_related('virtual_machine')

View File

@@ -9,7 +9,7 @@ from django.utils.encoding import python_2_unicode_compatible
from taggit.managers import TaggableManager
from dcim.models import Device
from extras.models import CustomFieldModel
from extras.models import ConfigContextModel, CustomFieldModel
from utilities.models import ChangeLoggedModel
from .constants import DEVICE_STATUS_ACTIVE, VM_STATUS_CHOICES, VM_STATUS_CLASSES
@@ -168,7 +168,7 @@ class Cluster(ChangeLoggedModel, CustomFieldModel):
#
@python_2_unicode_compatible
class VirtualMachine(ChangeLoggedModel, CustomFieldModel):
class VirtualMachine(ChangeLoggedModel, ConfigContextModel, CustomFieldModel):
"""
A virtual machine which runs inside a Cluster.
"""

View File

@@ -48,6 +48,7 @@ urlpatterns = [
url(r'^virtual-machines/(?P<pk>\d+)/$', views.VirtualMachineView.as_view(), name='virtualmachine'),
url(r'^virtual-machines/(?P<pk>\d+)/edit/$', views.VirtualMachineEditView.as_view(), name='virtualmachine_edit'),
url(r'^virtual-machines/(?P<pk>\d+)/delete/$', views.VirtualMachineDeleteView.as_view(), name='virtualmachine_delete'),
url(r'^virtual-machines/(?P<pk>\d+)/config-context/$', views.VirtualMachineConfigContextView.as_view(), name='virtualmachine_configcontext'),
url(r'^virtual-machines/(?P<pk>\d+)/changelog/$', ObjectChangeLogView.as_view(), name='virtualmachine_changelog', kwargs={'model': VirtualMachine}),
url(r'^virtual-machines/(?P<virtualmachine>\d+)/services/assign/$', ServiceCreateView.as_view(), name='virtualmachine_service_assign'),

View File

@@ -269,6 +269,18 @@ class VirtualMachineView(View):
})
class VirtualMachineConfigContextView(View):
def get(self, request, pk):
virtualmachine = get_object_or_404(VirtualMachine, pk=pk)
return render(request, 'virtualization/virtualmachine_configcontext.html', {
'virtualmachine': virtualmachine,
'active_tab': 'config-context',
})
class VirtualMachineCreateView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'virtualization.add_virtualmachine'
model = VirtualMachine