From 1483774bb4ed02627afd3650e457fea863e31f09 Mon Sep 17 00:00:00 2001 From: Adar Nimrod <nimrod@shore.co.il> Date: Sun, 6 Mar 2016 22:17:54 +0200 Subject: [PATCH] - Renamed Python module to eb_prune (otherwise import fails). - Added log files and .tox to gitignore. - Beginning work on README file (just heading, single note and TODO list for now). - Added MANIFEST.in. - Refactored code in to a main function (for console script). - Added setup.cfg. - Specify Python 3.5 and 2.7 (what I have available locally for testing). - Added dependency list. --- .gitignore | 2 ++ MANIFEST.in | 1 + README.rst | 13 ++++++++++++ {eb-prune => eb_prune}/__init__.py | 24 ++++++++++++---------- setup.cfg | 5 +++++ setup.py | 12 +++++++---- tox.ini | 32 ++++++++++++++++++++++++++++++ 7 files changed, 75 insertions(+), 14 deletions(-) create mode 100644 MANIFEST.in rename {eb-prune => eb_prune}/__init__.py (73%) create mode 100644 setup.cfg create mode 100644 tox.ini diff --git a/.gitignore b/.gitignore index c2e41a3..55a0adf 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ build/ dist/ *.egg-info/ __pycache__/ +*.log +.tox diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..72b22fc --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +recursive-include eb-prune diff --git a/README.rst b/README.rst index e69de29..86bb719 100644 --- a/README.rst +++ b/README.rst @@ -0,0 +1,13 @@ +eb-prune +######## + +Must specify AWS_DEFAULT_REGION environment variable. + +TODO +---- + +- License. +- Changelog. +- README, +- Testing with different Python versions with tox and flake8. +- Specify number of versions to keep. diff --git a/eb-prune/__init__.py b/eb_prune/__init__.py similarity index 73% rename from eb-prune/__init__.py rename to eb_prune/__init__.py index f9f3485..8d8d7f5 100644 --- a/eb-prune/__init__.py +++ b/eb_prune/__init__.py @@ -5,10 +5,10 @@ from __future__ import (absolute_import, division, from botocore import session -if __name__ == '__main__': +def main(): print('Pruning Elastic Beanstalk versions.') - session = session.get_session() - beanstalk_client = session.create_client('elasticbeanstalk') + aws_session = session.get_session() + beanstalk_client = aws_session.create_client('elasticbeanstalk') response = beanstalk_client.describe_application_versions() if response['ResponseMetadata']['HTTPStatusCode'] != 200: raise RuntimeError('Failed to describe application versions.') @@ -18,19 +18,23 @@ if __name__ == '__main__': raise RuntimeError('Failed to describe environments.') active_versions = [env['VersionLabel'] for env in response['Environments']] previous_versions = filter( - lambda x: (not x['VersionLabel'] in active_versions) and - x['Status'] == 'UNPROCESSED', versions) + 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] for version in old_versions: response = beanstalk_client.delete_application_version( - ApplicationName=version['ApplicationName'], - VersionLabel=version['VersionLabel'], - DeleteSourceBundle=True) + ApplicationName=version['ApplicationName'], + VersionLabel=version['VersionLabel'], + DeleteSourceBundle=True) if response['ResponseMetadata']['HTTPStatusCode'] != 200: raise RuntimeError( - 'Failed to delete version {0}.'.format( - version['VersionLabel'])) + '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))) + + +if __name__ == '__main__': + main() diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..79bc678 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,5 @@ +[bdist_wheel] +# This flag says that the code is written to work on both Python 2 and Python +# 3. If at all possible, it is good practice to do this. If you cannot, you +# will need to generate wheels for each Python version that you support. +universal=1 diff --git a/setup.py b/setup.py index 04c47fb..a1a3209 100644 --- a/setup.py +++ b/setup.py @@ -6,20 +6,24 @@ setup( version='0.2.0', description='Pruning of Elastic Beanstalk versions.', long_description=open('README.rst', 'r').read(), - url='https://www.shore.co.il/cgit/eb-prune', + url='https://www.shore.co.il/git/eb-prune', author='Nimrod Adar', author_email='nimrod@shore.co.il', license='MIT', classifiers=[ 'Development status :: 4 - Beta', 'Intended Audience :: Developers', - 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 2.6', 'Intended Audience :: System Administrators', 'Topic :: Utilities', ], keywords='beanstalk AWS', packages=find_packages(), - + install_requires=['botocore'], + extras_require={ + 'dev': ['tox', 'flake8'], }, + entry_points={ + 'console_scripts': [ + 'eb-prune=eb_prune:main'], }, ) diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..8c65095 --- /dev/null +++ b/tox.ini @@ -0,0 +1,32 @@ + +# this file is *not* meant to cover or endorse the use of tox or pytest or +# testing in general, +# +# It's meant to show the use of: +# +# - check-manifest +# confirm items checked into vcs are in your sdist +# - python setup.py check (using the readme_renderer extension) +# confirms your long_description will render correctly on pypi +# +# and also to help confirm pull requests to this project. + +[tox] +envlist = py{27,35} + +[testenv] +basepython = + py27: python2.7 + py35: python3.5 +deps = + check-manifest + {py27,py35}: readme_renderer + flake8 +commands = + check-manifest --ignore tox.ini,tests* + # py26 doesn't have "setup.py check" + {py27,py35}: python setup.py check -m -r -s + flake8 . +[flake8] +exclude = .tox,*.egg,build,data +select = E,W,F -- GitLab