diff --git a/README.rst b/README.rst index 86bb7196ac05c2e166a24c2c7cb791588a2d9845..4faab8ca4a0d1fbcf4e4479e08e59994d7268057 100644 --- a/README.rst +++ b/README.rst @@ -10,4 +10,4 @@ TODO - Changelog. - README, - Testing with different Python versions with tox and flake8. -- Specify number of versions to keep. +- Specify number of versions to keep, dry-run option. diff --git a/eb_prune/__init__.py b/eb_prune/__init__.py index 8d8d7f55493b9b985f925ec4dc12255bc7ca3c96..c13e76c41de41b9f77e5d9ae74a2e94569da6f8f 100644 --- a/eb_prune/__init__.py +++ b/eb_prune/__init__.py @@ -6,6 +6,8 @@ from botocore import session def main(): + versions_to_keep = 400 + dry_run = False print('Pruning Elastic Beanstalk versions.') aws_session = session.get_session() beanstalk_client = aws_session.create_client('elasticbeanstalk') @@ -21,16 +23,18 @@ def main(): lambda x: (not x['VersionLabel'] in active_versions) and x['Status'] == 'UNPROCESSED', versions) old_versions = sorted(previous_versions, - key=lambda x: x.get('DateCreated'))[:-400] + key=lambda x: + x.get('DateCreated'))[:-versions_to_keep] for version in old_versions: - response = beanstalk_client.delete_application_version( - ApplicationName=version['ApplicationName'], - VersionLabel=version['VersionLabel'], - DeleteSourceBundle=True) - if response['ResponseMetadata']['HTTPStatusCode'] != 200: - raise RuntimeError( - 'Failed to delete version {0}.'.format( - version['VersionLabel'])) + if not dry_run: + response = beanstalk_client.delete_application_version( + ApplicationName=version['ApplicationName'], + VersionLabel=version['VersionLabel'], + DeleteSourceBundle=True) + if response['ResponseMetadata']['HTTPStatusCode'] != 200: + raise RuntimeError( + 'Failed to delete version {0}.'.format( + version['VersionLabel'])) print('Deleted version {0} of {1}.'.format(version['VersionLabel'], version['ApplicationName'])) print('Deleted {0} versions.'.format(len(old_versions)))