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:
@@ -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')
|
||||
|
@@ -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.
|
||||
"""
|
||||
|
@@ -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'),
|
||||
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user