{ "info": { "author": "George Brighton", "author_email": "oss@gebn.co.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Internet :: WWW/HTTP", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "beam\n====\n\n.. image:: https://img.shields.io/pypi/status/beam.svg\n :target: https://pypi.python.org/pypi/beam\n.. image:: https://img.shields.io/pypi/v/beam.svg\n :target: https://pypi.python.org/pypi/beam\n.. image:: https://img.shields.io/pypi/pyversions/beam.svg\n :target: https://pypi.python.org/pypi/beam\n.. image:: https://travis-ci.org/gebn/beam.svg?branch=master\n :target: https://travis-ci.org/gebn/beam\n.. image:: https://coveralls.io/repos/github/gebn/beam/badge.svg?branch=master\n :target: https://coveralls.io/github/gebn/beam?branch=master\n\nA lightweight wrapper for the SolusVM client API.\n\nFeatures\n--------\n\n- Query a host's memory, bandwidth, IP addresses and storage usage.\n- Boot, reboot and shutdown machines.\n- Configurable to work with any SolusVM provider.\n- Command line client and intuitive Python module for your own scripts.\n\nSetup\n-----\n\n1. Run ``pip install beam`` to download the module.\n2. Create your ``.beam.ini`` inventory file as below.\n\nInventory\n~~~~~~~~~\n\nThe inventory file holds information about your hosting provider(s) and host(s),\nso beam knows how to contact the relevant API endpoints and what credentials to\nuse. Here's a sample file:\n\n.. code::\n\n [special:vendors]\n ramnode = https://vpscp.ramnode.com\n vendor2 = https://vendor2-panel.com\n default = ramnode\n\n [nyc-1]\n key = nyc-1_host_key\n hash = nyc-1_host_hash\n\n [ams-1]\n key = ams-1_host_key\n hash = ams-1_host_hash\n vendor = vendor2\n\nThis file defines two hosts, ``nyc-1``, hosted with RamNode, and ``ams-1``,\nhosted with FlipHost. At the top are the vendor names in a special vendors\nsection (all other sections are assumed to represent hosts). The format maps a\nvendor name to their base endpoint for the SolusVM API. The ``default``\ndirective indicates the implicit vendor of every host, and must be specified if\nmore than one vendor is defined.\n\nEach host has its own section. The correct ``key`` and ``hash`` values can be\noptained from the SolusVM control panel used by your vendor. If a host is not\nprovided by the default vendor, a ``vendor`` directive specifies the correct\none.\n\nUsage\n-----\n\nBeam provides both a Python library for programmatic access to your hosts, and\na simple CLI that wraps it in a couple of lines of code.\n\nCLI\n~~~\n\nThe CLI client can be used to find information about a single host.\n\n.. code::\n\n $ beam --help\n usage: beam [-h] [-V]\n (-A {boot,reboot,shutdown} | -a ATTRIBUTES [ATTRIBUTES ...])\n [host]\n\n A lightweight wrapper for the SolusVM client API.\n\n positional arguments:\n host the identifier of the host whose information to\n retrieve\n\n optional arguments:\n -h, --help show this help message and exit\n -V, --version show program's version number and exit\n -A {boot,reboot,shutdown}, --action {boot,reboot,shutdown}\n an action to execute against the host\n -a ATTRIBUTES [ATTRIBUTES ...], --attributes ATTRIBUTES [ATTRIBUTES ...]\n one or more attributes of the host to retrieve\n $ beam -a bandwidth.free_percentage\n 0.4983459835\n $ beam nyc-1 -a primary_ip\n 2604:180:2:32b::498b\n $ beam ams-1 -a is_online memory.used_bytes\n True\n 34578234983\n $ beam nyc-1 -A shutdown\n OK\n\nLibrary\n~~~~~~~\n\n.. code:: python\n\n import beam\n\n # shutdown a specific host\n host = beam.host('nyc-1') # name, key or hash\n if host.is_online:\n host.shutdown()\n\n # boot all offline hosts\n [host.boot() for host in beam.hosts() if not host.is_online]\n\n # get a list of hosts using above 90% of their memory\n hosts = [host for host in beam.hosts()\n if host.memory.used_percentage > .9]\n\n # get a list of hosts with less than 10 GiB of storage left\n hosts = [host for host in beam.hosts()\n if host.storage.free_bytes < 1024 ** 3 * 10]\n\nRoadmap\n-------\n\n- Generate documentation.\n- Increase unit test coverage to 100%, and implement some integration tests.\n\nEtymology\n---------\n\nAlthough \"solus\" means alone, that's a tad depressing. Solus also conjures up\nimages of the sun for me. The sun *beam*\\ s down - and the name was available on\nPyPI - so beam it was.\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/gebn/beam", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "beam", "package_url": "https://pypi.org/project/beam/", "platform": "", "project_url": "https://pypi.org/project/beam/", "project_urls": { "Homepage": "https://github.com/gebn/beam" }, "release_url": "https://pypi.org/project/beam/0.5.0/", "requires_dist": [ "six (>=1.9.0)", "requests" ], "requires_python": "", "summary": "A lightweight wrapper for the SolusVM client API.", "version": "0.5.0" }, "last_serial": 4744076, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "ae5c86e6fbe88b114fcfaf81b719bc6d", "sha256": "0618e7af2efa923ebdcfd959622e0a9381f5e96ec2a5d029ea0c0b041f169855" }, "downloads": -1, "filename": "beam-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "ae5c86e6fbe88b114fcfaf81b719bc6d", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 16006, "upload_time": "2016-12-11T21:09:50", "url": "https://files.pythonhosted.org/packages/03/5f/5f7ab69ae9573bc747cab1938ef44fead60503c0f5dce7e86e44a7c30a82/beam-0.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b4249f6872c7a1e87199c331be553624", "sha256": "3d0fe6d189afc25fcf04eaf071cf10802a2dd675a5056068a50f1a161b46648e" }, "downloads": -1, "filename": "beam-0.1.0.tar.gz", "has_sig": false, "md5_digest": "b4249f6872c7a1e87199c331be553624", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7801, "upload_time": "2016-12-11T21:09:48", "url": "https://files.pythonhosted.org/packages/79/cd/3fe6ac518197397ffeff3f4e53da9f4505ec79e33be84321e3c1471cc51e/beam-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "4fa36c9bacd616f213dd56fa4027b63d", "sha256": "f8d4ded75af70895b0fa398e7f1d5491712390295661b7a21da84202ab1f620b" }, "downloads": -1, "filename": "beam-0.1.1.tar.gz", "has_sig": false, "md5_digest": "4fa36c9bacd616f213dd56fa4027b63d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7785, "upload_time": "2016-12-12T01:45:06", "url": "https://files.pythonhosted.org/packages/94/6f/36227952f6189067ce8e8960b76fde720d3624f663f762d25f73b222c3a3/beam-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "620ecb784b2ff63dbf73a60b98942791", "sha256": "3fbe52239d08f893247cad4b023d1a341fff43d8e769ad005adaba5928afb5c6" }, "downloads": -1, "filename": "beam-0.2.0.tar.gz", "has_sig": false, "md5_digest": "620ecb784b2ff63dbf73a60b98942791", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8301, "upload_time": "2016-12-12T02:50:15", "url": "https://files.pythonhosted.org/packages/60/7d/92b8cf01e80dbeafebb83055c170f8f22cca31974c1a0b5370b5da030b9b/beam-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "c860f785655098546ab58b509c512681", "sha256": "0faff8d908e9f30d74d360f1bb62da600d38b49a86ed135bb72fdc505414bac2" }, "downloads": -1, "filename": "beam-0.3.0.tar.gz", "has_sig": false, "md5_digest": "c860f785655098546ab58b509c512681", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9477, "upload_time": "2016-12-14T20:15:32", "url": "https://files.pythonhosted.org/packages/df/58/06bfdc1e64065aaf46e4877ccc772c0fb5aaf28e99ef808c3c8d6fd278f6/beam-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "b4d52d461521069bc87eacd1c5233c83", "sha256": "54cde176c66b66ccb159f0fee31d1d16f5c6e0a545c2bc552f008a055ba70575" }, "downloads": -1, "filename": "beam-0.4.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "b4d52d461521069bc87eacd1c5233c83", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20146, "upload_time": "2017-07-02T14:59:06", "url": "https://files.pythonhosted.org/packages/9d/37/c13c4a6850c8937c0e13af9018adf55e49cce85b57c885c0db3abd673239/beam-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9bbd9f755bedd278592576dc1a7ab59d", "sha256": "330a193d01a67c79b1a001d6d5ec97a8a70ba7ac108df84d2521fa64bcd6669b" }, "downloads": -1, "filename": "beam-0.4.0.tar.gz", "has_sig": true, "md5_digest": "9bbd9f755bedd278592576dc1a7ab59d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10965, "upload_time": "2017-07-02T14:59:34", "url": "https://files.pythonhosted.org/packages/f0/1b/ca092b9f9ee9e22227edfce4d318eaf17919a547e7d07ef526a1feff2d5c/beam-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "4afeca59f3fa063ae1918038c7dc8e4a", "sha256": "533d225f196b2dec18e3c750351fe196e0f2a03ddb95f0bacebb17233c7713fe" }, "downloads": -1, "filename": "beam-0.5.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "4afeca59f3fa063ae1918038c7dc8e4a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20181, "upload_time": "2019-01-26T17:29:52", "url": "https://files.pythonhosted.org/packages/d2/e7/f5e61860a9a65a640a5c39db65aa1f94ec2359fe3b0389b1ee713282bea8/beam-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0ce3323f54c87bab3a3692e42cb246d", "sha256": "12931cff1df0a9b3518b8d128a94bcbc3f9770a7b9593b5135ffc9905925dbae" }, "downloads": -1, "filename": "beam-0.5.0.tar.gz", "has_sig": true, "md5_digest": "f0ce3323f54c87bab3a3692e42cb246d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10989, "upload_time": "2019-01-26T17:30:01", "url": "https://files.pythonhosted.org/packages/0e/9f/c07501608c27f0fcb6ef509c6881922d041343f24589f110046bdcd50699/beam-0.5.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4afeca59f3fa063ae1918038c7dc8e4a", "sha256": "533d225f196b2dec18e3c750351fe196e0f2a03ddb95f0bacebb17233c7713fe" }, "downloads": -1, "filename": "beam-0.5.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "4afeca59f3fa063ae1918038c7dc8e4a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20181, "upload_time": "2019-01-26T17:29:52", "url": "https://files.pythonhosted.org/packages/d2/e7/f5e61860a9a65a640a5c39db65aa1f94ec2359fe3b0389b1ee713282bea8/beam-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0ce3323f54c87bab3a3692e42cb246d", "sha256": "12931cff1df0a9b3518b8d128a94bcbc3f9770a7b9593b5135ffc9905925dbae" }, "downloads": -1, "filename": "beam-0.5.0.tar.gz", "has_sig": true, "md5_digest": "f0ce3323f54c87bab3a3692e42cb246d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10989, "upload_time": "2019-01-26T17:30:01", "url": "https://files.pythonhosted.org/packages/0e/9f/c07501608c27f0fcb6ef509c6881922d041343f24589f110046bdcd50699/beam-0.5.0.tar.gz" } ] }