コード例 #1
0
    def get(self, request, *args, **kwargs):
        center_id = str_to_int_or_default(request.GET.get('center_id', 0), 0)

        groups = None
        images = None
        try:
            c_manager = CenterManager()
            centers = c_manager.get_center_queryset()
            if center_id == 0:
                if len(centers) > 0:
                    center_id = centers.first().id

            if center_id > 0:
                images = ImageManager().get_image_queryset_by_center(
                    center_id).filter(tag=Image.TAG_BASE)
                groups = c_manager.get_user_group_queryset_by_center(
                    center_id, user=request.user)
        except (ComputeError, ImageError) as e:
            return render(request, 'error.html',
                          {'errors': ['查询分中心列表时错误', str(e)]})

        context = {}
        context['center_id'] = center_id if center_id > 0 else None
        context['centers'] = centers
        context['groups'] = groups
        context['image_tags'] = Image.CHOICES_TAG
        context['images'] = images
        context['flavors'] = FlavorManager().get_user_flaver_queryset(
            user=request.user)
        return render(request, 'vms_create.html', context=context)
コード例 #2
0
    def get(self, request, *args, **kwargs):
        center_id = str_to_int_or_default(request.GET.get('center', 0), 0)
        group_id = str_to_int_or_default(request.GET.get('group', 0), 0)
        host_id = str_to_int_or_default(request.GET.get('host', 0), 0)
        user_id = str_to_int_or_default(request.GET.get('user', 0), 0)
        search = request.GET.get('search', '')

        # 超级用户可以有用户下拉框选项
        auth = request.user
        if auth.is_superuser:
            users = User.objects.all()
        else:  # 普通用户只能查看自己的虚拟机,无用户下拉框选项
            users = None
            user_id = auth.id

        v_manager = VmManager()
        try:
            queryset = v_manager.filter_vms_queryset(
                center_id=center_id,
                group_id=group_id,
                host_id=host_id,
                search=search,
                user_id=user_id,
                all_no_filters=auth.is_superuser)
        except VmError as e:
            return render(request, 'error.html',
                          {'errors': ['查询虚拟机时错误', str(e)]})

        queryset = queryset.prefetch_related('vdisk_set')  # 反向预查询硬盘(避免多次访问数据库)
        try:
            c_manager = CenterManager()
            g_manager = GroupManager()
            centers = c_manager.get_center_queryset()
            if center_id > 0:
                groups = c_manager.get_group_queryset_by_center(center_id)
            else:
                groups = g_manager.get_group_queryset()

            if group_id > 0:
                hosts = g_manager.get_all_host_queryset_by_group(group_id)
            else:
                hosts = None
        except ComputeError as e:
            return render(request, 'error.html',
                          {'errors': ['查询虚拟机时错误', str(e)]})

        context = {
            'center_id': center_id if center_id > 0 else None,
            'centers': centers,
            'groups': groups,
            'group_id': group_id if group_id > 0 else None,
            'hosts': hosts,
            'host_id': host_id if host_id > 0 else None,
            'search': search,
            'users': users,
            'user_id': user_id
        }
        context = self.get_vms_list_context(request, queryset, context)
        return render(request, 'vms_list.html', context=context)
