コード例 #1
0
 def __init__(self, request, vm, *args, **kwargs):
     self.request = request
     self.vm = vm
     self.dc = None
     self.nss = None
     super(VmDcSerializer, self).__init__(*args, **kwargs)
     self.fields['target_dc'].queryset = get_dcs(request)
コード例 #2
0
    def __init__(self, request, name, data):
        super(DcView, self).__init__(request)
        self.data = data
        self.name = name

        if request.user.is_staff:
            self.serializer = SuperDcSerializer

        if self.extended:
            self.serializer = ExtendedDcSerializer
            extra = {'select': ExtendedDcSerializer.extra_select}
        else:
            extra = None

        if name:
            # Return dc from cache (this will also check user permissions for requested DC)
            # We do this because GET is available for anybody
            if request.method == 'GET':
                get_dc(request, name)
            # But we will use this fresh DC object
            self.dc = get_object(request, Dc, {'name': name}, sr=('owner',), extra=extra)
            # Update current datacenter to log tasks for this dc
            request.dc = self.dc

        else:
            # GET many is available for anybody
            if (request.user.is_staff or self.full) or self.extended:
                pr = ('roles',)
            else:
                pr = None

            self.dc = get_dcs(request, sr=('owner',), pr=pr, extra=extra, order_by=self.order_by)
コード例 #3
0
def get_dcs_extended(request, sr=('owner', ), pr=None):
    """
    Return queryset of all DCs including extended stats; used by dc_list view.
    """
    annotation = {
        'vms': Count('vm', distinct=True),
        'dcnodes': Count('dcnode', distinct=True),
    }
    extra = {'select': ExtendedDcSerializer.extra_select}

    return get_dcs(request, sr=sr, pr=pr, annotate=annotation, extra=extra)
コード例 #4
0
    def __init__(self, request, node, data, **kwargs):
        super(BackupFilterForm, self).__init__(data, **kwargs)

        vms = list(node.backup_set.values('vm__hostname', 'vm__alias')
                                  .annotate(bkps=Count('id')).order_by('vm__hostname'))

        vms_list = [('', _('Server (all)'))]

        if vms and not vms[-1]['vm__hostname']:  # We have backups without VM
            no_vm = vms.pop()
            vms_list.append(('novm', _('(no server) (%s)') % no_vm['bkps']))

        self.qs = {}
        self.vm = None
        self.no_vm = False
        self.all_vm = True
        self.fields['dc'].choices = [('', _('Datacenter (all)'))] + list(get_dcs(request).values_list('name', 'alias'))
        self.fields['hostname'].choices = vms_list + [(vm['vm__hostname'], '%s (%s)' % (vm['vm__hostname'], vm['bkps']))
                                                      for vm in vms]
コード例 #5
0
 def __init__(self, request, *args, **kwargs):
     self.request = request
     kwargs['initial'] = {'name': request.dc.name}
     super(DcSwitch, self).__init__(*args, **kwargs)
     self.fields['name'].choices = get_dcs(request).values_list(
         'name', 'alias')