{ "info": { "author": "Dreamlab - PaaS KRK", "author_email": "paas-support@dreamlab.pl", "bugtrack_url": null, "classifiers": [ "Operating System :: POSIX", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "VmShepherd\n==========\n\n|image0|_ |image1|_\n\n.. |image0| image:: https://api.travis-ci.org/DreamLab/VmShepherd.png?branch=master\n.. _image0: https://travis-ci.org/DreamLab/VmShepherd\n\n.. |image1| image:: https://badge.fury.io/py/vmshepherd.svg\n.. _image1: https://badge.fury.io/py/vmshepherd\n\nIntroduction\n------------\n\nVmShepherd is an application that helps you maintain groups (clusters) of virtual machines. It keeps defined parameters (like count, image, etc.) by checking state in an IaaS layer, and tests underlying services with a specified health check.\n\n\nArchitecture\n------------\n\nVmShepherd is designed to be easily extensible with plugins. Empowered by ``python3`` and its ``asyncio`` module to facilitate scaling. The diagram below shows the base components of the app.\n\n.. image:: https://user-images.githubusercontent.com/670887/41005281-1f5dfb08-691d-11e8-8221-f48f7acfc3a7.png\n\n- **Preset Manager** is responsible for fetching cluster spec/definition (preset). Built-in presets: ``DirectoryDriver`` and ``GitRepoDriver``\n- **Runtime Manger** exposes functionality of locking preset, and holds intermediate states. Currently available: ``InMemoryDriver``, ``PostgresDriver``, ``ZookeeperDriver``.\n- **IaaS** is a glue (api wrapper) to IaaS provider, ``OpenStackDriver`` is the first implemented.\n- **Healthcheck** allows to check service's state, not only for existence of a virtual machine. ``HttpHealthcheckDriver`` is built-in.\n\n\nFor more information, please take look at the `documentation `_.\n\nInstallation\n--------------\nApplication requires python 3.6 or later. The latest stable version is `available on Pypi `_.\n\n::\n\n pip install vmshepherd\n\n\nAnother way of installation for a VmShepherd is a docker.\nYou can easily download latest version of our application from a docker `hub\n`_.\n\n::\n\n docker pull dreamlabcloud/vmshepherd\n\nBefore you run a application, you need to prepare configuration files according to \nthis `rules `_.\n\nWhen you create a configuration file, you can deploy a VmShepherd like that:\n\n::\n\n docker run -v $PATH_TO_CONFIG_DIRECTORY/:/home/shepherd -p 8888:8888 -it vmshepherd -c config/settings.example.yaml\n\n* Where PATH_TO_CONFIG_DIRECTORY is a localisation of a configuration files on your host\n* -c config/settings.example.yaml is a list of arguments passed to a VmShepherd in container\n\n\nExample:\n\n::\n\n \u279c VmShepherd/docker \u2717 sudo docker run -v $(realpath ../)/:/home/shepherd -p 8888:8888 -it vmshepherd -c config/settings.example.yaml\n INFO:root:Starting server, listening on 8888.\n INFO:root:VmShepherd start cycle...\n INFO:root:VMs Status: 1 expected, 0 in iaas, 0 running, 0 nearby shutdown, 0 pending, 0 after time shutdown, 0 terminated, 0 error, 0 unknown, 1 missing\n INFO:root:VMs Status update: 0 terminated, 0 terminated by healthcheck, 1 created, 0 failed healthcheck\n\n\n\n\nWe also provide a ``Dockerfile`` which can be used during a development:\n\n::\n\n docker build -t vmshepherd .\n docker run -it -p 8888:8888 -p 8000:8000 vmshepherd run\n\n\nUsage\n-----\n\nAfter installation you need to create a main configuration file (check examples in ``config/`` directory in this repo).\n\nRun:\n\n::\n\n vmshepherd -c CONFIGFILE\n\n\nContributing to VmShepherd\n--------------------------\n\nThank you for your interest in contributing to VmShepherd. Like always there are many ways to contribute, and we appreciate all of them.\n\nPull requests and issues are the primary mechanism we use to change VmShepherd. Github itself has a great documentation\nabout using `Pull Requests `_. We use the \n`\"fork and pull\" `_ model,\nwhere contributors push changes to their personal fork and create pull requests to bring those changes into the source repository.\n\nIf you want to find something to work on, please check issues in our `roadmap `_.\n\n\nCheck out the documetation `http://doc.dreamlab.pl/VmShepherd/development/index.html `_.\n\nTL;DR\n-----\n\nPull requests will need:\n\n* Tests\n\n* Documentation\n\n* A logical series of `well written commits `_ \n\n\nLicense\n-------\n\n`Apache License 2.0 `_\n\n\nChangelog\n=========\n\n\n1.5.2 (2019-09-03)\n------------------\n\n* bugfix: terminate via iaas on healthcheck\n\n\n1.5.1 (2019-08-26)\n------------------\n\n* bugfix: vm class - remove terminate method\n\n\n1.5.0 (2019-08-23)\n------------------\n\n* feature: the vms list is keeping in runtime driver (latest possible)\n ans is refreshed by the git worker on every cycle\n\n\n1.4.2 (2019-08-14)\n------------------\n\n* bugfix: remove next _initialize_master_working_set line\n\n\n1.4.1 (2019-08-14)\n------------------\n\n* bugfix: remove _initialize_master_working_set on each driver get\n\n\n1.4.0 (2019-08-12)\n------------------\n\n* feature: rpc - list_vms - created at field\n\n\n1.3.5 (2019-07-26)\n------------------\n\n* bugfix: fix problem with sys.path in drivers\n* bugfix: reload entry_points\n\n\n1.3.3 (2019-07-26)\n------------------\n\n* bugfix: add asyncio.lock for git clone/pull commands\n\n1.3.2 (2019-07-26)\n------------------\n\n* bugfix: Add unique name for a tmp preset directory in a Git Driver\n\n\n1.3.1 (2019-06-03)\n------------------\n\n* bugfix: change the return type for get_vm_ip\n* feature: custom exception class for errors\n\n\n1.3.0 (2019-06-03)\n------------------\n\n* feature: configure unmanaged state for presets\n* feature: rpc api - get_vm_ip(preset_name, vm_id)\n\n1.2.3 (2019-05-10)\n------------------\n\n* bugfix: panel - fail to load due jinja error\n\n\n1.2.1 (2019-05-09)\n------------------\n\n* bugfix: update runtime data after manage even if unlocked\n* bugfix: panel - deterministic preset order\n\n\n1.2.0 (2018-08-07)\n------------------\n\n* feature: api - added list_presets\n\n\n1.1.0 (2018-06-13)\n------------------\n\n* feature: adjustable timeout for http requests to iaas \n\n\n1.0.1 (2018-06-08)\n------------------\n\n* bugfix: API should use last cycle data\n* bugfix: OpenStackDriver refresh token\n\n\n1.0.0 (2018-06-06)\n------------------\n\n* preserve preset state (dashboard shows data from last cycle)\n* bump AsyncOpenStackClient (0.6.2)\n* docs\n\n\n0.7.7 (2018-05-10)\n------------------\n\n* bump AsyncOpenStackClient (0.5.2)\n\n0.7.6 (2018-05-10)\n------------------\n\n* bump AsyncOpenStackClient (0.5.1)\n\n0.7.5 (2018-04-09)\n------------------\n\n* runtime driver abstract fix\n\n0.7.4 (2018-03-22)\n------------------\n\n* cleanup, verify\n\n\n0.7.3 (2018-03-22)\n------------------\n\n* bump AsyncOpenStackClient (+ compat)\n\n\n0.7.2 (2018-03-22)\n------------------\n\n* user-data base64\n\n\n0.7.1 (2018-03-21)\n------------------\n\n* multiple network interfaces\n\n\n0.7.0 (2018-03-20)\n------------------\n\n* AsyncOpenStackClient\n\n\n0.6.0 (2018-02-01)\n------------------\n\n* web panel\n* rpc api\n\n\n0.0.3 (2018-02-01)\n------------------\n\n* initial", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Dreamlab/vmshepherd", "keywords": "cluster,preset,iaas,cloud,openstack,nova,aws,amazon,ec2", "license": "", "maintainer": "", "maintainer_email": "", "name": "vmshepherd", "package_url": "https://pypi.org/project/vmshepherd/", "platform": "", "project_url": "https://pypi.org/project/vmshepherd/", "project_urls": { "Homepage": "https://github.com/Dreamlab/vmshepherd" }, "release_url": "https://pypi.org/project/vmshepherd/1.5.2/", "requires_dist": null, "requires_python": "", "summary": "Cluster manager", "version": "1.5.2" }, "last_serial": 5775461, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "8bbd48fc3b582add14dad2e4d38ce990", "sha256": "95a94e392000c0785fc1e3b659c3e32d7897e46721f8cf9945f83722da9be1fe" }, "downloads": -1, "filename": "vmshepherd-1.0.1-py3.6.egg", "has_sig": false, "md5_digest": "8bbd48fc3b582add14dad2e4d38ce990", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 300392, "upload_time": "2018-06-11T12:54:11", "url": "https://files.pythonhosted.org/packages/59/78/1d5dfb4ac658b8ad687a27df4e204f9ec1a2e270dd8d7e897692fc91e477/vmshepherd-1.0.1-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "68c4ffe1687b1b7826afb7f3219461df", "sha256": "f1ce49c86f53086982e406ddf5e86b85729274c6d9fec0c00e74599bc040a9ee" }, "downloads": -1, "filename": "vmshepherd-1.0.1.tar.gz", "has_sig": false, "md5_digest": "68c4ffe1687b1b7826afb7f3219461df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 367244, "upload_time": "2018-06-10T15:11:18", "url": "https://files.pythonhosted.org/packages/05/ee/23b8662549b59695327e9db7545487e68c03f29ebb526d0a5f14f83c98a3/vmshepherd-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "af98a00f237baac365738ee2540e51f5", "sha256": "d68b1558bc43a08d3d425f1e3e6694565b4820ea8c3a40ae6750cd8555e1e913" }, "downloads": -1, "filename": "vmshepherd-1.0.2.tar.gz", "has_sig": false, "md5_digest": "af98a00f237baac365738ee2540e51f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 367445, "upload_time": "2018-06-11T12:54:13", "url": "https://files.pythonhosted.org/packages/7e/ea/be265bb8123ca4a99a72624b4eeec312c5cfd64b800f58d3f8b5d1f6501e/vmshepherd-1.0.2.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "f9b4b6c37075d6781e29e30e6776c1ff", "sha256": "7d4880e709e0abe3412ed623289a65c05e1fb6f35f601db436a444c6273ede72" }, "downloads": -1, "filename": "vmshepherd-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f9b4b6c37075d6781e29e30e6776c1ff", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 268845, "upload_time": "2018-08-07T08:52:14", "url": "https://files.pythonhosted.org/packages/cb/ff/dfa77fb11110ff5ebe4f5af5a754df78169f42d2ce1b23ce8a740138c661/vmshepherd-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "987b656897573118656939a4b8cead67", "sha256": "88370edd09435fa19fb32e307232b4bf4010207a14596e90bfcf9c3fe16e35ae" }, "downloads": -1, "filename": "vmshepherd-1.2.0.tar.gz", "has_sig": false, "md5_digest": "987b656897573118656939a4b8cead67", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 369023, "upload_time": "2018-08-07T11:39:32", "url": "https://files.pythonhosted.org/packages/54/db/784430f3ed2f6780e673c51219c7588c18da6a4ef60113491138aeb22415/vmshepherd-1.2.0.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "df6fc143a1792a8ebc5e524278a7c4d9", "sha256": "fd7730755a8e11e561919bb06189d1d28de762d21691d9ae326de3c17b9b3e7d" }, "downloads": -1, "filename": "vmshepherd-1.2.3.tar.gz", "has_sig": false, "md5_digest": "df6fc143a1792a8ebc5e524278a7c4d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 373014, "upload_time": "2019-05-10T10:10:28", "url": "https://files.pythonhosted.org/packages/ff/3a/55335ef3c6c14b8157f9d7e88f1c18e39ae4b5d82bfeef1073833837446e/vmshepherd-1.2.3.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "b6a81071d103e62108ce9bc2c051f022", "sha256": "74002c37d89e3691894c471c4bdfeb1490994bbbb0dc7723447c1d2585d672f5" }, "downloads": -1, "filename": "vmshepherd-1.3.1.tar.gz", "has_sig": false, "md5_digest": "b6a81071d103e62108ce9bc2c051f022", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 374610, "upload_time": "2019-06-12T09:15:13", "url": "https://files.pythonhosted.org/packages/8d/5f/a99db4f2deac80e6de0d5a36c686d6b0235f2c194451c166088812011c35/vmshepherd-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "28542deab0360dfe4e9c737003cf88e6", "sha256": "c8a03165d64531366fef7903c6312be73abe2838d0314556e1296575ec449e9f" }, "downloads": -1, "filename": "vmshepherd-1.3.2.tar.gz", "has_sig": false, "md5_digest": "28542deab0360dfe4e9c737003cf88e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 374773, "upload_time": "2019-07-26T13:27:28", "url": "https://files.pythonhosted.org/packages/76/18/0bfb7c7de39f2d7ffea823a33ea1b1ac2f1c84df55deb7772295f310120f/vmshepherd-1.3.2.tar.gz" } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "236b794754ed493477f3cdb7c4c52815", "sha256": "3f735a6e9b24707ee625f02b27d919bdd99b74b752f36424dc5cf5e4d80c69ac" }, "downloads": -1, "filename": "vmshepherd-1.3.3.tar.gz", "has_sig": false, "md5_digest": "236b794754ed493477f3cdb7c4c52815", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 374865, "upload_time": "2019-07-27T09:09:38", "url": "https://files.pythonhosted.org/packages/62/c7/4de22ebf1ccf8908a7251b8e5d428408754289a9189661a57d6e61609541/vmshepherd-1.3.3.tar.gz" } ], "1.3.5": [ { "comment_text": "", "digests": { "md5": "ee16c5938511415d71b8a198bfcba5f0", "sha256": "d9d8a4f557033152dd223fc7c9c2783287c8041632fe84a7db8a18f4e7bccce8" }, "downloads": -1, "filename": "vmshepherd-1.3.5.tar.gz", "has_sig": false, "md5_digest": "ee16c5938511415d71b8a198bfcba5f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 374988, "upload_time": "2019-08-07T10:49:17", "url": "https://files.pythonhosted.org/packages/59/e2/7eee6933e97d209a9f692d18455f65afc8f1ccd37675cc39bfb235855388/vmshepherd-1.3.5.tar.gz" } ], "1.3.6": [ { "comment_text": "", "digests": { "md5": "44d30a61384f368520ca53a58109981d", "sha256": "fa5b6327074d1da700e3e046cadec2575d7f66ef696f69a05ff80f064fd683c7" }, "downloads": -1, "filename": "vmshepherd-1.3.6.tar.gz", "has_sig": false, "md5_digest": "44d30a61384f368520ca53a58109981d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 373094, "upload_time": "2019-08-09T11:47:47", "url": "https://files.pythonhosted.org/packages/21/dc/fe68fe77673404554190111e1b7f53b3abf0e743935a363c642426dd6609/vmshepherd-1.3.6.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "a2ca9e944b515f329d1498e3c425c427", "sha256": "3f469ee1713876719ee4a6c3e46ce0f948abb888b0bbd27f1f5868cc7f386806" }, "downloads": -1, "filename": "vmshepherd-1.4.0.tar.gz", "has_sig": false, "md5_digest": "a2ca9e944b515f329d1498e3c425c427", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 373250, "upload_time": "2019-08-13T08:16:13", "url": "https://files.pythonhosted.org/packages/c1/2b/c83b134dbc0f7957df21ba78dacd9254cf1d412e1020ea80930d8ee2847e/vmshepherd-1.4.0.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "4610b5cea25458091717217a3182d4e5", "sha256": "02672682ca8a26f9162e68f9a6795336e5d04cf762691c989b0d16f27605b1ae" }, "downloads": -1, "filename": "vmshepherd-1.4.1.tar.gz", "has_sig": false, "md5_digest": "4610b5cea25458091717217a3182d4e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 373355, "upload_time": "2019-08-14T10:14:21", "url": "https://files.pythonhosted.org/packages/6f/38/1c48fd6385fa5d2193bfa2a9fadbd9ec41acaf46c9a537997dc7812b63c1/vmshepherd-1.4.1.tar.gz" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "477771c4579fed2366ba9db42000476b", "sha256": "4264e206c72230e8f0bb8f4242950c78ed700070ce1898d5e2109042dbcb01b5" }, "downloads": -1, "filename": "vmshepherd-1.4.2.tar.gz", "has_sig": false, "md5_digest": "477771c4579fed2366ba9db42000476b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 373369, "upload_time": "2019-08-14T12:47:32", "url": "https://files.pythonhosted.org/packages/a2/e5/410ea263f94f735d3499c5214e027f5842b309a804a9a122413784c45f4b/vmshepherd-1.4.2.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "aebbace2304507253553345f8144d2f7", "sha256": "65adf60e4fa4d7e39c9abd07b6f990d81fa7fb651619a38de645f0dbd7ed9c4e" }, "downloads": -1, "filename": "vmshepherd-1.5.0.tar.gz", "has_sig": false, "md5_digest": "aebbace2304507253553345f8144d2f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 373563, "upload_time": "2019-08-26T12:47:27", "url": "https://files.pythonhosted.org/packages/02/12/6eb81d2daffe5357f56ee95f78b8c3af231e0b5a0fde2a3ead84b23a2d92/vmshepherd-1.5.0.tar.gz" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "5d1230a1386851cc92762e860df3d71c", "sha256": "4203bca76f5dd51878757fae6e247eb093937461ce98564ebefdb7187cecb43b" }, "downloads": -1, "filename": "vmshepherd-1.5.1.tar.gz", "has_sig": false, "md5_digest": "5d1230a1386851cc92762e860df3d71c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 373546, "upload_time": "2019-08-27T06:53:02", "url": "https://files.pythonhosted.org/packages/11/62/dfbb2538891787c600a19d3748e8d0ff3c16f834aca963870b607a69cf43/vmshepherd-1.5.1.tar.gz" } ], "1.5.2": [ { "comment_text": "", "digests": { "md5": "47158da9e10b72aac2aecbfff76b64b5", "sha256": "94e8dc32bed93a1f694889437f440bb8dd44e708dec7151a71153da4482bd6c2" }, "downloads": -1, "filename": "vmshepherd-1.5.2.tar.gz", "has_sig": false, "md5_digest": "47158da9e10b72aac2aecbfff76b64b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 375499, "upload_time": "2019-09-03T11:44:52", "url": "https://files.pythonhosted.org/packages/56/fb/969f6e752fd4565ee19df0ec5cc6629662465bb6775626f4b724c77d176e/vmshepherd-1.5.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "47158da9e10b72aac2aecbfff76b64b5", "sha256": "94e8dc32bed93a1f694889437f440bb8dd44e708dec7151a71153da4482bd6c2" }, "downloads": -1, "filename": "vmshepherd-1.5.2.tar.gz", "has_sig": false, "md5_digest": "47158da9e10b72aac2aecbfff76b64b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 375499, "upload_time": "2019-09-03T11:44:52", "url": "https://files.pythonhosted.org/packages/56/fb/969f6e752fd4565ee19df0ec5cc6629662465bb6775626f4b724c77d176e/vmshepherd-1.5.2.tar.gz" } ] }