Beispiel #1
0
    def list(self, request):
        """List all dns zones belonging to a region"""
        serializer = DnsFilterSerializer(data=request.query_params)
        serializer.is_valid(raise_exception=True)

        api_session = get_api_session(request)
        designate = designate_client(api_session,
                                     region_name=serializer.validated_data.pop(
                                         'region_name', None))
        search_params, page_limit, custom_filtering_params = get_filter_params(
            request)
        criterion = {**search_params, **serializer.validated_data}

        try:
            zones = designate.zones.list(criterion=criterion, limit=page_limit)
        except (designate_exceptions.NotFound,
                designate_exceptions.ResourceNotFound) as e:
            LOG.error(e)
            raise NotFound(detail=_('No zones found'))
        except (designate_exceptions.Base, ClientException) as e:
            LOG.error('Unable to list zones, reason {0}'.format(e))
            raise ValidationError(detail=_(
                'Unable to list zones. Please contact support for more info'))
        else:
            rsp = {
                'objects':
                DnsSerializer(instance=zones, many=True).data,
                'permissions':
                permissions_cache.get_view_permissions(request.user,
                                                       self.basename),
                'hasMore':
                zones.next_page
            }
            return Response(rsp)
Beispiel #2
0
 def list(self, request, *args, **kwargs):
     response = super().list(request=request, *args, **kwargs)
     response.data['permissions'] = permissions_cache.get_view_permissions(
         request.user, self.basename)
     # TODO(manu): remove region choices once filtering in frontend is based on records search
     region_name, region_options = self.get_regions(request)
     region_filtering_options = []
     for region in region_options:
         region_filtering_options.append({
             'display': region['id'],
             'value': region['id'],
         })
     filter_options = {
         'region':
         region_filtering_options,
         'status':
         statuses_dict_to_statuses_choices(
             InstanceStatus.status_map.items()),
         'task_state':
         statuses_dict_to_statuses_choices(
             InstanceTask.task_state_filtering_opts_map.items())
     }
     response.data['filter_options'] = filter_options
     return response
Beispiel #3
0
 def permissions(self, request):
     view_permissions = permissions_cache.get_view_permissions(
         request.user, self.basename)
     return Response(data=view_permissions)
Beispiel #4
0
 def list(self, request, *args, **kwargs):
     response = super().list(request=request, *args, **kwargs)
     response.data['permissions'] = permissions_cache.get_view_permissions(
         request.user, self.basename)
     return response