{ "info": { "author": "Olivier Sallou", "author_email": "olivier.sallou@irisa.fr", "bugtrack_url": null, "classifiers": [ "Environment :: OpenStack", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4" ], "description": "===============================\nAbout\n===============================\n\nManage VM expiration and auto-deletion in an Openstack cloud.\n\nThis project is an unofficial Openstack project, but follows Openstack projects architecture, with a Horizon plugin and associated services.\n\n\n* Free software: Apache license\n* Documentation: http://os-vm-expire.readthedocs.io/\n* Bugs: https://github.com/genouest/os-vm-expire/issues\n* Horizon plugin: https://github.com/genouest/os-vm-expire-horizon-plugin\n* OSC plugin (openstack client): https://github.com/genouest/os-vm-expire-osc-plugin\n\nThe Openstack VmExpiration Management service adds an expiration to VMs.\nAfter expiration, VM is deleted.\nUser can extend the VM lifetime via API or Horizon.\nExpiration extend is not limited, user can always extend a VM, but it will be extended only for a configured duration.\nUser cannot extend it more than configured duration.\nExample:\n\n - date A: VM is created, VM will expire at A + N days\n - some days before expiration user is notified\n - user extend VM to today + M days (M is configuration based, user cannot specify it)\n - if user tries to extend VM again, it will be extend again to today + M days\n\n\nRequirements\n------------\n\nNova notifications need to be enabled to get VM start and end messages.\n\nSoftware has been tested on **Pike** and **Otaca**, and in single and multi domain configuration. It *should* work from **Newton**.\n\nFeatures\n--------\n\n* On VM creation, add an expiration date\n* On near-expiration date, send an email to user\n* Horizon plugin to view VM expiration and extend expiration time\n* On expiration date, delete the VM and send an email to user\n* CLI commands to extend a VM or remove expiration from a VM (admin only)\n\n\nConfiguration\n-------------\n\nConfiguration files are expected in directory /etc/os-vm-expire/ :\n\n* osvmexpire.conf\n* policy.json\n* osvmexpire-api-paste.ini (for wsgi server)\n\nMain configuration file can be specified via environment variable OSVMEXPIRE_CONFIG.\n\nComponents\n----------\n\n\nStart API server\n~~~~~~~~~~~~~~~~\n\nFor dev (port 8000)\n\n.. code-block:: bash\n\n export OSVMEXPIRE_PORT=9411 # optional\n osvmexpire-wsgi-api\n\nFor prod\n\n.. code-block:: bash\n\n uwsgi --master --die-on-term --emperor /etc/os-vm-expire/vassals --logto /var/log/os-vm-expire/osvmexpire-api.log --stats localhost:9314\n\n\nStart worker\n~~~~~~~~~~~~\n\nManage nova notifications on instance creation and deletion to create/delete expiration objects.\n\n.. code-block:: bash\n\n osvmexpire-worker --config-file /etc/os-vm-expire/osvmexpire.conf\n\n\nStart cleaner\n~~~~~~~~~~~~~\n\nChecks expiration time of VMs and sends notifications before expiration to let use extend the VM if necessary.\nOnce expiration is reached (and if user could be notified of expiration), deletes the VM.\n\n.. code-block:: bash\n\n osvmexpire-cleaner --config-file /etc/os-vm-expire/osvmexpire.conf\n\nCLI usage\n---------\n\nThose command-line tools need access to configuration file, so are dedicated to administer the tool, not for end user.\n\n.. code-block:: bash\n\n osvmexpire-manage vm list\n osvmexpire-manage vm extend -h\n osvmexpire-manage vm remove -h\n\n\nCredits\n-------\n\nCode is mostly inspired (code base coming from) the Barbican Openstack project, code was more or less updated to manage different objects.\nThis project takes the same license and kept original file headers.\n\nThis project was developed by the GenOuest core facility, IRISA, France.\n\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/genouest/os-vm-expire", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "os-vm-expire", "package_url": "https://pypi.org/project/os-vm-expire/", "platform": "", "project_url": "https://pypi.org/project/os-vm-expire/", "project_urls": { "Homepage": "https://github.com/genouest/os-vm-expire" }, "release_url": "https://pypi.org/project/os-vm-expire/0.9.12/", "requires_dist": [ "pbr", "Paste (>=2.0.2)", "PasteDeploy (>=1.5.0)", "oslo.config (>=4.6.0)", "oslo.context (>=2.19.2)", "oslo.db (>=4.27.0)", "oslo.policy", "oslo.messaging", "oslo.log", "oslo.utils (>=3.31.0)", "oslo.middleware (>=3.31.0)", "oslo.i18n", "oslo.service", "WebOb", "keystonemiddleware", "pecan (!=1.0.2,!=1.0.3,!=1.0.4,!=1.2,>=1.0.0)", "six (>=1.9.0)", "SQLAlchemy (!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10)", "alembic (>=0.8.10)", "prettytable" ], "requires_python": "", "summary": "Manage VM expiration and deletion", "version": "0.9.12" }, "last_serial": 4834361, "releases": { "0.9.10": [ { "comment_text": "", "digests": { "md5": "53a8c243c84f216ad4e6f9e0ba4a32d0", "sha256": "0d037d8294b5fd5cefdf294c767442f486d72e13cc578adc7c138b03903b3ab7" }, "downloads": -1, "filename": "os_vm_expire-0.9.10-py2-none-any.whl", "has_sig": false, "md5_digest": "53a8c243c84f216ad4e6f9e0ba4a32d0", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 81868, "upload_time": "2018-07-06T10:05:21", "url": "https://files.pythonhosted.org/packages/3c/62/484117a387495cf8e14e9b74934074df9927867347bf27d1fa5294051517/os_vm_expire-0.9.10-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0cc0b08b02f4f5bb5a1f654ab599e62b", "sha256": "3b05cd7ba652f837faae15e3f056a62a52f2d973ffd5c0fe3dd2988ef368bcb0" }, "downloads": -1, "filename": "os_vm_expire-0.9.10-py3-none-any.whl", "has_sig": false, "md5_digest": "0cc0b08b02f4f5bb5a1f654ab599e62b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 81833, "upload_time": "2018-07-06T10:07:11", "url": "https://files.pythonhosted.org/packages/30/c1/54baada541bdb26ef6bcb26c4f9fdc88d35e46530a3342217608153b793c/os_vm_expire-0.9.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29da1942e0a6b15df7a105d263d043f5", "sha256": "ab2009ca7fb43542b4607aba5b45d2cf9bb3cba4370d21ab5d07fb10dc138053" }, "downloads": -1, "filename": "os-vm-expire-0.9.10.tar.gz", "has_sig": false, "md5_digest": "29da1942e0a6b15df7a105d263d043f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92039, "upload_time": "2018-07-06T10:05:22", "url": "https://files.pythonhosted.org/packages/ff/c2/0ff69a74eb975988e641a681f755279443818b347410d8fca5bd8c0d9a3b/os-vm-expire-0.9.10.tar.gz" } ], "0.9.11": [ { "comment_text": "", "digests": { "md5": "69f08f94e1a6420f5599f28e6cc6b51a", "sha256": "1df6a2899a888a3bfac19d3eca14cd770ddd59995d62c5367264644ad0cd7408" }, "downloads": -1, "filename": "os_vm_expire-0.9.11-py2-none-any.whl", "has_sig": false, "md5_digest": "69f08f94e1a6420f5599f28e6cc6b51a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 85879, "upload_time": "2019-01-29T13:22:03", "url": "https://files.pythonhosted.org/packages/ba/61/886fa1023178ba55343902ee1879cbfbc56cd5ebef0d250f725d71f5eb7d/os_vm_expire-0.9.11-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa02f020f8a2ddb74e069b791419e0b6", "sha256": "0d6e1beb47197b4f81aefd1204788026924a0c567ddc56a76b01c4d58abc2b3d" }, "downloads": -1, "filename": "os_vm_expire-0.9.11-py3-none-any.whl", "has_sig": false, "md5_digest": "aa02f020f8a2ddb74e069b791419e0b6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 85876, "upload_time": "2019-01-29T13:24:40", "url": "https://files.pythonhosted.org/packages/04/c5/74c56d13f8d474234acdb1b765363753a28f37e06fc007d49a7e755c6a10/os_vm_expire-0.9.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4fc8610c62a04179d74877fe091fcfa9", "sha256": "80cc11023c1f42112db877d39445002713016cef078b40d2d92d1478347e3c46" }, "downloads": -1, "filename": "os-vm-expire-0.9.11.tar.gz", "has_sig": false, "md5_digest": "4fc8610c62a04179d74877fe091fcfa9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92526, "upload_time": "2019-01-29T13:22:05", "url": "https://files.pythonhosted.org/packages/56/3e/480aaa8ebcca1b961b9062cb661f984c5497aa737be538c54feb0d230cf2/os-vm-expire-0.9.11.tar.gz" } ], "0.9.12": [ { "comment_text": "", "digests": { "md5": "f9baf6e9d3f0818c1c191faea54e616d", "sha256": "6c8528c9bcf2601956a69fad7181d87c56cf04e1c310e3eb8e24a4e4ec7cd0ee" }, "downloads": -1, "filename": "os_vm_expire-0.9.12-py2-none-any.whl", "has_sig": false, "md5_digest": "f9baf6e9d3f0818c1c191faea54e616d", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 85894, "upload_time": "2019-02-18T10:25:53", "url": "https://files.pythonhosted.org/packages/a9/c7/0d17d33164eb4731208de0c51e81da65b81cec512e6dfd70d5756ae1ee27/os_vm_expire-0.9.12-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c5ec8954e71279df55dcf92a7964e917", "sha256": "702847b6e392f2d74d57a8b411a987b9b705860463a393a8f8908bb5848dfc66" }, "downloads": -1, "filename": "os_vm_expire-0.9.12-py3-none-any.whl", "has_sig": false, "md5_digest": "c5ec8954e71279df55dcf92a7964e917", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 85857, "upload_time": "2019-02-18T10:28:39", "url": "https://files.pythonhosted.org/packages/1a/6c/584b76905f21050a1f6893747ed8653f0a0d6a70f5cb4d031d2d1d3a289a/os_vm_expire-0.9.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5d807d7124ff0cce862d33d90e95781b", "sha256": "4a31c375a03db9b399c72420c4ce36fc23b009428a508103bf8e2eeb3d52e0f4" }, "downloads": -1, "filename": "os-vm-expire-0.9.12.tar.gz", "has_sig": false, "md5_digest": "5d807d7124ff0cce862d33d90e95781b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92665, "upload_time": "2019-02-18T10:25:55", "url": "https://files.pythonhosted.org/packages/29/1a/756fddb2c1a5e76cdb4e82283373048ee8116773f3de49bc68f2e471db07/os-vm-expire-0.9.12.tar.gz" } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "bd58f20089162d8b1bcd9d708637e2e5", "sha256": "a79c8c2f635a1047c0550e74e795feff28ae62f7060f5708bf5b35da14373754" }, "downloads": -1, "filename": "os_vm_expire-0.9.6-py2-none-any.whl", "has_sig": false, "md5_digest": "bd58f20089162d8b1bcd9d708637e2e5", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 83028, "upload_time": "2017-12-29T06:26:26", "url": "https://files.pythonhosted.org/packages/ac/89/4a7fe7dddddc94103ff3639b8c212f0917b370db1df6be4a77e960c3ef80/os_vm_expire-0.9.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2d8954abd11fc02c9a598a2407d9055c", "sha256": "0a99f36d7e5b1364a3d66440bf8e50bd1f73d3ae22c7e2e49f0fb0158aa42ca3" }, "downloads": -1, "filename": "os_vm_expire-0.9.6-py3-none-any.whl", "has_sig": false, "md5_digest": "2d8954abd11fc02c9a598a2407d9055c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 83025, "upload_time": "2017-12-29T06:25:34", "url": "https://files.pythonhosted.org/packages/06/ee/70d04a879fd35cdee16177ae707df9e1c3c3b65bb5c2fd4c74c3fc2ddaaf/os_vm_expire-0.9.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a62a773d12c55ca56f16250f5bdd46c8", "sha256": "6ab7dc329d6ae04eb8a01a23a6e120aee8d7f846110c2a78a78c426e4829b9ae" }, "downloads": -1, "filename": "os-vm-expire-0.9.6.tar.gz", "has_sig": false, "md5_digest": "a62a773d12c55ca56f16250f5bdd46c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90041, "upload_time": "2017-12-29T06:25:39", "url": "https://files.pythonhosted.org/packages/c5/5d/51d00fcd1ac441f6745d3d58b372818ef442cf9f8a15ebc4cd9690d55709/os-vm-expire-0.9.6.tar.gz" } ], "0.9.7": [ { "comment_text": "", "digests": { "md5": "e25fb563ca1c6d5b4e8eb55d227ffba6", "sha256": "313344aa8ecc0adde2291ad1295026c1d5a64c4f92c4dde940ad07d46d64a107" }, "downloads": -1, "filename": "os_vm_expire-0.9.7-py2-none-any.whl", "has_sig": false, "md5_digest": "e25fb563ca1c6d5b4e8eb55d227ffba6", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 83486, "upload_time": "2018-01-09T13:09:54", "url": "https://files.pythonhosted.org/packages/8c/65/1112c43c8451d1f6f61cf8f381a694d2e25fd3f9f2bcea5271041fe1c1b0/os_vm_expire-0.9.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79527e6d1ef41ee598d74e4788e9a641", "sha256": "687abd921c6103d512a5ee26f491c79c8a43dc32567b29f798d1aa4ce2e03365" }, "downloads": -1, "filename": "os_vm_expire-0.9.7-py3-none-any.whl", "has_sig": false, "md5_digest": "79527e6d1ef41ee598d74e4788e9a641", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 83485, "upload_time": "2018-01-09T13:09:53", "url": "https://files.pythonhosted.org/packages/c3/cc/399e8319f35495170545ff50d8e4ed8808f01ac2805763222a63afbf5cf0/os_vm_expire-0.9.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2da9ae250b3c6239745014d437325026", "sha256": "9bdd9d59329ffcab8b3433d6984164d09c84a2a1e9c2cc019c20b441e070f5f9" }, "downloads": -1, "filename": "os-vm-expire-0.9.7.tar.gz", "has_sig": false, "md5_digest": "2da9ae250b3c6239745014d437325026", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90893, "upload_time": "2018-01-09T13:09:54", "url": "https://files.pythonhosted.org/packages/b2/45/9c5426b98d7d6ed022287661106e875631f84f191f2a0c1009287ab746bd/os-vm-expire-0.9.7.tar.gz" } ], "0.9.8": [ { "comment_text": "", "digests": { "md5": "b161f796a669ac89788b5cf56abbe03c", "sha256": "952d072b6679d75b83f72e7c5ceafde0ec8783f5fe27269d373617aaf2d03a30" }, "downloads": -1, "filename": "os_vm_expire-0.9.8-py2-none-any.whl", "has_sig": false, "md5_digest": "b161f796a669ac89788b5cf56abbe03c", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 84505, "upload_time": "2018-02-12T08:38:31", "url": "https://files.pythonhosted.org/packages/d2/5e/0dd6adb0a9b5c14353c0a8a25544fb85c9e24b2a4946e5c606fb81a5fdd6/os_vm_expire-0.9.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1b60f190760ac5cb0e9700ec422cd359", "sha256": "b634d9da93e721d1c20e8573f9966c4fb82584e5f0d026c80726ada693de38c5" }, "downloads": -1, "filename": "os_vm_expire-0.9.8-py3-none-any.whl", "has_sig": false, "md5_digest": "1b60f190760ac5cb0e9700ec422cd359", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 84504, "upload_time": "2018-02-12T08:40:52", "url": "https://files.pythonhosted.org/packages/55/40/ed5a360b450870dc1428007ae637e9f3f550a5c0b0651272f5ea75e8b9a0/os_vm_expire-0.9.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3998da4ad9c1fefcaae6ffac48ea9003", "sha256": "f7a2c7403003105818e301bb1953c79544f81c19860b824afcecbe16869dfeae" }, "downloads": -1, "filename": "os-vm-expire-0.9.8.tar.gz", "has_sig": false, "md5_digest": "3998da4ad9c1fefcaae6ffac48ea9003", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91408, "upload_time": "2018-02-12T08:38:33", "url": "https://files.pythonhosted.org/packages/99/ed/9aa654809d2104b5ba0d8a6f5a825421d0c047e45c5f8ae43bed8e061ef9/os-vm-expire-0.9.8.tar.gz" } ], "0.9.9": [ { "comment_text": "", "digests": { "md5": "e02538f326a32229a4d939f46a373f09", "sha256": "68b972de94f00c6145d6d8cfa495a290869f532e969bdad2bd9e83b43e62cc3f" }, "downloads": -1, "filename": "os_vm_expire-0.9.9-py2-none-any.whl", "has_sig": false, "md5_digest": "e02538f326a32229a4d939f46a373f09", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 81851, "upload_time": "2018-05-11T09:17:03", "url": "https://files.pythonhosted.org/packages/45/58/bb9c76037bcdcbc4ccc1a44c8b6290817bdb88e610265b09e6c857fabb53/os_vm_expire-0.9.9-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "386e00935e2cdfadb5e553d258624f99", "sha256": "14313d781e34a2087ff6ffedc7ec54439c90dd57631d13a60dc22f04929ac3d4" }, "downloads": -1, "filename": "os_vm_expire-0.9.9-py3-none-any.whl", "has_sig": false, "md5_digest": "386e00935e2cdfadb5e553d258624f99", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 81849, "upload_time": "2018-05-11T09:17:00", "url": "https://files.pythonhosted.org/packages/53/63/3ffccc2ce98059e50905fd2b70a9364b48fc4826431f446ccf83b68b08d0/os_vm_expire-0.9.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "51e1863ab553d5938ffb3c8a9f22404d", "sha256": "9a0f099f1704ad4b3c6dad3b2215dd99bde21a930d3eb1c366acfab2239126c2" }, "downloads": -1, "filename": "os-vm-expire-0.9.9.tar.gz", "has_sig": false, "md5_digest": "51e1863ab553d5938ffb3c8a9f22404d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91725, "upload_time": "2018-05-11T09:17:03", "url": "https://files.pythonhosted.org/packages/93/63/3525e9b6a64399e43b6c325620f8bcf49c25d3e98fcd89b2cb80ea9a2e46/os-vm-expire-0.9.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f9baf6e9d3f0818c1c191faea54e616d", "sha256": "6c8528c9bcf2601956a69fad7181d87c56cf04e1c310e3eb8e24a4e4ec7cd0ee" }, "downloads": -1, "filename": "os_vm_expire-0.9.12-py2-none-any.whl", "has_sig": false, "md5_digest": "f9baf6e9d3f0818c1c191faea54e616d", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 85894, "upload_time": "2019-02-18T10:25:53", "url": "https://files.pythonhosted.org/packages/a9/c7/0d17d33164eb4731208de0c51e81da65b81cec512e6dfd70d5756ae1ee27/os_vm_expire-0.9.12-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c5ec8954e71279df55dcf92a7964e917", "sha256": "702847b6e392f2d74d57a8b411a987b9b705860463a393a8f8908bb5848dfc66" }, "downloads": -1, "filename": "os_vm_expire-0.9.12-py3-none-any.whl", "has_sig": false, "md5_digest": "c5ec8954e71279df55dcf92a7964e917", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 85857, "upload_time": "2019-02-18T10:28:39", "url": "https://files.pythonhosted.org/packages/1a/6c/584b76905f21050a1f6893747ed8653f0a0d6a70f5cb4d031d2d1d3a289a/os_vm_expire-0.9.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5d807d7124ff0cce862d33d90e95781b", "sha256": "4a31c375a03db9b399c72420c4ce36fc23b009428a508103bf8e2eeb3d52e0f4" }, "downloads": -1, "filename": "os-vm-expire-0.9.12.tar.gz", "has_sig": false, "md5_digest": "5d807d7124ff0cce862d33d90e95781b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92665, "upload_time": "2019-02-18T10:25:55", "url": "https://files.pythonhosted.org/packages/29/1a/756fddb2c1a5e76cdb4e82283373048ee8116773f3de49bc68f2e471db07/os-vm-expire-0.9.12.tar.gz" } ] }