{ "info": { "author": "Wes Mason", "author_email": "wesley.mason@canonical.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: System :: Networking" ], "description": "trestus\n=======\nTrestus is a static status page generator that uses a `Trello `_ board as a data source.\n\nIt was inspired by the excellent `statuspage `_ project, which uses Github issues to drive a status page, and then stores on the same repo to be served via Github Pages, and `The Changelog Weekly `_, who use `Trello as a CMS `_ to generate their insanely useful newsletter.\n\nWhy?\n----\n\nBecause you should be informing your customers of outages and issues affecting the services they use, and Trello is a very fast and easy to use interface for defining outages and investigations through kanban cards/lanes.\n\nHow does it work?\n-----------------\n\nTrestus expects the board you tell it about to be setup on Trello with some specific lanes and labels available.\n\nWhen you add a card to the **Reported** or **Investigating** lane, label it with a severity and at least one service name, the card will show up in any one of those states on the generated status page.\n\n\nTrello:\n\n.. image:: images/trello1.png\n\nTrestus output:\n\n.. image:: images/status1.png\n :scale: 50%\n\n\nYour card can include markdown like any other Trello card and that will be converted to HTML on the generated status page, and any comments to the card will show up as updates to the status (and yes, markdown works in these too).\n\n\nTrello:\n\n.. image:: images/trello2.png\n\nTrestus output:\n\n.. image:: images/status2.png\n :scale: 50%\n\n\nWhen the outage has been solved, moving the card to the **Fixed** lane will resolve it (putting the status back into the green but keeping any descriptions/comments as historical backlog underneath).\n\n\nTrello:\n\n.. image:: images/trello3.png\n\nTrestus output:\n\n.. image:: images/status3.png\n :scale: 50%\n\nLanes\n*****\n\n * **Reported**\n * **Investigating**\n * **Fixed**\n\nLabels\n******\n\n * **status:degraded performance**\n * **status:major outage**\n\nAny other label you add (without the 'status:' prefix) will be a service name.\n\nInstallation\n------------\n\nFrom PyPI with pip:\n\n.. code-block::\n \n $ venv ./trestus-env\n $ ./trestus-env/bin/pip install trestus\n\n\nAs a `snap package `_:\n\n.. code-block::\n \n $ sudo snap install trestus\n\nUsage\n-----\n\n.. code-block::\n \n usage: trestus [-h] [-k KEY] [-s SECRET] [-t TOKEN] [-S TOKEN_SECRET] [-b BOARD] [-T TEMPLATE] [-d TEMPLATE_DATA] output_path\n \n Generate a status page from a Trello board\n \n positional arguments:\n output_path Path to output rendered HTML to\n \n optional arguments:\n -h, --help show this help message and exit\n -k KEY, --key KEY Trello API key\n -s SECRET, --secret SECRET\n Trello API secret\n -t TOKEN, --token TOKEN\n Trello API auth token\n -S TOKEN_SECRET, --token-secret TOKEN_SECRET\n Trello API auth token secret\n -b BOARD, --board-id BOARD\n Trello board ID\n -T TEMPLATE, --custom-template TEMPLATE\n Custom jinja2 template to use instead of default\n -d TEMPLATE_DATA, --template-data TEMPLATE_DATA\n If using --custom-template, you can provide a YAML file to load in data that would be available in the template the template\n --skip-css Skip copying the default trestus.css to the output dir.\n\n\nExample usage\n*************\n\n.. code-block::\n \n trestus -k -s -t \\\n -S -b ./test.html\n\nThis will generatea ``test.html`` in your current directory, and also copy over ``trestus.css`` (to skip this and use your own CSS, use the ``--skip-css`` option).\n\nIf you want to provide your own Jinja2 template for generating the status page, you can use the ``-T``/``--custom-template`` option.\n\nFor example we use this feature to translate our Three-Letter-Acronyms for service to more customer friendly long-form names, by pairing with the ``-d``/``-template-data`` option to pass in a YAML dict of aliases:\n\n.. code-block::\n \n trestus -k -s -t \\\n -S -b --T mystatus.html.j2 \\\n -d myaliases.yaml --skip-css ./test.html\n\nAs mentioned above, we're also using the ``--skip-css`` flag here to skip copying the default template CSS over, and instead use our own to apply a different logo/styling etc.\n\n\nHow do I hook it up to Trello?\n------------------------------\n\nThe way I have achieved this is by creating a \"secret\" URL routed to a VM that runs a script which invokes trestus with the ``flock`` utility to limit invocations in a queue.\n\nI then hooked this address up to a webhook on the right Trello board, using Trello's `webhook API `_, so now whenver a change happens on FILLTHISINthe board an invocation of trestus is queued up on the target host.\n\n**Nota bene**: be careful about how this webhook handler is exposed, for example I have allowed only GET/POST in this situation as these are the actions Trello expect to be available (for verification, and hook postbacks respectively), but the URL also has a randomly generated portion.\n\nBugs, issues, improvements, features requests and support\n---------------------------------------------------------\n\nIf you have discovered an issue with trestus, or have an idea for improving it, please feel free to `hit up GitHub issues `_ and I'll work with you to improve things. \u2665 \u263a", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://canonical-ols.github.io/trestus/", "keywords": null, "license": "AGPL3", "maintainer": null, "maintainer_email": null, "name": "trestus", "package_url": "https://pypi.org/project/trestus/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/trestus/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://canonical-ols.github.io/trestus/" }, "release_url": "https://pypi.org/project/trestus/1.0.2/", "requires_dist": null, "requires_python": null, "summary": "Static status page generator that uses a Trello board as a data source", "version": "1.0.2" }, "last_serial": 2350405, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "62c1c4c6f558e39048bbf7667ec8e82a", "sha256": "7a9531f757ac1f5180c608adc25f9b6b3e7de117d36ddfd6e14fccef9dfe40e2" }, "downloads": -1, "filename": "trestus-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "62c1c4c6f558e39048bbf7667ec8e82a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 12971, "upload_time": "2016-09-17T16:26:04", "url": "https://files.pythonhosted.org/packages/4a/40/a8fc373682d1b4e212d3148457cbf03b67c73c97d29b305aceb3fcf6a443/trestus-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "855652aabcd577cd89af888adcbf549b", "sha256": "faa00df2f3c78f3e4c78e5c1bb279ac4fbcc6174ea4d868037cc9cc0047c983d" }, "downloads": -1, "filename": "trestus-1.0.0.tar.gz", "has_sig": false, "md5_digest": "855652aabcd577cd89af888adcbf549b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24288, "upload_time": "2016-09-17T16:26:01", "url": "https://files.pythonhosted.org/packages/69/03/02a3065ee8b4dbcd06c7e6797545242f25e0fa2db7be26dbddff92d677f8/trestus-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "8dcd912bc95fe2e417a003cd1548d352", "sha256": "5dec90237c446d1da99555e5ab6b5cdf6c9ff3febb7f96ed57c3264ad1989ddb" }, "downloads": -1, "filename": "trestus-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8dcd912bc95fe2e417a003cd1548d352", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 12972, "upload_time": "2016-09-17T16:33:28", "url": "https://files.pythonhosted.org/packages/7d/70/45f5e3e0066edc6606373d0020b84b20f94c130281c8eb67bbf4283bd070/trestus-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "239b7fd7c7c51391af995c6fca26160a", "sha256": "e2b06b7f540dcd531383944a73c88183b182836eeba500ad9d6708f129c64fe1" }, "downloads": -1, "filename": "trestus-1.0.1.tar.gz", "has_sig": false, "md5_digest": "239b7fd7c7c51391af995c6fca26160a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 151216, "upload_time": "2016-09-17T16:33:24", "url": "https://files.pythonhosted.org/packages/9f/7b/754434d7969c583e9cb8eeab0b0ccac2cc1f7b7f2ca3a5f90ef283caeac7/trestus-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "689ab1d08c3b135d6e8b7496b385fa04", "sha256": "17dab0a255ad732a7de17c08cf7fade570ff4d0eb45244d91b1acb7183cb650c" }, "downloads": -1, "filename": "trestus-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "689ab1d08c3b135d6e8b7496b385fa04", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 14900, "upload_time": "2016-09-19T10:19:36", "url": "https://files.pythonhosted.org/packages/08/77/7c82b0e884932a43abbdb601051c4b9d764e66e9cc5ab9f684b1e57338f4/trestus-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b4e5bffede3251722e21a79921753778", "sha256": "6e38bcaa3d9ecdc0d3c79006d617d4ae9ca690c7184bb674c6fa909785592577" }, "downloads": -1, "filename": "trestus-1.0.2.tar.gz", "has_sig": false, "md5_digest": "b4e5bffede3251722e21a79921753778", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 153369, "upload_time": "2016-09-19T10:19:33", "url": "https://files.pythonhosted.org/packages/0c/dc/6a0d5788191c19d5b1e61efa83026862ed447dec4bdb6b3f4be4f6d7a81c/trestus-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "689ab1d08c3b135d6e8b7496b385fa04", "sha256": "17dab0a255ad732a7de17c08cf7fade570ff4d0eb45244d91b1acb7183cb650c" }, "downloads": -1, "filename": "trestus-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "689ab1d08c3b135d6e8b7496b385fa04", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 14900, "upload_time": "2016-09-19T10:19:36", "url": "https://files.pythonhosted.org/packages/08/77/7c82b0e884932a43abbdb601051c4b9d764e66e9cc5ab9f684b1e57338f4/trestus-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b4e5bffede3251722e21a79921753778", "sha256": "6e38bcaa3d9ecdc0d3c79006d617d4ae9ca690c7184bb674c6fa909785592577" }, "downloads": -1, "filename": "trestus-1.0.2.tar.gz", "has_sig": false, "md5_digest": "b4e5bffede3251722e21a79921753778", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 153369, "upload_time": "2016-09-19T10:19:33", "url": "https://files.pythonhosted.org/packages/0c/dc/6a0d5788191c19d5b1e61efa83026862ed447dec4bdb6b3f4be4f6d7a81c/trestus-1.0.2.tar.gz" } ] }