Merge "Fix scrubber start & not scrubbing when not daemon"

This commit is contained in:
Jenkins 2012-09-19 15:23:28 +00:00 committed by Gerrit Code Review
commit 31338e4ac7
4 changed files with 58 additions and 2 deletions

View File

@ -66,6 +66,6 @@ if __name__ == '__main__':
else:
import eventlet
pool = eventlet.greenpool.GreenPool(1000)
scrubber = app().run(pool)
scrubber = app.run(pool)
except RuntimeError, e:
sys.exit("ERROR: %s" % e)

View File

@ -122,6 +122,9 @@ class Scrubber(object):
LOG.info(_("Deleting %s images") % len(delete_work))
pool.starmap(self._delete, delete_work)
# NOTE(bourke): When not running as a daemon, a slight pause is needed
# to allow the starmap to begin it's work.
eventlet.sleep(0.1)
if self.cleanup:
self._cleanup(pool)

View File

@ -227,6 +227,7 @@ class ApiServer(Server):
self.delayed_delete = delayed_delete
self.owner_is_tenant = True
self.workers = 0
self.scrub_time = 5
self.image_cache_dir = os.path.join(self.test_dir,
'cache')
self.image_cache_driver = 'sqlite'
@ -272,7 +273,7 @@ rbd_store_ceph_conf = %(rbd_store_ceph_conf)s
delayed_delete = %(delayed_delete)s
owner_is_tenant = %(owner_is_tenant)s
workers = %(workers)s
scrub_time = 5
scrub_time = %(scrub_time)s
scrubber_datadir = %(scrubber_datadir)s
image_cache_dir = %(image_cache_dir)s
image_cache_driver = %(image_cache_driver)s

View File

@ -21,6 +21,7 @@ from glance.tests import functional
from glance import client
from glance.registry import client as registry_client
from glance.tests.utils import execute
TEST_IMAGE_DATA = '*' * 5 * 1024
@ -125,3 +126,54 @@ class TestScrubber(functional.FunctionalTest):
self.assertEqual(rec['status'], 'deleted')
self.stop_servers()
def test_scrubber_app(self):
"""
test that the glance-scrubber script runs successfully when not in
daemon mode
"""
self.cleanup()
self.start_servers(delayed_delete=True, daemon=False)
client = self._get_client()
registry = self._get_registry_client()
# add some images and ensure it was successful
img_ids = []
for i in range(0, 3):
meta = client.add_image(TEST_IMAGE_META, TEST_IMAGE_DATA)
id = meta['id']
img_ids.append(id)
filters = {'deleted': True, 'is_public': 'none',
'status': 'pending_delete'}
recs = registry.get_images_detailed(filters=filters)
self.assertFalse(recs)
# delete those images
for img_id in img_ids:
client.delete_image(img_id)
recs = registry.get_images_detailed(filters=filters)
self.assertTrue(recs)
filters = {'deleted': True, 'is_public': 'none'}
recs = registry.get_images_detailed(filters=filters)
self.assertTrue(recs)
for rec in recs:
self.assertEqual(rec['status'], 'pending_delete')
# wait for the scrub time on the image to pass
time.sleep(self.api_server.scrub_time)
# scrub images and make sure they get deleted
cmd = ("bin/glance-scrubber --config-file %s" %
self.scrubber_daemon.conf_file_name)
exitcode, out, err = execute(cmd, raise_error=False)
self.assertEqual(0, exitcode)
filters = {'deleted': True, 'is_public': 'none'}
recs = registry.get_images_detailed(filters=filters)
self.assertTrue(recs)
for rec in recs:
self.assertEqual(rec['status'], 'deleted')
self.stop_servers()