コード例 #3
0
    def get(self, request, *args, **kwargs):
        center_id = str_to_int_or_default(request.GET.get('center', 0), 0)
        group_id = str_to_int_or_default(request.GET.get('group', 0), 0)
        quota_id = str_to_int_or_default(request.GET.get('quota', 0), 0)
        user_id = str_to_int_or_default(request.GET.get('user', 0), 0)
        search = request.GET.get('search', '')

        # 超级用户可以有用户下拉框选项
        auth = request.user
        if auth.is_superuser:
            users = User.objects.all()
        else:  # 普通用户只能查看自己的虚拟机,无用户下拉框选项
            users = None
            user_id = auth.id

        manager = VdiskManager()
        try:
            queryset = manager.filter_vdisk_queryset(
                center_id=center_id,
                group_id=group_id,
                quota_id=quota_id,
                search=search,
                user_id=user_id,
                all_no_filters=auth.is_superuser)
        except VdiskError as e:
            return render(request, 'error.html',
                          {'errors': ['查询云硬盘时错误', str(e)]})

        try:
            c_manager = CenterManager()
            centers = c_manager.get_center_queryset()
            if center_id > 0:
                groups = c_manager.get_group_queryset_by_center(center_id)
            else:
                groups = GroupManager().get_group_queryset()
        except ComputeError as e:
            return render(request, 'error.html',
                          {'errors': ['查询机组时错误', str(e)]})

        if group_id > 0:
            quotas = manager.get_quota_queryset_by_group(group_id)
        else:
            quotas = None

        context = {}
        context['center_id'] = center_id if center_id > 0 else None
        context['centers'] = centers
        context['groups'] = groups
        context['group_id'] = group_id if group_id > 0 else None
        context['quotas'] = quotas
        context['quota_id'] = quota_id if quota_id > 0 else None
        context['search'] = search
        context['users'] = users
        context['user_id'] = user_id
        context = self.get_disks_list_context(request, queryset, context)
        return render(request, 'vdisk_list.html', context=context)
コード例 #4
0
    def get(self, request, *args, **kwargs):
        center_id = str_to_int_or_default(request.GET.get('center', 0), 0)
        group_id = str_to_int_or_default(request.GET.get('group', 0), 0)
        host_id = str_to_int_or_default(request.GET.get('host', 0), 0)
        type_id = str_to_int_or_default(request.GET.get('type', 0), 0)
        search = request.GET.get('search', '')
        user = request.user

        c_manager = CenterManager()
        g_manager = GroupManager()
        p_manager = PCIDeviceManager()
        p_manager._group_manager = g_manager
        try:
            queryset = p_manager.filter_pci_queryset(center_id=center_id,
                                                     group_id=group_id,
                                                     host_id=host_id,
                                                     search=search,
                                                     type_id=type_id,
                                                     user=user,
                                                     all_no_filters=True)
        except DeviceError as e:
            return render(request, 'error.html',
                          {'errors': ['查询PCI设备时错误', str(e)]})

        try:
            centers = c_manager.get_center_queryset()
            if center_id > 0:
                groups = c_manager.get_user_group_queryset_by_center(
                    center_or_id=center_id, user=user)
            else:
                groups = c_manager.get_user_group_queryset(user=user)

            if group_id > 0:
                hosts = g_manager.get_all_host_queryset_by_group(group_id)
            else:
                hosts = None
        except ComputeError as e:
            return render(request, 'error.html',
                          {'errors': ['查询PCI设备时错误', str(e)]})

        context = {
            'center_id': center_id if center_id > 0 else None,
            'centers': centers,
            'groups': groups,
            'group_id': group_id if group_id > 0 else None,
            'hosts': hosts,
            'host_id': host_id if host_id > 0 else None,
            'search': search,
            'types': PCIDevice.CHOICES_TYPE,
            'type_id': type_id
        }
        context = self.get_vms_list_context(request, queryset, context)
        return render(request, 'pci_list.html', context=context)
コード例 #5
0
    def get(self, request, *args, **kwargs):
        center_id = str_to_int_or_default(request.GET.get('center_id', 0), 0)

        try:
            c_manager = CenterManager()
            centers = c_manager.get_center_queryset()
            groups = None
            if center_id > 0:
                groups = c_manager.get_user_group_queryset_by_center(
                    center_id, user=request.user)
        except ComputeError as e:
            return render(request, 'error.html',
                          {'errors': ['查询分中心列表时错误', str(e)]})

        context = {}
        context['center_id'] = center_id if center_id > 0 else None
        context['centers'] = centers
        context['groups'] = groups
        return render(request, 'vdisk_create.html', context=context)