コード例 #1
0
def backup(request, hostname):
    """
    Backup list and backup definitions.
    """
    dc_settings = request.dc.settings
    context = collect_view_data(request, 'vm_list')
    context['vm'] = vm = get_vm(request, hostname, sr=('dc', 'owner', 'template', 'slavevm'))
    context['vms'] = vms = get_vms(request)
    context['vms_tags'] = get_vms_tags(vms)
    context['can_edit'] = request.user.is_admin(request)
    context['bkpdefs'] = bkpdefs = get_vm_bkpdefs(vm)
    context['lastbkp'] = []
    context.update(get_vm_backups(request, vm))  # Add paginator

    if context['can_edit']:
        context['bkpform_create'] = CreateBackupForm(vm, bkpdefs, prefix='snap_create')
        context['bkpform_restore'] = RestoreBackupForm(vms)
        context['bkpform_update'] = UpdateBackupForm(vm, prefix='snap_update')
        context['bkpdeform_update'] = UpdateBackupDefineForm(request, vm)
        bkpdef_initial = {
            'zpool': dc_settings.VMS_STORAGE_DEFAULT,
            'type': BackupDefine.DATASET,
            'disk_id': 1,
            'active': True,
            'compression': dc_settings.VMS_VM_BACKUP_COMPRESSION_DEFAULT
        }
        context['bkpdeform_create'] = CreateBackupDefineForm(request, vm, prefix='bkpdef_create',
                                                             initial=bkpdef_initial)

    view_vm_backup.send(sender='gui.vm.views.backup', request=request, context=context)
    return render(request, 'gui/vm/backup.html', context)
コード例 #2
0
def snapshot(request, hostname):
    """
    Snapshot list and snapshot definitions.
    """
    context = collect_view_data(request, 'vm_list')
    context['vm'] = vm = get_vm(request, hostname, sr=('dc', 'owner', 'template', 'slavevm'))
    context['vms'] = vms = get_vms(request)
    context['vms_tags'] = get_vms_tags(vms)
    context['can_edit'] = request.user.is_admin(request)
    context['can_image'] = request.user.is_staff or request.user.has_permission(request, ImageAdminPermission.name)
    context['cannot_snapshot'] = not (request.user.is_admin(request) or vm.is_installed())
    context['snapform_create'] = CreateSnapshotForm(vm, prefix='snap_create', initial={'disk_id': 1})
    context['snapform_update'] = UpdateSnapshotForm(vm, prefix='snap_update')
    context['lastsnap'] = []
    context['snapdefs'] = get_vm_snapdefs(vm)
    context.update(get_vm_snapshots(request, vm))  # Add snapshots and count attributes + paginator

    if context['can_edit']:
        context['snapdeform_update'] = UpdateSnapshotDefineForm(request, vm)
        context['snapdeform_create'] = CreateSnapshotDefineForm(request, vm, prefix='snapdef_create',
                                                                initial={'disk_id': 1, 'active': True})

    if context['can_image']:
        context['imgform'] = SnapshotImageForm(vm, request, None, prefix='img', initial={'owner': request.user.username,
                                                                                         'access': Image.PRIVATE,
                                                                                         'version': '1.0'})

    view_vm_snapshot.send(sender='gui.vm.views.snapshot', request=request, context=context)
    return render(request, 'gui/vm/snapshot.html', context)
コード例 #3
0
def _generic_add_context(request):
    """
    Collect generic context for add vm view.

    Partial add VM view, was separated to smaller functions due to code reuse in Enterprise Edition apps (payments).
    """
    context = collect_view_data(request, 'vm_add', mb_addon=SIZE_FIELD_MB_ADDON)
    context['vms'] = vms = get_vms(request)
    context['vms_tags'] = get_vms_tags(vms)

    return context
