Beispiel #1
0
    def __init__(self, request, name, data, many=False):
        super(GroupView, self).__init__(request)
        self.name = name
        self.data = data
        self.many = many
        sr = ('dc_bound', )

        if self.extended:
            self.serializer = ExtendedGroupSerializer

        if name:
            self.group = get_virt_object(request,
                                         Role,
                                         data=data,
                                         sr=sr,
                                         name=name)
        else:
            if self.full or self.extended:
                pr = ['permissions', 'user_set']

                if self.extended:
                    pr.append('dc_set')
            else:
                sr = ()
                pr = ()

            self.group = get_virt_object(request,
                                         Role,
                                         data=data,
                                         sr=sr,
                                         pr=pr,
                                         many=True)
Beispiel #2
0
def get_user_profiles(request, where=None, **kwargs):
    if where:
        where = where & ExcludeInternalProfileUsers
    else:
        where = ExcludeInternalProfileUsers

    return get_virt_object(request, UserProfile, many=True, where=where, **kwargs)
Beispiel #3
0
 def __init__(self, request, name, data):
     super(TemplateVmView, self).__init__(request)
     self.name = name
     self.data = data
     self.template = get_virt_object(request,
                                     VmTemplate,
                                     data=data,
                                     name=name)
Beispiel #4
0
    def __init__(self, request, name, data):
        super(ImageView, self).__init__(request)
        self.data = data
        self.name = name

        if self.extended:
            pr = ('dc',)
            self.ser_class = ExtendedImageSerializer
        else:
            pr = ()
            self.ser_class = ImageSerializer

        self.img = get_virt_object(request, Image, data=data, pr=pr, many=not name, name=name, order_by=self.order_by)
Beispiel #5
0
def get_user(request, username, where=None, sr=('dc_bound',), **kwargs):
    user = request.user

    if where:
        where = where & ExcludeInternalUsers
    else:
        where = ExcludeInternalUsers

    if getattr(request, 'is_profile_owner', False):
        if user.username == username:  # IsProfileOwner
            return get_object(request, User, {'username': username}, where=where, sr=sr, **kwargs)
        else:
            raise PermissionDenied
    else:  # Is SuperAdmin or UserAdmin
        return get_virt_object(request, User, sr=sr, get_attrs={'username': username}, where=where, **kwargs)
Beispiel #6
0
    def __init__(self, request, name, data):
        super(TemplateView, self).__init__(request)
        self.data = data
        self.name = name

        if self.extended:
            pr = ('dc', )
            self.ser_class = ExtendedTemplateSerializer
        else:
            pr = ()
            self.ser_class = TemplateSerializer

        self.template = get_virt_object(request,
                                        VmTemplate,
                                        data=data,
                                        pr=pr,
                                        many=not name,
                                        name=name,
                                        order_by=self.order_by)
Beispiel #7
0
    def __init__(self, request, name, data):
        super(NetworkView, self).__init__(request)
        self.data = data
        self.name = name

        if self.extended:
            pr = ('dc', )
            self.ser_class = ExtendedNetworkSerializer
            extra = {'select': ExtendedNetworkSerializer.extra_select}
        else:
            pr = ()
            self.ser_class = NetworkSerializer
            extra = None

        self.net = get_virt_object(request,
                                   Subnet,
                                   data=data,
                                   pr=pr,
                                   extra=extra,
                                   many=not name,
                                   name=name,
                                   order_by=self.order_by)
Beispiel #8
0
    def __init__(self, request, name, ip, data, dc=None, many=False):
        super(NetworkIPView, self).__init__(request)
        self.data = data
        self.many = many
        self.dc = dc
        net_filter = {'name': name}
        ip_filter = []

        if dc:
            net_filter['dc'] = dc
            ip_filter.append(Q(usage__in=[IPAddress.VM, IPAddress.VM_REAL]))
            ip_filter.append((Q(vm__isnull=False) & Q(vm__dc=dc))
                             | (~Q(vms=None) & Q(vms__dc=dc)))
        elif not request.user.is_staff:
            ip_filter.append(~Q(usage=IPAddress.NODE))

        self.net = net = get_virt_object(request,
                                         Subnet,
                                         data=data,
                                         sr=('dc_bound', ),
                                         get_attrs=net_filter,
                                         exists_ok=True,
                                         noexists_fail=True)
        ip_filter.append(Q(subnet=net))

        if many:
            self.ips = ips = data.get('ips', None)

            if ips is not None:
                if not isinstance(ips, (tuple, list)):
                    raise InvalidInput('Invalid ips')
                ip_filter.append(Q(ip__in=ips))

            if request.method == 'GET':
                usage = data.get('usage', None)

                if usage and not dc:
                    try:
                        usage = int(usage)
                        if usage not in dict(IPAddress.USAGE_REAL):
                            raise ValueError
                    except ValueError:
                        raise InvalidInput('Invalid usage')
                    else:
                        ip_filter.append(Q(usage=usage))

            try:
                ip_filter = reduce(operator.and_, ip_filter)
                self.ip = IPAddress.objects.select_related('vm', 'vm__dc', 'subnet')\
                                           .prefetch_related('vms', 'vms__dc')\
                                           .filter(ip_filter)\
                                           .order_by(*self.order_by).distinct()
            except TypeError:
                raise InvalidInput('Invalid ips')

        else:
            ip_filter = reduce(operator.and_, ip_filter)
            self.ip = get_object(request,
                                 IPAddress, {'ip': ip},
                                 where=ip_filter,
                                 sr=('vm', 'vm__dc', 'subnet'))
Beispiel #9
0
 def __init__(self, request, name, data):
     super(NetworkVmView, self).__init__(request)
     self.name = name
     self.data = data
     self.net = get_virt_object(request, Subnet, data=data, name=name)
Beispiel #10
0
 def __init__(self, request, name, data):
     super(ImageVmView, self).__init__(request)
     self.name = name
     self.data = data
     self.img = get_virt_object(request, Image, data=data, name=name)