Example #1
0
    def test_bool_from_string(self):
        true_values = ["True", True, "true", "TRUE", "1", 1, "on", "ON"]

        i = 0
        for value in true_values:
            self.assertTrue(utils.bool_from_string(value), "Got False for value: %r (%d)" % (value, i))
            i = i + 1

        false_values = ["False", False, "false", "T", "F", "FALSE", "0", 0, 9, "off", "OFF"]

        for value in false_values:
            self.assertFalse(utils.bool_from_string(value), "Got True for value: %r" % value)
Example #2
0
    def test_bool_from_string(self):
        true_values = ['True', True, 'true', 'TRUE', '1', 1, 'on', 'ON']

        i = 0
        for value in true_values:
            self.assertTrue(utils.bool_from_string(value),
                            "Got False for value: %r (%d)" % (value, i))
            i = i + 1

        false_values = [
            'False', False, 'false', 'T', 'F', 'FALSE', '0', 0, 9, 'off', 'OFF'
        ]

        for value in false_values:
            self.assertFalse(utils.bool_from_string(value),
                             "Got True for value: %r" % value)
Example #3
0
    def update(self, req, id, image_meta, image_data):
        """
        Updates an existing image with the registry.

        :param request: The WSGI/Webob Request object
        :param id: The opaque image identifier

        :retval Returns the updated image information as a mapping
        """
        if req.context.read_only:
            msg = _("Read-only access")
            logger.debug(msg)
            raise HTTPForbidden(msg, request=req,
                                content_type="text/plain")

        orig_image_meta = self.get_image_meta_or_404(req, id)
        orig_status = orig_image_meta['status']

        # The default behaviour for a PUT /images/<IMAGE_ID> is to
        # override any properties that were previously set. This, however,
        # leads to a number of issues for the common use case where a caller
        # registers an image with some properties and then almost immediately
        # uploads an image file along with some more properties. Here, we
        # check for a special header value to be false in order to force
        # properties NOT to be purged. However we also disable purging of
        # properties if an image file is being uploaded...
        purge_props = req.headers.get('x-tank-registry-purge-props', True)
        purge_props = (utils.bool_from_string(purge_props) and
                       image_data is None)

        if image_data is not None and orig_status != 'queued':
            raise HTTPConflict(_("Cannot upload to an unqueued image"))

        try:
            image_meta = registry.update_image_metadata(req.context, id,
                                                        image_meta,
                                                        purge_props)
            if image_data is not None:
                image_meta = self._upload_and_activate(req, image_meta)
        except exception.Invalid, e:
            msg = (_("Failed to update image metadata. Got error: %(e)s")
                   % locals())
            for line in msg.split('\n'):
                logger.error(line)
            self.notifier.error('image.update', msg)
            raise HTTPBadRequest(msg, request=req, content_type="text/plain")
Example #4
0
 def _parse_deleted_filter(self, req):
     """Parse deleted into something usable."""
     deleted = req.str_params.get('deleted')
     if deleted is None:
         return None
     return utils.bool_from_string(deleted)
Example #5
0
 def _parse_deleted_filter(self, req):
     """Parse deleted into something usable."""
     deleted = req.str_params.get('deleted')
     if deleted is None:
         return None
     return utils.bool_from_string(deleted)