Пример #1
0
    def test_filter_murano_images(self, mock_log):
        mock_blank_img = \
            mock.MagicMock(id=13, properties={"murano_image_info": "info"})
        images = [mock_blank_img]
        msg = _('Invalid metadata for image: {0}').format(images[0].id)
        self.assertEqual(images,
                         forms.filter_murano_images(images, self.mock_request))
        mock_log.warning.assert_called_once_with(msg)

        images = [self.mock_img]
        self.assertEqual(images, forms.filter_murano_images(images))
Пример #2
0
    def test_filter_murano_images(self, mock_log):
        mock_blank_img = \
            mock.MagicMock(id=13, murano_image_info="info")
        images = [mock_blank_img]
        msg = _('Invalid metadata for image: {0}').format(images[0].id)
        self.assertEqual(images,
                         forms.filter_murano_images(images, self.mock_request))
        mock_log.warning.assert_called_once_with(msg)

        images = [self.mock_img]
        self.assertEqual(images, forms.filter_murano_images(images))

        murano_meta = '{"title": "title", "type": "type"}'

        mock_snapshot_img = mock.MagicMock(
            id=14, murano_image_info=murano_meta, image_type='snapshot')
        images = [mock_snapshot_img]
        self.assertEqual([],
                         forms.filter_murano_images(images, self.mock_request))
Пример #3
0
    def get_data(self):
        prev_marker = self.request.GET.get(
            tables.MarkedImagesTable._meta.prev_pagination_param, None)

        if prev_marker is not None:
            sort_dir = 'asc'
            marker = prev_marker
        else:
            sort_dir = 'desc'
            marker = self.request.GET.get(
                tables.MarkedImagesTable._meta.pagination_param, None)

        page_size = utils.get_page_size(self.request)

        request_size = page_size + 1
        kwargs = {'filters': {}}
        if marker:
            kwargs['marker'] = marker
        kwargs['sort_dir'] = sort_dir
        images = []
        self._prev = False
        self._more = False

        glance_v2_client = glance.glanceclient(self.request, "2")

        try:
            images_iter = glance_v2_client.images.list(
                **kwargs)
        except Exception:
            msg = _('Unable to retrieve list of images')
            uri = reverse('horizon:app-catalog:catalog:index')

            exceptions.handle(self.request, msg, redirect=uri)

        marked_images_iter = forms.filter_murano_images(
            images_iter,
            request=self.request)
        images = list(itertools.islice(marked_images_iter, request_size))
        # first and middle page condition
        if len(images) > page_size:
            images.pop(-1)
            self._more = True
            # middle page condition
            if marker is not None:
                self._prev = True
        # first page condition when reached via prev back
        elif sort_dir == 'asc' and marker is not None:
            self._more = True
        # last page condition
        elif marker is not None:
            self._prev = True
        if prev_marker is not None:
            images.reverse()
        return images
Пример #4
0
    def test_filter_murano_images(self, mock_log):
        mock_blank_img = \
            mock.MagicMock(id=13, murano_image_info="info")
        images = [mock_blank_img]
        msg = _('Invalid metadata for image: {0}').format(images[0].id)
        self.assertEqual(images,
                         forms.filter_murano_images(images, self.mock_request))
        mock_log.warning.assert_called_once_with(msg)

        images = [self.mock_img]
        self.assertEqual(images, forms.filter_murano_images(images))

        murano_meta = '{"title": "title", "type": "type"}'

        mock_snapshot_img = mock.MagicMock(id=14,
                                           murano_image_info=murano_meta,
                                           image_type='snapshot')
        images = [mock_snapshot_img]
        self.assertEqual([],
                         forms.filter_murano_images(images, self.mock_request))
Пример #5
0
    def get_data(self):
        prev_marker = self.request.GET.get(
            tables.MarkedImagesTable._meta.prev_pagination_param, None)

        if prev_marker is not None:
            sort_dir = 'asc'
            marker = prev_marker
        else:
            sort_dir = 'desc'
            marker = self.request.GET.get(
                tables.MarkedImagesTable._meta.pagination_param, None)

        page_size = utils.get_page_size(self.request)

        request_size = page_size + 1
        kwargs = {'filters': {}}
        if marker:
            kwargs['marker'] = marker
        kwargs['sort_dir'] = sort_dir
        images = []
        self._prev = False
        self._more = False

        glance_v2_client = glance.glanceclient(self.request, "2")

        try:
            images_iter = glance_v2_client.images.list(**kwargs)
        except Exception:
            msg = _('Unable to retrieve list of images')
            uri = reverse('horizon:app-catalog:catalog:index')

            exceptions.handle(self.request, msg, redirect=uri)

        marked_images_iter = forms.filter_murano_images(images_iter,
                                                        request=self.request)
        images = list(itertools.islice(marked_images_iter, request_size))
        # first and middle page condition
        if len(images) > page_size:
            images.pop(-1)
            self._more = True
            # middle page condition
            if marker is not None:
                self._prev = True
        # first page condition when reached via prev back
        elif sort_dir == 'asc' and marker is not None:
            self._more = True
        # last page condition
        elif marker is not None:
            self._prev = True
        if prev_marker is not None:
            images.reverse()
        return images
Пример #6
0
    def get_data(self):
        images = []
        try:
            # https://bugs.launchpad.net/murano/+bug/1339261 - glance
            # client version change alters the API. Other tuple values
            # are _more and _prev (in recent glance client)
            images = glance.image_list_detailed(self.request)[0]
        except Exception:
            msg = _('Unable to retrieve list of images')
            uri = reverse('horizon:murano:images:index')

            exceptions.handle(self.request, msg, redirect=uri)
        return forms.filter_murano_images(images, request=self.request)
Пример #7
0
    def get_data(self):
        prev_marker = self.request.GET.get(
            tables.MarkedImagesTable._meta.prev_pagination_param, None)

        if prev_marker is not None:
            sort_dir = 'asc'
            marker = prev_marker
        else:
            sort_dir = 'desc'
            marker = self.request.GET.get(
                tables.MarkedImagesTable._meta.pagination_param, None)

        page_size = utils.get_page_size(self.request)

        request_size = page_size + 1
        kwargs = {'filters': {}}
        if marker:
            kwargs['marker'] = marker
        kwargs['sort_dir'] = sort_dir
        images = []
        self._prev = False
        self._more = False

        # TODO(kzaitsev) add v2 client support for marking images
        try:
            glance_v1_client = glance.glanceclient(self.request, "1")
        except Exception:
            # Horizon seems to raise ImportError which doesn't look
            # specific enough. Let's catch any exceptions.
            msg = _('Unable to create v1 glance client. Marking images '
                    'from murano-dashboard will be unavailable.')
            uri = reverse('horizon:app-catalog:catalog:index')

            exceptions.handle(self.request, msg, redirect=uri)

        try:
            images_iter = glance_v1_client.images.list(**kwargs)
        except Exception:
            msg = _('Unable to retrieve list of images')
            uri = reverse('horizon:app-catalog:catalog:index')

            exceptions.handle(self.request, msg, redirect=uri)

        marked_images_iter = forms.filter_murano_images(images_iter,
                                                        request=self.request)
        images = list(itertools.islice(marked_images_iter, request_size))
        # first and middle page condition
        if len(images) > page_size:
            images.pop(-1)
            self._more = True
            # middle page condition
            if marker is not None:
                self._prev = True
        # first page condition when reached via prev back
        elif sort_dir == 'asc' and marker is not None:
            self._more = True
        # last page condition
        elif marker is not None:
            self._prev = True
        if prev_marker is not None:
            images.reverse()
        return images