@click.command()
+@click.option(
+ '--ci-managed', type=bool, default=True,
+ help='Filter only images that have the ci_managed=yes metadata set.')
@click.option(
'--days', type=int, default=0,
help='Find images older than or equal to days.')
help=('Clouds (as defined in clouds.yaml) to remove images from. If not'
'passed will assume from os-cloud parameter. (optional)'))
@click.pass_context
-def cleanup(ctx, days, hide_public, clouds):
+def cleanup(ctx, days, hide_public, ci_managed, clouds):
"""Cleanup old images."""
os_image.cleanup(
ctx.obj['os_cloud'],
+ ci_managed=ci_managed,
days=days,
hide_public=hide_public,
clouds=clouds)
@click.command()
+@click.option(
+ '--ci-managed', type=bool, default=True,
+ help='Filter only images that have the ci_managed=yes metadata set.')
@click.option(
'--days', type=int, default=0,
help='Find images older than or equal to days.')
'--hide-public', type=bool, default=False,
help='Ignore public images.')
@click.pass_context
-def list(ctx, days, hide_public):
+def list(ctx, days, hide_public, ci_managed):
"""List cloud images."""
os_image.list(
ctx.obj['os_cloud'],
+ ci_managed=ci_managed,
days=days,
hide_public=hide_public)
import shade
-def _filter_images(images, days=0, hide_public=False):
+def _filter_images(images, days=0, hide_public=False, ci_managed=True):
"""Filter image data and return list.
+ :arg bool ci_managed: Filters images with metadata set to `ci_managed=yes`.
+ (Default: true)
:arg bool hide_public: Whether or not to include public images.
"""
filtered = []
for image in images:
if hide_public and image.is_public:
continue
+ if ci_managed and image.metadata.get('ci_managed', None) != 'yes':
+ continue
if days and (
datetime.strptime(image.created_at, '%Y-%m-%dT%H:%M:%SZ')
>= datetime.now() - timedelta(days=days)):
return filtered
-def list(os_cloud, days=0, hide_public=False):
+def list(os_cloud, days=0, hide_public=False, ci_managed=True):
"""List images found according to parameters."""
cloud = shade.openstack_cloud(cloud=os_cloud)
images = cloud.list_images()
- filtered_images = _filter_images(images, days, hide_public)
+ filtered_images = _filter_images(images, days, hide_public, ci_managed)
for image in filtered_images:
print(image.name)
-def cleanup(os_cloud, days=0, hide_public=False, clouds=None):
+def cleanup(os_cloud, days=0, hide_public=False, ci_managed=True, clouds=None):
"""Remove image from cloud.
:arg str os_cloud: Cloud name as defined in OpenStack clouds.yaml.
+ :arg bool ci_managed: Filters images with metadata set to `ci_managed=yes`.
+ (Default: true)
:arg int days: Filter images that are older than number of days.
:arg bool hide_public: If true, will ignore public images. (Default: false)
:arg str clouds: If passed, comma-separated list of clouds to remove image
cloud_list.append(shade.openstack_cloud(cloud=c))
images = cloud.list_images()
- filtered_images = _filter_images(images, days, hide_public)
+ filtered_images = _filter_images(images, days, hide_public, ci_managed)
if clouds:
for c in cloud_list: