def _create_snapshot(volume_id, size='0'): """Create a snapshot object.""" snap = {} snap['volume_size'] = size snap['user_id'] = 'fake' snap['project_id'] = 'fake' snap['volume_id'] = volume_id snap['status'] = "creating" return db.snapshot_create(context.get_admin_context(), snap)['id']
def _create_snapshot(volume_id, size="0"): """Create a snapshot object.""" snap = {} snap["volume_size"] = size snap["user_id"] = "fake" snap["project_id"] = "fake" snap["volume_id"] = volume_id snap["status"] = "creating" return db.snapshot_create(context.get_admin_context(), snap)["id"]
def test_snapshot_reset_status(self): # admin context ctx = context.RequestContext('admin', 'fake', is_admin=True) ctx.elevated() # add roles # snapshot in 'error_deleting' volume = db.volume_create(ctx, {}) snapshot = db.snapshot_create(ctx, {'status': 'error_deleting', 'volume_id': volume['id']}) req = webob.Request.blank('/v1/fake/snapshots/%s/action' % snapshot['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' # request status of 'error' req.body = jsonutils.dumps({'os-reset_status': {'status': 'error'}}) # attach admin context to request req.environ['nova.context'] = ctx resp = req.get_response(app()) # request is accepted self.assertEquals(resp.status_int, 202) snapshot = db.snapshot_get(ctx, snapshot['id']) # status changed to 'error' self.assertEquals(snapshot['status'], 'error')
def test_invalid_status_for_snapshot(self): # admin context ctx = context.RequestContext('admin', 'fake', is_admin=True) ctx.elevated() # add roles # snapshot in 'available' volume = db.volume_create(ctx, {}) snapshot = db.snapshot_create(ctx, {'status': 'available', 'volume_id': volume['id']}) req = webob.Request.blank('/v1/fake/snapshots/%s/action' % snapshot['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' # 'attaching' is not a valid status for snapshots req.body = jsonutils.dumps({'os-reset_status': {'status': 'attaching'}}) # attach admin context to request req.environ['nova.context'] = ctx resp = req.get_response(app()) # request is accepted print resp self.assertEquals(resp.status_int, 400) snapshot = db.snapshot_get(ctx, snapshot['id']) # status is still 'available' self.assertEquals(snapshot['status'], 'available')