{ "info": { "author": "Gary Donovan", "author_email": "gazza@gazza.id.au", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Affero General Public License v3", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development", "Topic :: System :: Systems Administration" ], "description": "======\nssmash\n======\n\n\n.. image:: https://img.shields.io/pypi/v/ssmash.svg\n :target: https://pypi.python.org/pypi/ssmash\n\n.. image:: https://img.shields.io/pypi/pyversions/ssmash.svg\n :target: https://pypi.python.org/pypi/ssmash\n :alt: Python versions\n\n.. image:: https://readthedocs.org/projects/ssmash/badge/?version=latest\n :target: https://ssmash.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://img.shields.io/pypi/dm/ssmash.svg\n :target: https://pypi.python.org/pypi/ssmash\n :alt: Downloads\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/ambv/black\n :alt: Code style: black\n\n`ssmash `_, the SSM AppConfig Storage Helper,\nis an easy-to-use application configuration management tool for AWS\ndeployments. You specify hierarchical configuration values in a simple YAML\nfile, and ``ssmash`` will turn that into an AWS CloudFormation file that\nstores your configuration values in the SSM Parameter Store.\n\nInstallation\n------------\n\nInstall ``ssmash`` using ``pip``, the standard python package installer:\n\n.. code-block:: console\n\n $ pip install ssmash\n\nExample\n-------\n\nSuppose you have an input file like this:\n\n.. code-block:: yaml\n\n acme:\n shipping-labels-service:\n block-coyotes: true\n explosive-purchase-limit: 1000\n greeting: hello world\n\nThen run ``ssmash``:\n\n.. code-block:: console\n\n $ ssmash -i acme_prod_config.yaml -o cloud_formation_template.yaml\n $ aws cloudformation deploy \\\n --stack-name \"acme-prod-config\" --template-file cloud_formation_template.yaml \\\n --no-fail-on-empty-changeset\n\nYou will now have the following parameters in AWS Systems Manager, that can\nbe loaded as a string inside your application:\n\n* ``/acme/shipping-labels-service/block-coyotes`` = \"true\"\n* ``/acme/shipping-labels-service/explosive-purchase-limit`` = \"1000\"\n* ``/acme/shipping-labels-service/greeting`` = \"hello world\"\n\n\n\n\n=========\nChangelog\n=========\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on `Keep a Changelog `_,\nand this project adheres to `Semantic Versioning `_.\n\n\nv2.0.1 (2019-06-28)\n-------------------\n\nFixed\n~~~~~\n* Couldn't run script\n\nv2.0.0 (2019-06-28)\n-------------------\n\nChanged\n~~~~~~~\n* `#22 `_ : Change command line\n API so that the input and output files are options, rather than arguments.\n* `#22 `_ : Change command line\n API so that invalidating an ECS Service is done through a chained\n sub-command, rather than additional options.\n\nAdded\n~~~~~\n* `#8 `_ : Support lists of plain\n values, which are stored as a SSM StringList parameter\n\nRemoved\n~~~~~~~\n* You can't specify input and output files as positional arguments any more.\n Use `--input-file FILENAME` and `--output-file FILENAME` instead.\n* The `--invalidate-ecs-service` and `--invalidation-role` options have been\n replaced with the `invalidate-ecs` command.\n\nv1.1.0 (2019-06-05)\n-------------------\n\nAdded\n~~~~~\n* Be able to automatically invalidate an existing ECS Service as part of the\n parameter deployment, so that it picks up the new configuration.\n\nv1.0.0 (2019-05-30)\n-------------------\n\nv1.0.0-rc1 (2019-05-24)\n-----------------------\n\nAdded\n~~~~~\n* ``ssmash`` script to create String SSM Parameters from a simple config file stored in YAML\n* Basic documentation in README\n\nv0.1.0 (2019-05-14)\n-------------------\n\nAdded\n~~~~~\n* First release on PyPI.\n* Cookiecutter skeleton only, no functionality\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/garyd203/ssmash", "keywords": "ssmash application-configuration configuration AWS cloudformation infrastructure-as-code", "license": "GNU Affero General Public License v3", "maintainer": "", "maintainer_email": "", "name": "ssmash", "package_url": "https://pypi.org/project/ssmash/", "platform": "", "project_url": "https://pypi.org/project/ssmash/", "project_urls": { "Documentation": "https://ssmash.readthedocs.io/en/latest/", "Homepage": "https://github.com/garyd203/ssmash", "Source": "https://github.com/garyd203/ssmash", "Tracker": "https://github.com/garyd203/ssmash/issues" }, "release_url": "https://pypi.org/project/ssmash/2.0.1/", "requires_dist": [ "click (<8,>=7.0)", "PyYAML (==5.1)", "flying-circus (==0.6.5)", "inflection (==0.3.1)" ], "requires_python": "", "summary": "SSM AppConfig Storage Helper", "version": "2.0.1" }, "last_serial": 5459521, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "b9288b70596bee4c17831eb9d503f3b5", "sha256": "10603cfacc29082a592abd24b9fcc2a933f1c907212be999805fcc173e47311b" }, "downloads": -1, "filename": "ssmash-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b9288b70596bee4c17831eb9d503f3b5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4051, "upload_time": "2019-05-15T07:52:16", "url": "https://files.pythonhosted.org/packages/33/79/7b2753562e1365c67b08dfe892c1a8d5d54048d7df829fae4469bd5b0dca/ssmash-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e4e2237f6ee7395117423a844945a948", "sha256": "aa7330b1f49eb5778e4f5d07e0b5a505f5d7a97666138ef88406a38a38e42142" }, "downloads": -1, "filename": "ssmash-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e4e2237f6ee7395117423a844945a948", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8622, "upload_time": "2019-05-15T07:52:19", "url": "https://files.pythonhosted.org/packages/22/8e/7d09f0b650e5323ed9ac640496986fe57338cfaa0a02290e15c3c013c0a8/ssmash-0.1.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "983f95c85a2114c45b4477365b8cf0ef", "sha256": "c86f09348133f04635ca2fb7eb5553a592d6c994d2694dd59dbaab4912ae36eb" }, "downloads": -1, "filename": "ssmash-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "983f95c85a2114c45b4477365b8cf0ef", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17633, "upload_time": "2019-05-30T03:28:16", "url": "https://files.pythonhosted.org/packages/c9/03/ba91fe17a5dd14c3e9481639b596fe2789fec13d458d62505a66c0a89314/ssmash-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b2b133e4b55cd14dd4daadc4287edf60", "sha256": "1bc6a12264136220c87ab8846f695bde05ca9afecae3d0ac451b1df916bba5c6" }, "downloads": -1, "filename": "ssmash-1.0.0.tar.gz", "has_sig": false, "md5_digest": "b2b133e4b55cd14dd4daadc4287edf60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24125, "upload_time": "2019-05-30T03:28:18", "url": "https://files.pythonhosted.org/packages/59/a4/6a497551f610f711acffdb1295963af1062e36bd383fdb89bfd6f72090c9/ssmash-1.0.0.tar.gz" } ], "1.0.0rc1": [ { "comment_text": "", "digests": { "md5": "8a79898c7600a900f5be9a303e7eed2e", "sha256": "5a3fcc8f347220df84f43ce19fbf6bf5564f606553f2348a42a8f12a643acd49" }, "downloads": -1, "filename": "ssmash-1.0.0rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8a79898c7600a900f5be9a303e7eed2e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17053, "upload_time": "2019-05-24T06:19:15", "url": "https://files.pythonhosted.org/packages/79/fb/8627ab50d86fb8209cf998ddca863484c5e42137225585dd1d643e5a0e64/ssmash-1.0.0rc1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "67b00ab51a5c9dbce87121af8e51244c", "sha256": "e57e90ebb4520eb836ab75897a88635438f2587b46cf4d0f2e1cfbdb28b0555f" }, "downloads": -1, "filename": "ssmash-1.0.0rc1.tar.gz", "has_sig": false, "md5_digest": "67b00ab51a5c9dbce87121af8e51244c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22791, "upload_time": "2019-05-24T06:19:17", "url": "https://files.pythonhosted.org/packages/a5/ad/927c2d264e32ec3393ffdede5ed080bdf7a96338907bfc8e1ce4a397db98/ssmash-1.0.0rc1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "e9746e20cf2a760f5d1a2c5bd735ae08", "sha256": "81c2114c3017145ad7491de8d5c86c5c3cc685bbd253d1bf7fe03607422cec08" }, "downloads": -1, "filename": "ssmash-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e9746e20cf2a760f5d1a2c5bd735ae08", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21577, "upload_time": "2019-06-05T10:20:12", "url": "https://files.pythonhosted.org/packages/fd/39/f3a1b41e42d418d0a92fa52962c91be948082472d7aa0e16ed7b236c814d/ssmash-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa5e62809711a4a906895616636db3f0", "sha256": "5bb402fef9d5436e3ab1fff1e730dfcbf96ee8b4735b633585de69ccf05082fb" }, "downloads": -1, "filename": "ssmash-1.1.0.tar.gz", "has_sig": false, "md5_digest": "aa5e62809711a4a906895616636db3f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29879, "upload_time": "2019-06-05T10:20:15", "url": "https://files.pythonhosted.org/packages/01/0c/8906b311e6b2197f95c91e51cf9c0597f34bf6d8d1492343b36c3bd4af80/ssmash-1.1.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "1aea1ca5b5cebd520cb246f5c92732e0", "sha256": "1d0452708796c60c5da6acc9f33c88e1292e279c6a7d1485100f173de39c1480" }, "downloads": -1, "filename": "ssmash-2.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1aea1ca5b5cebd520cb246f5c92732e0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22770, "upload_time": "2019-06-27T23:13:47", "url": "https://files.pythonhosted.org/packages/0e/48/8ea743645fb93d57c16b35876d7552c593b74ed2573dfd029fab010fb28a/ssmash-2.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "80b257b4e7c6742d33607e2081e4951c", "sha256": "ece0d54a09cee947dcbb1d52f53b332a88f648d03c27489af44eb5e6d78b4c34" }, "downloads": -1, "filename": "ssmash-2.0.0.tar.gz", "has_sig": false, "md5_digest": "80b257b4e7c6742d33607e2081e4951c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31416, "upload_time": "2019-06-27T23:13:49", "url": "https://files.pythonhosted.org/packages/62/f6/3f74546d672e6f8a8971ba17add8411b0bb149569deb8b036f782b64be87/ssmash-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "ceb30beb1a478ecb6fb6b79874891c98", "sha256": "4cf13fc962d0b531c02f8ec830d71bc39102606ebc2daa697b277091a5cb66a3" }, "downloads": -1, "filename": "ssmash-2.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ceb30beb1a478ecb6fb6b79874891c98", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22793, "upload_time": "2019-06-28T00:24:40", "url": "https://files.pythonhosted.org/packages/e9/80/68585f77d8ecbdfa04c3f69526ff5c384b7fbcc9a0ef8b38259390fd454b/ssmash-2.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "41970078b0fe54916ca3cb02a8479239", "sha256": "ab27c4f126bb67e953ea7f6759e22b2a6d27ac61413f081b234c7e1bc111a1e4" }, "downloads": -1, "filename": "ssmash-2.0.1.tar.gz", "has_sig": false, "md5_digest": "41970078b0fe54916ca3cb02a8479239", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32121, "upload_time": "2019-06-28T00:24:42", "url": "https://files.pythonhosted.org/packages/29/b3/6b5afd21796602b478e686e6851f4fe20561fc3640f40404bdcafd4f65bb/ssmash-2.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ceb30beb1a478ecb6fb6b79874891c98", "sha256": "4cf13fc962d0b531c02f8ec830d71bc39102606ebc2daa697b277091a5cb66a3" }, "downloads": -1, "filename": "ssmash-2.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ceb30beb1a478ecb6fb6b79874891c98", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22793, "upload_time": "2019-06-28T00:24:40", "url": "https://files.pythonhosted.org/packages/e9/80/68585f77d8ecbdfa04c3f69526ff5c384b7fbcc9a0ef8b38259390fd454b/ssmash-2.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "41970078b0fe54916ca3cb02a8479239", "sha256": "ab27c4f126bb67e953ea7f6759e22b2a6d27ac61413f081b234c7e1bc111a1e4" }, "downloads": -1, "filename": "ssmash-2.0.1.tar.gz", "has_sig": false, "md5_digest": "41970078b0fe54916ca3cb02a8479239", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32121, "upload_time": "2019-06-28T00:24:42", "url": "https://files.pythonhosted.org/packages/29/b3/6b5afd21796602b478e686e6851f4fe20561fc3640f40404bdcafd4f65bb/ssmash-2.0.1.tar.gz" } ] }