{ "info": { "author": "Pawel Garbacki, Changshu Liu", "author_email": "pawel@pinterest.com, csliu@pinterest.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Programming Language :: Python :: 2.7", "Topic :: System :: Distributed Computing" ], "description": "============\nPinball\n============\n\n.. image:: https://travis-ci.org/pinterest/pinball.svg\n :target: https://travis-ci.org/pinterest/pinball\n\nPinball is a scalable workflow manager.\n\n.. contents::\n :local:\n :depth: 1\n :backlinks: none\n\nDesign Principles\n----------------\n* **Simple**: based on easy to grasp abstractions\n* **Extensible**: component-based approach\n* **Transparent**: state stored in a readable format\n* **Reliable**: stateless computing components\n* **Scalable**: scales horizontally\n* **Admin-friendly**: can be upgraded without aborting workflows\n* **Feature-rich**: auto-retries, per-job-emails, runtime alternations, priorities, overrun policies, etc.\n\n\nInstallation\n----------------------\nIf you haven't already installed *libmysqlclient-dev*, *graphviz*. Please install them, e.g., ::\n\n $ sudo apt-get install libmysqlclient-dev\n $ sudo apt-get install graphviz\n\nIf you want to install *Pinball* through pypi package, please do ::\n\n $ sudo pip install pinball\n\nPinball uses mysql as persistent storage. Please also make sure mysql is available, and properly configured.\n\n\nQuick Start\n----------------------\n\nStart Pinball\n~~~~~~~~~~~~~\nOnce Pinball is installed either through pypi package installation or source code clone, we are ready to run it. There are four important components in Pinball.\n\n* **Master**: A frontend to a persistent state repository with an interface supporting atomic job token updates. To start master, ::\n\n $ python -m pinball.run_pinball -c path/to/pinball/yaml/configuration/file -m master\n\n* **UI**: A service reading directly from the storage layer used by the Master. To start UI, ::\n\n $ python -m pinball.run_pinball -c path/to/pinball/yaml/configuration/file -m ui\n\n* **Scheduler**: Scheduler is responsible for running workflows on a schedule. To start scheduler, ::\n\n $ python -m pinball.run_pinball -c path/to/pinball/yaml/configuration/file -m scheduler\n\n* **Worker**: A client of the Master. To start worker, ::\n\n $ python -m pinball.run_pinball -c path/to/pinball/yaml/configuration/file -m workers\n\n\nConfigure Pinball\n~~~~~~~~~~~~~~~~~\nIn order to start Pinball, user needs to provide a pinball configuration file. A sample pinball configuraiton can be retrived at here_.\n\n.. _here: https://github.com/pinterest/pinball/blob/master/pinball/config/default.yaml\n\nThere are a few parameters to configure. For example:\n\n* MySQL db configuration ::\n\n databases:\n default:\n ENGINE: django.db.backends.mysql\n NAME: pinball\n USER: flipper\n PASSWORD: flipper123\n HOST: 127.0.0.1\n PORT: \"3306\"\n pinball.persistence:\n ENGINE: django.db.backends.mysql\n NAME: pinball\n USER: flipper\n PASSWORD: flipper123\n HOST: 127.0.0.1\n PORT: \"3306\"\n\n* Pinball UI configuration ::\n\n ui_host: pinball\n ui_port: 8080\n\n.. _example: https://github.com/pinterest/pinball/blob/master/pinball_ext/examples/workflows.py\n.. _parser: https://github.com/pinterest/pinball/blob/master/pinball_ext/workflow/parser.py\n* Application Configuration ::\n\n parser: pinball_ext.workflows.parser.PyWorkflowParser\n\n *parser* tells Pinball how to interpret your defined workflow and jobs. The above configuration links to a Python parser_ provided by Pinball.\n You can also provide your own parser to intepretate your own definition of workflow and jobs. Please check the tutorial for details. ::\n\n parser_params:\n workflows_config: pinball_ext.examples.workflows.WORKFLOWS\n job_repo_dir: \"~\"\n job_import_dirs_config: pinball_ext.examples.jobs.JOB_IMPORT_DIRS\n\n *parser_params* will be taken by *parser*. Name of the variable that stores workflows config is *workflows_config*;\n root dir of the repo that stores all user defined jobs is stored at *job_repo_dir*; *job_import_dirs_config* keeps list of\n dirs where job class should be imported from.\n\n\n* Email configuration ::\n\n default_email: your@email.com\n\n *default_email* configures default sender of email service of Pinball.\n\n\nUse Pinball\n~~~~~~~~~~~\nAfter starting Pinball with the proper configuration, user can access Pinball at *pinball:8080*.\nYou may find there is no workflow or jobs listed in Pinball UI when you first start Pinball. To import your workflow into Pinball,\ndo the following command. ::\n\n python -m pinball.tools.workflow_util -c path/to/pinball/yaml/configuration/file -f reschedue\n\nAfter this, you should be able to see your workflows in Pinball UI. They will be scheduled and run according to the specified schedules.\n\n.. figure:: https://github.com/pinterest/pinball/blob/master/instance_view.png\n :alt: Workflow instance view\n\nDetailed Design\n-------------\nDesign details are available in `Pinball Architecture Overview `_\n\nUser Guide\n-----------------\nDetail user guide is available in `Pinball User Guide `_\n\nAdmin Guide\n------------------\nAdministrator guide is available in `Pinball Administrator Guide `_\n\nLicense\n-------\nPinball is distributed under `Apache License, Version 2.0 `_.\n\nMaintainers\n----------\n* `Pawel Garbacki `_\n* `Mao Ye `_\n* `Changshu Liu `_\n\nContributing\n-----------\n* `Contributors `_\n* `How to contribute `_\n\n\nHelp\n-----\nIf you have any questions or comments, you can reach us at `pinball-users@googlegroups.com `_.\n\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pinterest/pinball", "keywords": "pinball,workflow manager,batch,job,hadoop,emr,qubole", "license": "Apache 2.0", "maintainer": null, "maintainer_email": null, "name": "pinball", "package_url": "https://pypi.org/project/pinball/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pinball/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/pinterest/pinball" }, "release_url": "https://pypi.org/project/pinball/0.2.12/", "requires_dist": null, "requires_python": null, "summary": "Workflow manager and scheduler", "version": "0.2.12" }, "last_serial": 2055618, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "674acf4853f126c77ae1efe5c5de7bde", "sha256": "c4d902696ce6cae0e91b00b455e382e16ad7320881404272a3a86d57743ea7dd" }, "downloads": -1, "filename": "pinball-0.1.1.tar.gz", "has_sig": false, "md5_digest": "674acf4853f126c77ae1efe5c5de7bde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1226023, "upload_time": "2015-03-11T01:02:52", "url": "https://files.pythonhosted.org/packages/8e/e6/040de3719e053d9657e084a0f64181f8508995cba91b46a62e5d49046754/pinball-0.1.1.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "9a533d0211cb9f1413a42f64432f44d6", "sha256": "7996310f481e36c499786224bc35b1e26fb70eb8931f0fbfd77560f0567ae5bb" }, "downloads": -1, "filename": "pinball-0.2.1.tar.gz", "has_sig": false, "md5_digest": "9a533d0211cb9f1413a42f64432f44d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1226476, "upload_time": "2015-07-30T23:11:34", "url": "https://files.pythonhosted.org/packages/99/ca/bd96239d1182e3820d04051e83a53cf0bd1301768d519a194c649c3fd6e4/pinball-0.2.1.tar.gz" } ], "0.2.10": [ { "comment_text": "", "digests": { "md5": "d4a303a95e6fcedb62718604108f4860", "sha256": "1c602d231e7207255f1131eb2db4af2631d4dfed534d6f396f67b4c05edf4548" }, "downloads": -1, "filename": "pinball-0.2.10.tar.gz", "has_sig": false, "md5_digest": "d4a303a95e6fcedb62718604108f4860", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1228042, "upload_time": "2016-03-16T23:30:21", "url": "https://files.pythonhosted.org/packages/1d/19/316fe59dc3e5bf345e937f145f3a55ae645ae3b31312386a72ce9494990b/pinball-0.2.10.tar.gz" } ], "0.2.11": [ { "comment_text": "", "digests": { "md5": "65c8de9f8484f3bdb91527446e4b255d", "sha256": "612a8fc650c9f17dd4c1bfefbe0d338fd531a2ab8a8af7d0be442d744383442d" }, "downloads": -1, "filename": "pinball-0.2.11.tar.gz", "has_sig": false, "md5_digest": "65c8de9f8484f3bdb91527446e4b255d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1229817, "upload_time": "2016-04-09T23:16:59", "url": "https://files.pythonhosted.org/packages/f2/97/8a2e1ac84f27fa8a92b2a345455f9ccaae9bf2d40885f4f9f72c3fef5fc3/pinball-0.2.11.tar.gz" } ], "0.2.12": [ { "comment_text": "", "digests": { "md5": "075d7d9e70d162de12f156ec5d9263d2", "sha256": "8d50f5d082df375767c1cb05364a4436513c0eb6d996c05efaae90cb4ffb1f38" }, "downloads": -1, "filename": "pinball-0.2.12.tar.gz", "has_sig": false, "md5_digest": "075d7d9e70d162de12f156ec5d9263d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1229786, "upload_time": "2016-04-10T00:05:31", "url": "https://files.pythonhosted.org/packages/0d/a9/f38f982c0fd0a9ff8e985f5f16a683c6f3b1f552da0663f77ca69d22ebcb/pinball-0.2.12.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "f37008219502035f88f0993ab572aac5", "sha256": "ee35b82efe18686a3ccb88b2c1a4b26aae1c8a53ec6fb340c071d7bd0210f781" }, "downloads": -1, "filename": "pinball-0.2.2.tar.gz", "has_sig": false, "md5_digest": "f37008219502035f88f0993ab572aac5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1227431, "upload_time": "2015-08-09T16:38:13", "url": "https://files.pythonhosted.org/packages/6a/8d/a3abee1ac91a7d7392661437d061aed4430b8643b882515e15aa20764663/pinball-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "e2e41e30903d8dbb312670bfac84c15d", "sha256": "3b4a9a2184d63ab512b815cd997be418c54c821382713723746355d08e561c96" }, "downloads": -1, "filename": "pinball-0.2.3.tar.gz", "has_sig": false, "md5_digest": "e2e41e30903d8dbb312670bfac84c15d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1228081, "upload_time": "2015-09-02T01:34:37", "url": "https://files.pythonhosted.org/packages/28/e5/6463d204c76581c60cf6290d387965cea070ec5e048b8d0b1cd514983194/pinball-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "5ea3d136161654915a3836f772448c01", "sha256": "3571938259b1d09096f8864f334658ba8ddc7e5072dae9f0de77841d32a30ebf" }, "downloads": -1, "filename": "pinball-0.2.4.tar.gz", "has_sig": false, "md5_digest": "5ea3d136161654915a3836f772448c01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1228114, "upload_time": "2016-01-14T01:00:47", "url": "https://files.pythonhosted.org/packages/b7/cc/dab133246cbe0e398293aa1443c7f3229ebd3b02cb872248d72926faa1b5/pinball-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "0f88cadf2ef561df842e99f19984afde", "sha256": "ff26ffdf32270bcb6e3497f34964d056b698943f1c3e5a0a643cb9ff9c3ed416" }, "downloads": -1, "filename": "pinball-0.2.5.tar.gz", "has_sig": false, "md5_digest": "0f88cadf2ef561df842e99f19984afde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1228151, "upload_time": "2016-01-14T01:06:48", "url": "https://files.pythonhosted.org/packages/e6/3c/76138e1394369c2f5189ba50272c76fd4053f6fba48af35e3a6ab4941517/pinball-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "1efb73cdf02d13643541045f43c8c4be", "sha256": "4c34d6961c59626ff0891f3a29a9aaae73c06fb42e7c64ddadeade49175c9725" }, "downloads": -1, "filename": "pinball-0.2.6.tar.gz", "has_sig": false, "md5_digest": "1efb73cdf02d13643541045f43c8c4be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1227975, "upload_time": "2016-02-12T01:01:01", "url": "https://files.pythonhosted.org/packages/07/d8/e829e615aa6626e65bb348c4769fc60c048cb58a117e763d3ebd93953e98/pinball-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "d8e6937a5738113193f42a168f44afaa", "sha256": "94beda06d5b7f7bd5197ad2f7f916bbf8b9bdae975ff230929e3b029bdf97058" }, "downloads": -1, "filename": "pinball-0.2.7.tar.gz", "has_sig": false, "md5_digest": "d8e6937a5738113193f42a168f44afaa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1227887, "upload_time": "2016-02-12T01:20:23", "url": "https://files.pythonhosted.org/packages/42/d8/5e1ec756e5e88c1dae42de75a38c3411b4cc23b0162a79f1bb0ceb2a51a9/pinball-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "9e1c5be57a0a273a9ed064051fcd357c", "sha256": "a5e76971be495f378fd6219e8874eef533fc787727b304ee0307f6ac3397ad61" }, "downloads": -1, "filename": "pinball-0.2.8.tar.gz", "has_sig": false, "md5_digest": "9e1c5be57a0a273a9ed064051fcd357c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1227911, "upload_time": "2016-02-12T01:29:11", "url": "https://files.pythonhosted.org/packages/e8/d5/9a296b8af7d96d7fbbcc971bfa2ebac4a49ab3e5a54028241fa3bf10a49a/pinball-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "0a4326962208a082d58b6bce0e1a137a", "sha256": "887c4a58a78f8f2e0544713eaf001ce7d591168f83a68808fab7afe1e9abb440" }, "downloads": -1, "filename": "pinball-0.2.9.tar.gz", "has_sig": false, "md5_digest": "0a4326962208a082d58b6bce0e1a137a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1227928, "upload_time": "2016-03-05T00:20:17", "url": "https://files.pythonhosted.org/packages/b1/bc/ec376fc71020fc667c8a2240b34f6be50a95423ce991ea261cadd0cc1351/pinball-0.2.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "075d7d9e70d162de12f156ec5d9263d2", "sha256": "8d50f5d082df375767c1cb05364a4436513c0eb6d996c05efaae90cb4ffb1f38" }, "downloads": -1, "filename": "pinball-0.2.12.tar.gz", "has_sig": false, "md5_digest": "075d7d9e70d162de12f156ec5d9263d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1229786, "upload_time": "2016-04-10T00:05:31", "url": "https://files.pythonhosted.org/packages/0d/a9/f38f982c0fd0a9ff8e985f5f16a683c6f3b1f552da0663f77ca69d22ebcb/pinball-0.2.12.tar.gz" } ] }