def settings_form(request, hostname): """ Ajax page for changing server settings. """ if hostname is None: vm = None else: vm = get_vm(request, hostname) if request.user.is_admin(request): # can_edit permission action = None form = AdminServerSettingsForm(request, vm, request.POST, prefix='opt') else: action = 'update' form = ServerSettingsForm(request, vm, request.POST, prefix='opt') # noinspection PyUnresolvedReferences if form.is_valid(): # noinspection PyUnresolvedReferences status = form.save(action=action, args=(form.current_hostname, )) if status == 204: # Nothing changed return HttpResponse(None, status=status) elif status in (200, 201): # noinspection PyUnresolvedReferences if form.action == 'delete': return redirect('vm_list') else: return redirect('vm_details', hostname=form.saved_hostname) return render(request, 'gui/vm/settings_form.html', { 'settingsform': form, 'vm': vm, 'mb_addon': SIZE_FIELD_MB_ADDON, })
def _render_admin_add(request, context): """ Render add vm view for admin (user with can_edit permission). Partial add VM view, was separated to smaller functions due to code reuse in Enterprise Edition apps (payments). """ dc_settings = request.dc.settings initial = dc_settings.VMS_VM_JSON_DEFAULTS['internal_metadata'].copy() initial['node'] = request.GET.get('node', None) initial['domain'] = dc_settings.VMS_VM_DOMAIN_DEFAULT initial['monitored'] = dc_settings.MON_ZABBIX_ENABLED and dc_settings.MON_ZABBIX_VM_SYNC \ and dc_settings.VMS_VM_MONITORED_DEFAULT initial['cpu_shares'] = dc_settings.VMS_VM_CPU_SHARES_DEFAULT initial['zfs_io_priority'] = dc_settings.VMS_VM_ZFS_IO_PRIORITY_DEFAULT initial['zpool'] = dc_settings.VMS_STORAGE_DEFAULT initial['ostype'] = dc_settings.VMS_VM_OSTYPE_DEFAULT initial[ 'snapshot_limit_manual'] = dc_settings.VMS_VM_SNAPSHOT_LIMIT_MANUAL_DEFAULT initial[ 'snapshot_size_limit'] = dc_settings.VMS_VM_SNAPSHOT_SIZE_LIMIT_DEFAULT initial['owner'] = request.user.username initial['mdata'] = dc_settings.VMS_VM_MDATA_DEFAULT context['settingsform'] = AdminServerSettingsForm(request, None, prefix='opt', initial=initial) context['importform'] = UploadFileForm() return render(request, 'gui/vm/add.html', context)
def multi_settings_form(request): """ Ajax page for changing settings of multiple servers. """ if not request.user.is_admin(request): # can_edit permission raise PermissionDenied if request.POST['action'] == 'delete': # delete only for now for hostname in request.POST.getlist('hostname'): # DELETE vm_define vm = get_vm(request, hostname, auto_dc_switch=False) res = AdminServerSettingsForm.api_call('delete', vm, request, args=(hostname,)) if res.status_code != 200: return JSONResponse(res.data, status=res.status_code) node = request.GET.get('node', None) if node: return redirect('node_vms', node) else: return redirect('vm_list')
def details(request, hostname): """ Page with details of server. """ dc_settings = request.dc.settings context = collect_view_data(request, 'vm_list', mb_addon=SIZE_FIELD_MB_ADDON) context['vm'] = vm = get_vm(request, hostname, sr=('dc', 'owner', 'node', 'template', 'slavevm')) context['vms'] = vms = get_vms(request) context['vms_tags'] = get_vms_tags(vms) context['vm_disks'] = vm_disks = get_vm_define_disk(request, vm) context['vm_nics'] = vm_nics = get_vm_define_nic(request, vm) context['ptrform'] = PTRForm(prefix='ptr') context['iso_rescuecd'] = dc_settings.VMS_ISO_RESCUECD context['mon_sla_enabled'] = (settings.MON_ZABBIX_ENABLED and DefaultDc().settings.MON_ZABBIX_ENABLED and dc_settings.MON_ZABBIX_VM_SLA) context['can_edit'] = request.user.is_admin(request) if vm.slave_vms: context['slave_vm'] = vm.slave_vm.select_related( 'master_vm', 'vm', 'vm__node').exclude(name='').first() else: context['slave_vm'] = None if vm.is_kvm(): context['iso_images'] = get_iso_images(request, vm.ostype) if vm.ostype == Vm.WINDOWS: context[ 'stop_timeout_period'] = dc_settings.VMS_VM_STOP_WIN_TIMEOUT_DEFAULT else: context[ 'stop_timeout_period'] = dc_settings.VMS_VM_STOP_TIMEOUT_DEFAULT if context['can_edit']: context['settingsform'] = AdminServerSettingsForm(request, vm, prefix='opt') initial_disk = { 'disk_id': len(vm_disks) + 1, 'zpool': vm.zpool, 'model': dc_settings.VMS_DISK_MODEL_DEFAULT, 'compression': dc_settings.VMS_DISK_COMPRESSION_DEFAULT, 'image': dc_settings.VMS_DISK_IMAGE_DEFAULT, } if initial_disk['disk_id'] == 1: initial_disk['boot'] = True initial_nic = { 'nic_id': len(vm_nics) + 1, 'model': dc_settings.VMS_NIC_MODEL_DEFAULT, 'net': dc_settings.VMS_NET_DEFAULT, } if initial_nic['nic_id'] == 1: initial_nic['dns'] = True initial_nic['primary'] = True if initial_nic['nic_id'] == dc_settings.VMS_NIC_MONITORING_DEFAULT: initial_nic['monitoring'] = True if vm.template: initial_disk.update( vm.template.get_vm_define_disk(initial_disk['disk_id'])) initial_nic.update( vm.template.get_vm_define_nic(initial_nic['nic_id'])) context['disk_settingsform'] = AdminServerDiskSettingsForm( request, vm, prefix='opt-disk', initial=initial_disk) context['nic_settingsform'] = AdminServerNicSettingsForm( request, vm, prefix='opt-nic', initial=initial_nic) else: context['settingsform'] = ServerSettingsForm(request, vm, prefix='opt') context['disk_settingsform'] = ServerDiskSettingsForm( request, vm, prefix='opt-disk') context['nic_settingsform'] = ServerNicSettingsForm(request, vm, prefix='opt-nic') view_vm_details.send(sender='gui.vm.views.details', request=request, context=context) return render(request, 'gui/vm/details.html', context)