def list_vms(request, server_id): if (not request.user.is_superuser): return simple.direct_to_template(request, template = 'not_admin.html', extra_context = {'user':request.user}, ) vmProjects = {} vmSlices = {} try: for vm in VTDriver.getVMsInServer(VTDriver.getServerById(server_id)): if vm.projectName not in vmProjects: vmProjects[vm.projectName] = vm.projectId if vm.sliceName not in vmSlices: vmSlices[vm.sliceName] = vm.sliceId except Exception as e: print e pass server = get_object_or_404(VTServer, pk=server_id) context = { 'vmProjects': vmProjects, 'vmSlices': vmSlices,'server':server} return simple.direct_to_template( request, template="servers/servers_list_vms.html", extra_context=context, )
def servers_crud(request, server_id=None): """Show a page for the user to add/edit an VTServer """ if (not request.user.is_superuser): return simple.direct_to_template(request, template = 'not_admin.html', extra_context = {'user':request.user}, ) vmProjects = {} vmSlices = {} try: for vm in VTDriver.getVMsInServer(VTDriver.getServerById(server_id)): if vm.projectName not in vmProjects: vmProjects[vm.projectName] = vm.projectId if vm.sliceName not in vmSlices: vmSlices[vm.sliceName] = vm.sliceId except Exception as e: print e pass serverFormClass = HttpUtils.getFormFromModel(VTServer) ifaceFormClass = HttpUtils.getFormFromModel(NetworkInterface) IfaceFormSetClass = modelformset_factory(NetworkInterface) if server_id != None: server = get_object_or_404(VTServer, pk=server_id) else: server = None if request.method == "GET": #serverForm = serverFormClass(instance=server) serverForm = ServerForm(instance=server, prefix ="server") if server != None: mgmt = server.getNetworkInterfaces().filter(isMgmt = True) if mgmt: mgmt = mgmt.get() mgmtIfaceForm = MgmtBridgeForm({'mgmtBridge-name':mgmt.getName(), 'mgmtBridge-mac':mgmt.getMacStr()}, prefix ="mgmtBridge") else: mgmtIfaceForm = MgmtBridgeForm(prefix ="mgmtBridge") data = server.getNetworkInterfaces().filter(isMgmt = False) if data: IfaceFormSetClass = modelformset_factory(NetworkInterface,extra = 0) ifaceformset = IfaceFormSetClass(queryset= data) else: mgmtIfaceForm = MgmtBridgeForm(prefix ="mgmtBridge") ifaceformset = IfaceFormSetClass(queryset= NetworkInterface.objects.none()) elif request.method == "POST": #serverForm = serverFormClass(request.POST, instance=server) serverForm = ServerForm(request.POST, instance=server, prefix ="server") ifaceformset = IfaceFormSetClass(request.POST) mgmtIfaceForm = MgmtBridgeForm(request.POST, prefix ="mgmtBridge") if serverForm.is_valid() and ifaceformset.is_valid() and mgmtIfaceForm.is_valid(): ifaces = ifaceformset.save(commit = False) if server == None: server = serverForm.save(commit = False) try: server = VTDriver.crudServerFromInstance(server) VTDriver.setMgmtBridge(request, server) VTDriver.crudDataBridgeFromInstance(server, ifaces,request.POST.getlist("DELETE")) except Exception as e: print e e = HttpUtils.processException(e) context = {"exception":e, "serverForm": serverForm, 'vmProjects': vmProjects, 'vmSlices': vmSlices,'ifaceformset' : ifaceformset, 'mgmtIfaceForm' : mgmtIfaceForm} if server_id != None: context["server"] = server return simple.direct_to_template( request, template="servers/servers_crud.html", extra_context=context, ) # Returns to server's admin page and rollback transactions return HttpResponseRedirect('/servers/admin/') else: return HttpResponseNotAllowed("GET", "POST") context = {"serverForm": serverForm, 'vmProjects': vmProjects, 'vmSlices': vmSlices,'ifaceformset' : ifaceformset, 'mgmtIfaceForm' : mgmtIfaceForm} if server_id != None: context["server"] = server return simple.direct_to_template( request, template="servers/servers_crud.html", extra_context=context, )