{ "info": { "author": "Exosite", "author_email": "danslimmon@exosite.com", "bugtrack_url": null, "classifiers": [], "description": "Chube: Object-oriented bindings for the Linode API\n============================================================\n\nChube is a Python library providing an object-oriented interface to the\n[Linode API][linode-api], built on top of [linode-python][tjfontaines].\nIt's very easy to use. But don't take my word for it; check out some\n[examples](#examples)!\n\n\nInstallation\n------------------------------------------------------------\n\n**Step 1**: Install the PyPI package:\n\n```bash\n pip install chube\n```\n\n**Step 2** (optional): Give it your API key:\n\n```bash\n echo -e \"---\\napi_key: \" > ~/.chube\n```\n\nThat's it!\n\nTo find your API key, log in to the [Linode Manager][linode-mgr], click\non **My Profile**, and scroll down to the **API Key** section.\n\n\n\nUsage\n------------------------------------------------------------\n\nChube can be used either interactively or as a library.\n\n### Interactive use: chuber\n\nChube is distributed with an executable script called `chuber`, which\njust drops you into a Python interpreter with an API connection ready to\ngo. It requires that you've created the file `~/.chube` as described in\nthe [Installation](#installation) section.\n\n`chuber` should be in your `PATH`; look at the [Examples](#examples)\nsection to see how to use it.\n\n### Library\n\nChube can also be used as a library. It can either load your API key\nfrom `~/.chube` like so:\n\n```python\n from chube import *\n load_chube_config()\n```\n\nOr you can feed it an API key from within the script, like so:\n\n```python\n from chube import *\n chube_api_handler.api_key = \"RXIgbWFoIGdlcmQgQVBJIGtlcno\"\n```\n\n\n\nExamples\n------------------------------------------------------------\n\nIf you're like me, you learn best by reading examples. Here are some.\n\nThey don't run the whole gamut of what Chube can do, but they should\ngive you an idea of the conventions to expect.\n\n### List all Linodes whose names start with a given string\n\n```python\n for node in Linode.search(label_begins='foo-'):\n print node.label\n```\n\nTo list each Linode with its public IP address(es),\n\n```python\n for node in Linode.search(label_begins='foo-'):\n pub_ips = [ip for ip in node.ipaddresses if ip.is_public]\n print node.label + \"\\t\" + pub_ips\n```\n\n### Create a Linode\n\n```python\n p = Plan.find(label=\"Linode 1024\")\n d = Datacenter.find(location_begins=\"dallas\")\n node = Linode.create(plan=p, datacenter=d, payment_term=1)\n```\n\n### Set a node's label\n\n```python\n node = Linode.find(label='foo-host')\n node.label = \"bar-host\"\n node.save()\n```\n\n### Determine whether a node is running\n\n```python\n for node in Linode.search():\n if not node.is_up():\n print \"Node '%s' is NOT running\" % (node.label,)\n```\n\n### Add a disk to a Linode, based on a standard distribution\n\n```python\n node = Linode.find(label_begins='some-unique-linode')\n distro = Distribution.find(label=\"Debian 7\")\n disk = node.create_disk(\n distribution=distro,\n label='foo-disk',\n size=8000,\n root_pass=\"god\")\n```\n\n### Boot a Linode\n\nContinuing the last example,\n\n```python\n kern = Kernel.find(label_begins=\"latest 64 bit\")\n config = Config.create(\n linode=node,\n kernel=kern,\n label=\"foo-config\",\n disks=[disk, None, None, None, None, None, None, None, None])\n job = node.boot(config=config)\n```\n\n### Reboot a Linode in single-user mode\n\n```python\n config = node.config[0]\n # For `init=/bin/bash` you'd use \"binbash\" instead of \"single\"\n config.run_level = \"single\"\n config.save()\n node.reboot()\n```\n\n### Wait for a job to finish\n\nContinuing the last example,\n\n```python\n job.wait()\n```\n\n### Update a Stackscript\n\n```python\n stackscript = Stackscript.find(is_public=False, label=\"my-stack-script\")\n stackscript.script = \"#!/bin/bash\\n\\necho Hurr durr, I'm a stackscript\"\n stackscript.rev_note = \"Commit ID 123456789abcdef\"\n stackscript.save()\n```\n\n### Create a disk based on a Stackscript\n\n```python\n node = Linode.find(label=\"foo-host\")\n distro = Distribution.find(label=\"Debian 7\")\n stackscript = Stackscript.find(is_public=False, label=\"my-stack-script\")\n # This is where you put your UDF responses:\n stack_input = StackscriptInput(param_1=\"blah blah\", param_2=\"yadda yadda\")\n stack_input.param_3 = \"hippity hop\"\n\n disk = Disk.create(linode=node,\n stackscript=stackscript,\n ss_input=stack_input,\n distribution=distro,\n label='foo-disk',\n size=8000,\n root_pass=\"god\")\n```\n\n### List the DNS records in a domain\n\n```python\n domain = Domain.find(domain=\"example.com\")\n for record in domain.search_records():\n print \"%-20s => %s\" % (record.name, record.target)\n```\n\n### Add DNS records to a domain\n\n```python\n domain = Domain.find(domain=\"example.com\")\n domain.add_record(record_type=\"A\", name=\"localhost\", target=\"127.0.0.1\")\n domain.add_record(record_type=\"MX\", name=\"\", target=\"mail.example.com\",\n priority=10)\n```\n\n### Add an IP address to the AXFR transfer list\n\n```python\n domain = Domain.find(domain=\"example.com\")\n domain.axfr_ips.append(\"127.0.0.1\")\n```\n\n### Change a DNS record's TTL\n\n```python\n record.ttl_sec = 600\n record.save()\n```\n\n### Delete a DNS record\n\n```python\n domain = Domain.find(domain=\"example.com\")\n record = domain.find_record(name=\"mail\")\n record.destroy()\n```\n\n### Create a Nodebalancer and name it\n\n```python\n dallas = Datacenter.find(label_begins='dallas')\n balancer = Nodebalancer.create(datacenter=dallas, payment_term=1)\n balancer.label = \"my-kickass-nodebalancer\"\n balancer.save()\n```\n\n### Add a Config to a Nodebalancer\n\nContinuing the example above...\n\n```python\n balancer_config = balancer.add_config()\n balancer_config.protocol = \"http\"\n balancer_config.port = 80\n balancer_config.save()\n```\n\n### Add a Node to a Nodebalancer config\n\n```python\n http_config = balancer.find_config(protocol=\"http\", port=80)\n node = http_config.add_node(label=\"webserver-06\", address=\"192.168.255.255:80)\n```\n\n### Change a node's attributes\n\n```python\n node_to_change = balancer_config.find_node(label=\"webserver-14\")\n node_to_change.weight += 50\n node_to_change.save()\n```\n\n\n[linode-api]: https://www.linode.com/api/\n[tjfontaines]: https://github.com/tjfontaine/linode-python\n[linode-mgr]: https://manager.linode.com", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/chube/", "keywords": null, "license": "LICENSE.txt", "maintainer": null, "maintainer_email": null, "name": "chube", "package_url": "https://pypi.org/project/chube/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/chube/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pypi.python.org/pypi/chube/" }, "release_url": "https://pypi.org/project/chube/0.1.21/", "requires_dist": null, "requires_python": null, "summary": "Object-oriented bindings for the Linode API", "version": "0.1.21" }, "last_serial": 1479226, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "0034581860339928cdf5f7ed70481e67", "sha256": "e55806702ee08848dafd9922510dd56569ef19edfa0eea23a8ce7c8a461ce72e" }, "downloads": -1, "filename": "chube-0.1.0.tar.gz", "has_sig": false, "md5_digest": "0034581860339928cdf5f7ed70481e67", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14232, "upload_time": "2013-06-14T20:12:07", "url": "https://files.pythonhosted.org/packages/37/3d/9a67e6ef589c641163f7d8a3fd3076d7c280c0251900294488a85617df3b/chube-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e930d815854691fd9383b1487ed8de3f", "sha256": "a45a1b8b392cee5cab543ba1fa84d73bd42e26ffba6d16afe47909ef0752a3b2" }, "downloads": -1, "filename": "chube-0.1.1.tar.gz", "has_sig": false, "md5_digest": "e930d815854691fd9383b1487ed8de3f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14273, "upload_time": "2013-06-14T20:16:32", "url": "https://files.pythonhosted.org/packages/3d/01/647e89ef1b1d950b92b011229f42c9b8fb8297f99d92c68b17dc6dac354e/chube-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "6c384d3979dff07f23e298bd6d53af7a", "sha256": "726a2d1748c86b8101a532689e85d30ac027b5c3051f96ea3237907cf9c262d9" }, "downloads": -1, "filename": "chube-0.1.10.tar.gz", "has_sig": false, "md5_digest": "6c384d3979dff07f23e298bd6d53af7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14510, "upload_time": "2013-06-19T22:04:11", "url": "https://files.pythonhosted.org/packages/cb/af/ee309b0ce4acc582aa8c04fdd6069131c19ab0dd83403b7639094e5f2ae2/chube-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "258369f767aab703230924292bc6d559", "sha256": "0e268fa7e243ab1a43474af2548fe4d388f075959678f22afb84e3a798370101" }, "downloads": -1, "filename": "chube-0.1.11.tar.gz", "has_sig": false, "md5_digest": "258369f767aab703230924292bc6d559", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14118, "upload_time": "2013-06-20T20:08:50", "url": "https://files.pythonhosted.org/packages/88/ab/67e21af2be3078d116db635a4b10d15baedabea1b568b588cf905984272a/chube-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "b5020b3da0da5a40f696cecb7ecda768", "sha256": "cd7839ca47dfef9eae2836ef94a38ccaa617a3ad593beca744f4b0918f1ce518" }, "downloads": -1, "filename": "chube-0.1.12.tar.gz", "has_sig": false, "md5_digest": "b5020b3da0da5a40f696cecb7ecda768", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18184, "upload_time": "2013-06-28T20:56:50", "url": "https://files.pythonhosted.org/packages/68/a8/32d263949d407f4ec5c2bbe34867b62c4595acbcbf957081bbe84a0e948d/chube-0.1.12.tar.gz" } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "3d365b7713087c4898c15e4f9356ecb6", "sha256": "810e0f7d5cda1c7fa303f5995eba0725d147595f721ff7c13c4cd8dc65e6b7b8" }, "downloads": -1, "filename": "chube-0.1.13.tar.gz", "has_sig": false, "md5_digest": "3d365b7713087c4898c15e4f9356ecb6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18688, "upload_time": "2013-07-01T21:49:14", "url": "https://files.pythonhosted.org/packages/51/19/bca58ee545e1fab70bc36c9f7f65f4631ed52574eb45cbe2e43c16a1f653/chube-0.1.13.tar.gz" } ], "0.1.14": [ { "comment_text": "", "digests": { "md5": "1fc079e7efaa39c9726201995246e96e", "sha256": "652271b87e06e6678b5c3cb761d39aaf91ce58e9671b008d06739e9f8192f7a9" }, "downloads": -1, "filename": "chube-0.1.14.tar.gz", "has_sig": false, "md5_digest": "1fc079e7efaa39c9726201995246e96e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18696, "upload_time": "2013-07-02T22:58:58", "url": "https://files.pythonhosted.org/packages/1d/19/69fecbe63738480e5befa11d897d5bf91ed0121914da13d4809be5c1eb33/chube-0.1.14.tar.gz" } ], "0.1.15": [ { "comment_text": "", "digests": { "md5": "67a01cea35fcf30f17f65b3aa14c823b", "sha256": "ebca9bbad784f864f127f9ce0d7f5e34e66a05ff9d6476fc0957c6d17a59aa05" }, "downloads": -1, "filename": "chube-0.1.15.tar.gz", "has_sig": false, "md5_digest": "67a01cea35fcf30f17f65b3aa14c823b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20226, "upload_time": "2013-07-19T22:18:53", "url": "https://files.pythonhosted.org/packages/15/6f/0c3a64fcc82fe2fcfa11728013c0dd3211962cdad88d47228f1978c3da41/chube-0.1.15.tar.gz" } ], "0.1.16": [ { "comment_text": "", "digests": { "md5": "745087b618a20fe59b32d29a3b06fda2", "sha256": "d4612813497d7eae0311586875ecb7131a3b840dfd7e757c3e9868d31e470fce" }, "downloads": -1, "filename": "chube-0.1.16.tar.gz", "has_sig": false, "md5_digest": "745087b618a20fe59b32d29a3b06fda2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20308, "upload_time": "2013-07-19T22:28:14", "url": "https://files.pythonhosted.org/packages/29/87/d65acb3e70a1e18dedfe43a0a5631c639854b1bb6724c1cd27e87c1a0f87/chube-0.1.16.tar.gz" } ], "0.1.17": [ { "comment_text": "", "digests": { "md5": "b463f5ea0f4a42543c81d221e0c019c5", "sha256": "31129dbf434d509217fa3dc934c6af6a995359995ace45d03cd9793bec3c5508" }, "downloads": -1, "filename": "chube-0.1.17.tar.gz", "has_sig": false, "md5_digest": "b463f5ea0f4a42543c81d221e0c019c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22484, "upload_time": "2013-07-24T21:31:29", "url": "https://files.pythonhosted.org/packages/a1/9e/0021f7e5985040de125048738cf8388694235f101a5961683396e436d206/chube-0.1.17.tar.gz" } ], "0.1.18": [ { "comment_text": "", "digests": { "md5": "7e0a5069d58f44798371550d088f3345", "sha256": "83747325546225063e4e6803243940334430ec11a99bd745b7279f42db599df6" }, "downloads": -1, "filename": "chube-0.1.18.tar.gz", "has_sig": false, "md5_digest": "7e0a5069d58f44798371550d088f3345", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22704, "upload_time": "2013-08-09T21:36:59", "url": "https://files.pythonhosted.org/packages/80/7c/b9c5e45854e3ea4e6086d5cce622d48f780b120f29a9d23a909a495d620e/chube-0.1.18.tar.gz" } ], "0.1.19": [ { "comment_text": "", "digests": { "md5": "1e0d07a1bc5a9e305726a93785ad500c", "sha256": "54206a5879e9e32d4ae9eb2632d2a796f2baf36a350bf52252249c0284052c2f" }, "downloads": -1, "filename": "chube-0.1.19.tar.gz", "has_sig": false, "md5_digest": "1e0d07a1bc5a9e305726a93785ad500c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23009, "upload_time": "2015-03-10T16:25:32", "url": "https://files.pythonhosted.org/packages/96/eb/a125d508aea5eab4eceab82845df2db9024e6f0f0caedd8278be5fea1430/chube-0.1.19.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a65b879e9826fcb0983f60285e6fd62e", "sha256": "2b66e8134f37701c884dd591ac9033909d581c624565aba260a3cf6ebd5ea731" }, "downloads": -1, "filename": "chube-0.1.2.tar.gz", "has_sig": false, "md5_digest": "a65b879e9826fcb0983f60285e6fd62e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14291, "upload_time": "2013-06-14T20:40:37", "url": "https://files.pythonhosted.org/packages/47/89/6045268c21edb969b77d703089de2d5520772a4e676bc93d035c1d0c3311/chube-0.1.2.tar.gz" } ], "0.1.20": [ { "comment_text": "", "digests": { "md5": "8a1f9952eb4cabefdec345747d8fc76b", "sha256": "613b7b545422e05517e107b9879812b8e5d1e714501846e9df03e78b78b00faa" }, "downloads": -1, "filename": "chube-0.1.20.tar.gz", "has_sig": false, "md5_digest": "8a1f9952eb4cabefdec345747d8fc76b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23028, "upload_time": "2015-03-26T20:51:57", "url": "https://files.pythonhosted.org/packages/59/7c/3107c8e129f773c4a9d503d1533b483ed521a01625d1d4f6668cda155638/chube-0.1.20.tar.gz" } ], "0.1.21": [ { "comment_text": "", "digests": { "md5": "5ac3ae09f18db61f553a0f68c4d6592d", "sha256": "135241e446d49bd722ee46fae29f446f2ed89c1fc60b967aa1f8d4daf1d55cdf" }, "downloads": -1, "filename": "chube-0.1.21.tar.gz", "has_sig": false, "md5_digest": "5ac3ae09f18db61f553a0f68c4d6592d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23016, "upload_time": "2015-03-26T20:57:39", "url": "https://files.pythonhosted.org/packages/d8/00/7a3aa8a31820b18224e678ed4bd50b856f8db1336c4f7f629279caea2ec5/chube-0.1.21.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "85ea07c6d4424ed8fea9f1d3a5521ef3", "sha256": "6bb86ce9b0fb45b38bed31694248d2f6480da5ecd06883934e7baa1ea04ccd0a" }, "downloads": -1, "filename": "chube-0.1.3.tar.gz", "has_sig": false, "md5_digest": "85ea07c6d4424ed8fea9f1d3a5521ef3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14280, "upload_time": "2013-06-14T20:44:08", "url": "https://files.pythonhosted.org/packages/a2/e8/8c8914b28015680930c7387a0ec538bb9a42d5b665b83a41fed40523dd1c/chube-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "bd3f53790e08fea21f648115598a3a64", "sha256": "bdd7e5d2605f68c21dc9ecf83bad3a7ddbd33164595e452eb704349cd7eb774c" }, "downloads": -1, "filename": "chube-0.1.4.tar.gz", "has_sig": false, "md5_digest": "bd3f53790e08fea21f648115598a3a64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14327, "upload_time": "2013-06-14T20:53:19", "url": "https://files.pythonhosted.org/packages/b6/03/737c7bd989c6625a5bc0c6b50660c13a2d5b89132ebbb00fa88a3a5fc26f/chube-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "212aaa6c511d3ed10a2e562d2a220722", "sha256": "13dff903d6cff471a02266038d82b7655254f20daac6d341578760ec4c89f381" }, "downloads": -1, "filename": "chube-0.1.5.tar.gz", "has_sig": false, "md5_digest": "212aaa6c511d3ed10a2e562d2a220722", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14091, "upload_time": "2013-06-17T19:53:42", "url": "https://files.pythonhosted.org/packages/8a/e3/3feec793b85feb6d0d92ef4a529bee6a9d554c5da5bfe4c70bd71e3f038d/chube-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "9d8f657c172ef40e2a12fd572db645ab", "sha256": "ed0c80284875ad09bae79040ccab7cb44c7b387db016009b7cbb2a09e8ceb8f0" }, "downloads": -1, "filename": "chube-0.1.6.tar.gz", "has_sig": false, "md5_digest": "9d8f657c172ef40e2a12fd572db645ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14093, "upload_time": "2013-06-17T20:03:20", "url": "https://files.pythonhosted.org/packages/90/be/6a72a887eae4517cc61f5e976de990e488b6656b1cc5fe1c54818a3ee3f5/chube-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "82a921a13f3bc9c8b0fac35851878277", "sha256": "6d6850a0aa641229d6477a860ad4a489e0f7dd1782fa18774355daa4a5008b04" }, "downloads": -1, "filename": "chube-0.1.7.tar.gz", "has_sig": false, "md5_digest": "82a921a13f3bc9c8b0fac35851878277", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14104, "upload_time": "2013-06-17T20:08:25", "url": "https://files.pythonhosted.org/packages/8a/1d/3f55ef1a9aa40305fe27bdcbdf12992bc50cb0433ba1282b835dac4d3237/chube-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "cb6bab1c66cd8b93cffc478b29e66c51", "sha256": "3c8bec8868a56df52fa06f06018e9654b2f68ffc192a6d2d255860dcf7ad5d9a" }, "downloads": -1, "filename": "chube-0.1.8.tar.gz", "has_sig": false, "md5_digest": "cb6bab1c66cd8b93cffc478b29e66c51", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14429, "upload_time": "2013-06-18T22:57:46", "url": "https://files.pythonhosted.org/packages/cc/23/8d4f42f53e7dba439634c21d9d18676eefd7bc9caa0f3968cf5e79cc7a2e/chube-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "c20f853ebdba8015aeee2bccda76047b", "sha256": "8ecca4954797d2244cfad2586043a4b27cea93b181cde8640f02e4838ba40a0d" }, "downloads": -1, "filename": "chube-0.1.9.tar.gz", "has_sig": false, "md5_digest": "c20f853ebdba8015aeee2bccda76047b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14440, "upload_time": "2013-06-19T21:33:19", "url": "https://files.pythonhosted.org/packages/fe/8e/b19756833dba14dd1c7dc9586104f7c656f7e04eeb86fe63d926a2815fe5/chube-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5ac3ae09f18db61f553a0f68c4d6592d", "sha256": "135241e446d49bd722ee46fae29f446f2ed89c1fc60b967aa1f8d4daf1d55cdf" }, "downloads": -1, "filename": "chube-0.1.21.tar.gz", "has_sig": false, "md5_digest": "5ac3ae09f18db61f553a0f68c4d6592d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23016, "upload_time": "2015-03-26T20:57:39", "url": "https://files.pythonhosted.org/packages/d8/00/7a3aa8a31820b18224e678ed4bd50b856f8db1336c4f7f629279caea2ec5/chube-0.1.21.tar.gz" } ] }