def check_metadata_properties(metadata=None): """Checks that the volume metadata properties are valid.""" if not metadata: metadata = {} for k, v in metadata.items(): if len(k) == 0: msg = _("Metadata property key blank.") LOG.debug(msg) raise exception.InvalidVolumeMetadata(reason=msg) if len(k) > 255: msg = _("Metadata property key %s greater than 255 " "characters.") % k LOG.debug(msg) raise exception.InvalidVolumeMetadataSize(reason=msg) if v is None: msg = _("Metadata property key '%s' value is None.") % k raise exception.InvalidVolumeMetadata(reason=msg) if len(v) > 255: msg = _("Metadata property key %s value greater than " "255 characters.") % k LOG.debug(msg) raise exception.InvalidVolumeMetadataSize(reason=msg)
def _check_metadata_properties(self, metadata=None): if not metadata: metadata = {} for k, v in metadata.iteritems(): if len(k) == 0: msg = _("Metadata property key blank") LOG.warn(msg) raise exception.InvalidVolumeMetadata(reason=msg) if len(k) > 255: msg = _("Metadata property key greater than 255 characters") LOG.warn(msg) raise exception.InvalidVolumeMetadataSize(reason=msg) if len(v) > 255: msg = _("Metadata property value greater than 255 characters") LOG.warn(msg) raise exception.InvalidVolumeMetadataSize(reason=msg)
def _check_metadata_properties(metadata=None): """Checks that the volume metadata properties are valid.""" if not metadata: metadata = {} for (k, v) in metadata.iteritems(): if len(k) == 0: msg = _("Metadata property key blank") LOG.warn(msg) raise exception.InvalidVolumeMetadata(reason=msg) if len(k) > 255: msg = _("Metadata property key %s greater than 255 " "characters") % k LOG.warn(msg) raise exception.InvalidVolumeMetadataSize(reason=msg) if len(v) > 255: msg = _("Metadata property key %s value greater than" " 255 characters") % k LOG.warn(msg) raise exception.InvalidVolumeMetadataSize(reason=msg)
def check_metadata_properties(metadata=None): """Checks that the volume metadata properties are valid.""" if not metadata: metadata = {} for k, v in metadata.items(): try: check_string_length(k, "Metadata key: %s" % k, min_length=1) check_string_length(v, "Value for metadata key: %s" % k) except exception.InvalidInput as exc: raise exception.InvalidVolumeMetadata(reason=exc) # for backward compatibility if len(k) > 255: msg = _("Metadata property key %s greater than 255 " "characters.") % k raise exception.InvalidVolumeMetadataSize(reason=msg) if len(v) > 255: msg = _("Metadata property key %s value greater than " "255 characters.") % k raise exception.InvalidVolumeMetadataSize(reason=msg)
def req(self, object_type='volumes', request_typ='GET', data=None, name=None, idx=None): if name and idx: LOG.error(_("req can't handle both name and index")) raise ValueError("can't handle both name and idx") url = '%s/%s' % (self.base_url, object_type) key = None if name: url = '%s?%s' % (url, urllib.urlencode({'name': name})) key = name elif idx: url = '%s/%d' % (url, idx) key = str(idx) if data and request_typ == 'GET': url + '?' + urllib.urlencode(data) request = urllib2.Request(url) elif data: LOG.debug('data: %s', json.dumps(data)) request = urllib2.Request(url, json.dumps(data)) else: request = urllib2.Request(url) LOG.debug('quering url: %s', url) request.get_method = lambda: request_typ request.add_header("Authorization", "Basic %s" % (self.base64_auth, )) try: response = urllib2.urlopen(request) except (urllib2.HTTPError, ) as exc: if exc.code == 400 and hasattr(exc, 'read'): error = json.load(exc) if error['message'].endswith('obj_not_found'): LOG.warning(_("object %(key)s of type %(typ)s not found"), { 'key': key, 'typ': object_type }) raise exception.NotFound() elif error['message'] == 'vol_obj_name_not_unique': LOG.error(_("can't create 2 volumes with the same name")) raise (exception.InvalidVolumeMetadata( 'Volume by this name already exists')) LOG.error(_('Bad response from XMS\n%s'), exc.read()) raise if response.code >= 300: LOG.error(_('bad API response, %s'), response.msg) raise exception.VolumeBackendAPIException( data='bad response from XMS got http code %d, %s' % (response.code, response.msg)) str_result = response.read() if str_result: try: return json.loads(str_result) except Exception: LOG.exception( _('quering %(typ)s, %(req)s failed to ' 'parse result, return value = %(res)s'), { 'typ': object_type, 'req': request_typ, 'res': str_result })