コード例 #4
0
def my_list(request):
    """
    Page with list of all servers that were created by user.
    """
    context = collect_view_data(request, 'vm_list')
    context['vms'] = vms = get_vms(request)
    context['vms_tags'] = get_vms_tags(vms)
    context['can_edit'] = request.user.is_admin(request)
    context['vms_node_online'] = not Vm.objects.filter(node__isnull=False).exclude(node__status=Node.ONLINE).exists()
    context['stop_timeout_period'] = request.dc.settings.VMS_VM_STOP_TIMEOUT_DEFAULT

    return render(request, 'gui/vm/list.html', context)
コード例 #5
0
def console(request, hostname):
    """
    Page with remote VNC console of the server.
    """
    context = collect_view_data(request, 'vm_list')
    context['vm'] = get_vm(request, hostname)
    context['vms'] = vms = get_vms(request)
    context['vms_tags'] = get_vms_tags(vms)
    context['can_edit'] = request.user.is_admin(request)

    view_vm_console.send(sender='gui.vm.views.console', request=request, context=context)
    return render(request, 'gui/vm/console.html', context)
コード例 #6
0
ファイル: views.py プロジェクト: witte1000/esdc-ce
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)
コード例 #7
0
ファイル: views.py プロジェクト: witte1000/esdc-ce
def monitoring(request, hostname, graph_type='cpu'):
    """
    Page with monitoring graphs.
    """
    context = collect_view_data(request, 'vm_list')
    context['vm'] = vm = get_vm(request, hostname)
    context['vms'] = vms = get_vms(request)
    context['vms_tags'] = get_vms_tags(vms)
    context['can_edit'] = request.user.is_admin(request)

    if vm.is_notcreated():
        zabbix_sync_enabled = vm.zabbix_sync
    else:
        zabbix_sync_enabled = vm.is_zabbix_sync_active()

    if not zabbix_sync_enabled:
        return render(request, 'gui/vm/monitoring_disabled.html', context)

    from api.mon.vm.graphs import GRAPH_ITEMS

    context['graph_items'] = GRAPH_ITEMS
    context['obj_lifetime'] = vm.lifetime
    context['obj_operational'] = vm.status in vm.STATUS_OPERATIONAL

    if graph_type == 'memory':
        graphs = (
            Graph('mem-usage'),
            Graph('swap-usage'),
        )
    elif graph_type == 'network':
        context['vm_nics'] = nics = range(1, len(vm.json_get_nics()) + 1)
        graphs = list(
            chain(*[(Graph('net-bandwidth', nic_id=i),
                     Graph('net-packets', nic_id=i)) for i in nics]))
    elif graph_type == 'disk':
        if vm.is_kvm():
            prefix = 'disk'
        else:
            prefix = 'fs'

        context['desc_throughput'] = GRAPH_ITEMS.get(prefix +
                                                     '-throughput').get('desc')
        context['desc_io'] = GRAPH_ITEMS.get(prefix + '-io').get('desc')
        context['graph_prefix'] = prefix
        context['vm_disks'] = disks = range(1, len(vm.json_get_disks()) + 1)
        graphs = list(
            chain(*[(Graph(prefix + '-throughput', disk_id=i),
                     Graph(prefix + '-io', disk_id=i)) for i in disks]))
    elif graph_type == 'vm-disk':
        graphs = (
            Graph('vm-disk-logical-throughput'),
            Graph('vm-disk-logical-io'),
            Graph('vm-disk-physical-throughput'),
            Graph('vm-disk-physical-io'),
            Graph('vm-disk-io-operations'),
        )
    else:
        graph_type = 'cpu'
        graphs = (
            Graph('cpu-usage'),
            Graph('cpu-waittime'),
            Graph('cpu-load'),
        )

    context['graphs'] = graphs
    context['graph_type'] = graph_type

    view_vm_monitoring.send(sender='gui.vm.views.monitoring',
                            request=request,
                            context=context)
    return render(request, 'gui/vm/monitoring_%s.html' % graph_type, context)