def create(self, req, body): """Creates a new snapshot.""" context = req.environ["cinder.context"] if not self.is_valid_body(body, "snapshot"): raise exc.HTTPUnprocessableEntity() snapshot = body["snapshot"] volume_id = snapshot["volume_id"] volume = self.volume_api.get(context, volume_id) force = snapshot.get("force", False) msg = _("Create snapshot from volume %s") LOG.audit(msg, volume_id, context=context) if not utils.is_valid_boolstr(force): msg = _("Invalid value '%s' for force. ") % force raise exception.InvalidParameterValue(err=msg) if utils.bool_from_str(force): new_snapshot = self.volume_api.create_snapshot_force( context, volume, snapshot.get("display_name"), snapshot.get("display_description") ) else: new_snapshot = self.volume_api.create_snapshot( context, volume, snapshot.get("display_name"), snapshot.get("display_description") ) retval = _translate_snapshot_detail_view(context, new_snapshot) return {"snapshot": retval}
def create(self, req, body): """Creates a new snapshot.""" context = req.environ['cinder.context'] if not self.is_valid_body(body, 'snapshot'): raise exc.HTTPUnprocessableEntity() snapshot = body['snapshot'] volume_id = snapshot['volume_id'] volume = self.volume_api.get(context, volume_id) force = snapshot.get('force', False) msg = _("Create snapshot from volume %s") LOG.audit(msg, volume_id, context=context) if not utils.is_valid_boolstr(force): msg = _("Invalid value '%s' for force. ") % force raise exception.InvalidParameterValue(err=msg) if utils.bool_from_str(force): new_snapshot = self.volume_api.create_snapshot_force(context, volume, snapshot.get('display_name'), snapshot.get('display_description')) else: new_snapshot = self.volume_api.create_snapshot(context, volume, snapshot.get('display_name'), snapshot.get('display_description')) retval = _translate_snapshot_detail_view(context, new_snapshot) return {'snapshot': retval}
def create(self, req, body): """Creates a new snapshot.""" kwargs = {} context = req.environ['cinder.context'] if not self.is_valid_body(body, 'snapshot'): raise exc.HTTPBadRequest() snapshot = body['snapshot'] kwargs['metadata'] = snapshot.get('metadata', None) volume_id = snapshot['volume_id'] volume = self.volume_api.get(context, volume_id) force = snapshot.get('force', False) msg = _("Create snapshot from volume %s") LOG.audit(msg, volume_id, context=context) # NOTE(thingee): v2 API allows name instead of display_name if 'name' in snapshot: snapshot['display_name'] = snapshot.get('name') del snapshot['name'] if not utils.is_valid_boolstr(force): msg = _("Invalid value '%s' for force. ") % force raise exception.InvalidParameterValue(err=msg) if utils.bool_from_str(force): new_snapshot = self.volume_api.create_snapshot_force( context, volume, snapshot.get('display_name'), snapshot.get('description'), **kwargs) else: new_snapshot = self.volume_api.create_snapshot( context, volume, snapshot.get('display_name'), snapshot.get('description'), **kwargs) retval = _translate_snapshot_detail_view(context, new_snapshot) return {'snapshot': retval}
def test_bool_from_str(self): self.assertTrue(utils.bool_from_str('1')) self.assertTrue(utils.bool_from_str('2')) self.assertTrue(utils.bool_from_str('-1')) self.assertTrue(utils.bool_from_str('true')) self.assertTrue(utils.bool_from_str('True')) self.assertTrue(utils.bool_from_str('tRuE')) self.assertFalse(utils.bool_from_str('False')) self.assertFalse(utils.bool_from_str('false')) self.assertFalse(utils.bool_from_str('0')) self.assertFalse(utils.bool_from_str(None)) self.assertFalse(utils.bool_from_str('junk'))