{ "info": { "author": "Nils P. M\u00fcller", "author_email": "shimst3r@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8" ], "description": "\nagipy\n=====\n\n\n.. image:: https://travis-ci.org/shimst3r/agipy.svg?branch=master\n :target: https://travis-ci.org/shimst3r/agipy\n :alt: Build Status\n\n\n..\n\n /\u0259\u02c8d\u0292\u026a\u02c8pa\u026a/, portmanteau of AgI (chemical formula of silver iodide) and Python\n\n\n``agipy`` enables you to destroy cloud infrastructure in a hurry. Whether you want to destroy a demo\nenvironment you no longer need or want to purge artifacts a colleague left behind, ``agipy`` is here\nto help you dissolving your cloud problems.\n\nAbout the name\n--------------\n\n``agipy`` is a portmanteau of the chemical formula AgI for silver iodide and the word Python.\n\nSilver iodide is a chemical used for `cloud seeding `_.\nCloud seeding is a weather modification that changes the amount or type of precipitation that falls from clouds;\nin my opinion that is an appropriate metaphor for deleting cloud infrastructure, especially compared to\nalternatives that include \"nukes\" or \"EMPs\".\n\n`Python `_ is the language ``agipy`` is implemented in. It is a great language for\neverything concerning cloud infrastructure and automation, and it happens to be the language I feel most\ncomfortable with.\n\nHow to use ``agipy``\n------------------------\n\n``agipy`` is available on `PyPI `_\\ , so you can install it using ``pip``\\ :\n\n.. code-block:: sh\n\n pip install --user agipy\n\nIn addition you can clone the repository and then install it from source via:\n\n.. code-block:: sh\n\n python3 setup.py install\n\nTo find out how the CLI works, use the built-in help function:\n\n.. code-block:: sh\n\n agipy --help\n\n``agipy`` is based on the concept of *providers*\\ : For each public cloud provider, a ``agipy``\\ -specific\nprovider module has to be implemented. At the moment, the following provider modules exist:\n\n\n* `Microsoft Azure `_\n\nBecause each provider has its own semantics, please refer to the respective subsection.\n\nHow to use the ``azure`` provider\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nAs of yet, the ``azure`` provider is capable of deleting all resource groups with a specific prefix.\nFor using the provider, you have to set the following environment variables:\n\n\n* ``AZURE_CLIENT_ID``\\ , the service principal ID\n* ``AZURE_CLIENT_SECRET``\\ , the service principal secret\n* ``AZURE_SUBSCRIPTION_ID``\n* ``AZURE_TENANT_ID``\n\nAlternatively you can provide any of these values via command line arguments, see below.\n\nYou can call the provider via:\n\n.. code-block:: sh\n\n agipy azure --prefix=${RG_PREFIX} [--client-id=${AZURE_CLIENT_ID}] [--client-secret=${AZURE_CLIENT_SECRET}] [--subscription-id=${AZURE_SUBSCRIPTION_ID}] [--tenant-id=${AZURE_TENANT_ID}]\n\nHow to Test\n-----------\n\nThe test suite is based on the great `\\ ``pytest`` `_ library. Once installed, the automatic test\ndiscovery can be used via\n\n.. code-block:: sh\n\n pytest agipy\n\nIn order to keep the tests clean and run smoothly, I try to use subtests and patches where possible.\n\nHow to Contribute\n-----------------\n\nThis project is released under the GPL license, so I am happy for contributions, forks, and feedback!\nThis can be done in many ways:\n\n\n* Open PRs with improvements,\n* add issues if you find bugs,\n* add issues for new features,\n* use ``agipy`` and spread the word.\n\nPRs have to comply with:\n\n\n* `\\ ``black`` `_\\ ,\n* `\\ ``mypy`` `_\\ ,\n* and `\\ ``pylint`` `_.\n\nNew features must be covered by proper tests (idealy unit tests and functional tests) using the `\\ ``pytest`` `_ library.\n\nContributors\n------------\n\n\n* `shimst3r `_\n\nLicense\n-------\n\n..\n\n agipy enables you to destroy cloud infrastructure in a hurry.\n Copyright (C) 2019 Nils M\u00fcller shimst3r@gmail.com\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see https://www.gnu.org/licenses/\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/shimst3r/agipy/archive/0.2.2.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/shimst3r/agipy", "keywords": "azure,cli,cloud,devops,sysadmin,tool", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "agipy", "package_url": "https://pypi.org/project/agipy/", "platform": "", "project_url": "https://pypi.org/project/agipy/", "project_urls": { "Download": "https://github.com/shimst3r/agipy/archive/0.2.2.tar.gz", "Homepage": "https://github.com/shimst3r/agipy" }, "release_url": "https://pypi.org/project/agipy/0.2.2/", "requires_dist": [ "azure-common", "azure-mgmt-resource", "msrestazure", "Click" ], "requires_python": ">=3.7", "summary": "destroy cloud infrastructure in a hurry", "version": "0.2.2", "yanked": false, "yanked_reason": null }, "last_serial": 6019570, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e0db28ff3eab866672dc52cace3ae1d6", "sha256": "c311cfb776078a66b7b24eaa583a9b1fc3594eed4a2284f0e161fc582ee1c306" }, "downloads": -1, "filename": "agipy-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e0db28ff3eab866672dc52cace3ae1d6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 16187, "upload_time": "2019-10-17T15:24:23", "upload_time_iso_8601": "2019-10-17T15:24:23.332311Z", "url": "https://files.pythonhosted.org/packages/46/b3/99ab3174cd57bc99b3718276741dd9ef2a90da9ee1461e0c64fbf0bb5ca2/agipy-0.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "034d082db6bd01acca90642304d80411", "sha256": "edb175c03e5fc0224d920c15a80b1622e842e68eea4f1fe6d8e6d3999fdbaee6" }, "downloads": -1, "filename": "agipy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "034d082db6bd01acca90642304d80411", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 2633, "upload_time": "2019-10-17T15:24:37", "upload_time_iso_8601": "2019-10-17T15:24:37.554790Z", "url": "https://files.pythonhosted.org/packages/6a/4a/8e4db861c31732048fe3d37904f2d4e6641685a1c72df0dee68fe374f845/agipy-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "3eb6065033493477257be5a972adea4b", "sha256": "ef7f282bc11945b9064c78b8da437078e3e56edf5d03e3f6a09830d355fa4cb6" }, "downloads": -1, "filename": "agipy-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3eb6065033493477257be5a972adea4b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 19826, "upload_time": "2019-10-18T14:45:23", "upload_time_iso_8601": "2019-10-18T14:45:23.314862Z", "url": "https://files.pythonhosted.org/packages/cc/6a/21fc9b5bc54c93e843450613c41d3f4fb4e0ba627cc119cf8b49acd6398b/agipy-0.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e5c10ed848c55759287c513939b5effa", "sha256": "030ada670d1253986ce457f6eaa73f0b6961712cf71ffe366923b4aac16aff38" }, "downloads": -1, "filename": "agipy-0.2.0.tar.gz", "has_sig": false, "md5_digest": "e5c10ed848c55759287c513939b5effa", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 5578, "upload_time": "2019-10-18T14:45:24", "upload_time_iso_8601": "2019-10-18T14:45:24.952123Z", "url": "https://files.pythonhosted.org/packages/47/ea/216884f9f4aab50c0b11fa32e3efb12e6df44901e00a767b98992a747331/agipy-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "0c09cb4021ab46bc1f5ff28b7c2f6297", "sha256": "a01f3d6334c52a42001859449cfdb829513e8f8815be304b94c00132762ec273" }, "downloads": -1, "filename": "agipy-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0c09cb4021ab46bc1f5ff28b7c2f6297", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 22088, "upload_time": "2019-10-20T17:04:52", "upload_time_iso_8601": "2019-10-20T17:04:52.894777Z", "url": "https://files.pythonhosted.org/packages/38/e3/60df37e3e4ead523a4fd327d1ac9cc26fc51a02b89c51be53ee08ca4b3e4/agipy-0.2.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c040e8f720115559b339d15b7a99c2bd", "sha256": "543aef1917bebdd7357ded30ffd1782df12994786eb412229fb0e39b909abde2" }, "downloads": -1, "filename": "agipy-0.2.1.tar.gz", "has_sig": false, "md5_digest": "c040e8f720115559b339d15b7a99c2bd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 7934, "upload_time": "2019-10-20T17:04:54", "upload_time_iso_8601": "2019-10-20T17:04:54.738928Z", "url": "https://files.pythonhosted.org/packages/37/c2/6f4440fa6462eab02bdc4ce091900fcb28acdc182151635befe0d8a54293/agipy-0.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "7e09b8d0b9abc3131115b18bd656b38e", "sha256": "2e71c696f9dde5e43fd9d2c708e18b3ad5104d297a5f7fb2c57a215366434e37" }, "downloads": -1, "filename": "agipy-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7e09b8d0b9abc3131115b18bd656b38e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 22136, "upload_time": "2019-10-23T16:52:38", "upload_time_iso_8601": "2019-10-23T16:52:38.832258Z", "url": "https://files.pythonhosted.org/packages/83/49/245897ed33065dafefb6a47411c39b977cd81b415cb5aa5fed388f1c51f2/agipy-0.2.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "76f4de1e8b64f0a9f335dd44b8337b20", "sha256": "2375b3c5e94ccf3d08dd0ab7eea35e10d1711c6d6c44d69c1919ab4d038e0039" }, "downloads": -1, "filename": "agipy-0.2.2.tar.gz", "has_sig": false, "md5_digest": "76f4de1e8b64f0a9f335dd44b8337b20", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 7985, "upload_time": "2019-10-23T16:52:40", "upload_time_iso_8601": "2019-10-23T16:52:40.968052Z", "url": "https://files.pythonhosted.org/packages/bc/18/912f62b23f4bbdadb7a0954c130628032c10b2d22f5b6396508279b53e96/agipy-0.2.2.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7e09b8d0b9abc3131115b18bd656b38e", "sha256": "2e71c696f9dde5e43fd9d2c708e18b3ad5104d297a5f7fb2c57a215366434e37" }, "downloads": -1, "filename": "agipy-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7e09b8d0b9abc3131115b18bd656b38e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 22136, "upload_time": "2019-10-23T16:52:38", "upload_time_iso_8601": "2019-10-23T16:52:38.832258Z", "url": "https://files.pythonhosted.org/packages/83/49/245897ed33065dafefb6a47411c39b977cd81b415cb5aa5fed388f1c51f2/agipy-0.2.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "76f4de1e8b64f0a9f335dd44b8337b20", "sha256": "2375b3c5e94ccf3d08dd0ab7eea35e10d1711c6d6c44d69c1919ab4d038e0039" }, "downloads": -1, "filename": "agipy-0.2.2.tar.gz", "has_sig": false, "md5_digest": "76f4de1e8b64f0a9f335dd44b8337b20", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 7985, "upload_time": "2019-10-23T16:52:40", "upload_time_iso_8601": "2019-10-23T16:52:40.968052Z", "url": "https://files.pythonhosted.org/packages/bc/18/912f62b23f4bbdadb7a0954c130628032c10b2d22f5b6396508279b53e96/agipy-0.2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }