Merge "Fix scrubber start & not scrubbing when not daemon"
This commit is contained in:
commit
31338e4ac7
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user