{ "info": { "author": "20C", "author_email": "code@20c.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6" ], "description": "Facsimile\n=========\n\nContents\n--------\n\n.toc 0\n\n\nIntroduction\n------------\n\nFacsimile is designed to create exact environment copies for local development\ninstances and deployed staging and production environments.\n\nIt supports multiple hosts, as well as multiple geographic regions.\n\nYou can use either by making a separate repo for a conglomerate, or by putting\ndefinitions in config/facsimile.json\n\nInternals\n---------\n\n### Definitions\n\n* project : highest level of facsimile config, can contain other subprojects\n* modules : project wide pieces, these are used to specify any sections that might be used between subprojects, or need separate passwords, etc\n\n* instances :\n An instance is a set of machines, acting on concert to\n produce the full experience of using the platform. Another meaning of\n instance, in the deploy sense, is the set of configurations (including extra\n directory, instance.json, passwd.json generated file, etc) that allow the\n instance to be updated using the deploy scripts.\n\ninstance data is shared across projects\n\n* targets : instances may be broken into different node types (e.g., frontend, database, app) called targets\n\n\n\nrename:\nAn instance in a daemon\n level sense refers to the fact that we sometimes run more than one copy of the\n same code, off the same binary filename - usually with different arguments.\n For now we are doing this purely for an HA/LB or sharding perspective, but we may\n add further uses as well (such as hot spares - our existing HA is load\n balanced).\n\n* definition : defines a project down to each instance, contains no state info. Definitions can be inherited infinately to avoid redefining anything\n* state : configured and generated information that is instance specific. For example, passwords, directories\n\n\nrm:\nper instance specific configuration for the deployment system to set up an install.\n* environment : environment specific\n* subinstance : sometimes, the 1:1 nature of the instance term becomes 1:2, or\n 1:3.. or 1:n. For example, iceberg: we don't want to separately maintain the\n configurations for dev4.ch1's instance, dev0.ch0's instance, and\n dev5.ch1's instance separately, and we want to keep the passwords and\nuiid in sync, for clarity. However, there are subtle differences that should\nbe tracked. This is like an overlay, in a way - but it's for the whole\ninstance (in a deploy sense), not just one of the software packages.\n\n### Directory Layout\n\n* SRC/\n source checkouts - not separated by instance, assumes version tags are enough\n* BUILD/\n out of source build trees, subdirectoried under $instance/\n* define/\n instance definition files\n\n* extra/\n extra files to be deployed\n* tmpl/\n tmpl files to be rendered and then deployed\n\n\nTemplates\n---------\n\nAvailable structures are `instance` and `module`\n\nconfig file templates should be kept with the source repository as much as possible, so changes are versioned along with the code that uses them\n\n\nModules\n-------\n\nname: module name\ngenconfig: should facs genarate a config for this\nwrite_sql: \n\ndb::\n\nClass Overrides\n---------------\n\n_init_\n\n\n\nNotes\n-----\n\nif project name matches a directory in deploy, rsync --delete is used to clean up the deploy", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/20c/facsimile", "keywords": "", "license": "LICENSE.txt", "maintainer": "", "maintainer_email": "", "name": "facsimile", "package_url": "https://pypi.org/project/facsimile/", "platform": "", "project_url": "https://pypi.org/project/facsimile/", "project_urls": { "Homepage": "https://github.com/20c/facsimile" }, "release_url": "https://pypi.org/project/facsimile/1.1.1/", "requires_dist": null, "requires_python": "", "summary": "", "version": "1.1.1" }, "last_serial": 4855519, "releases": { "0.0.1": [], "1.0.0": [ { "comment_text": "", "digests": { "md5": "4cd5390927f8bc1a9d9cdbe6a589e447", "sha256": "e4786ba338b37f86d52a06638e836dc2bd05e734c69051501294e85acbe64a03" }, "downloads": -1, "filename": "facsimile-1.0.0.tar.gz", "has_sig": true, "md5_digest": "4cd5390927f8bc1a9d9cdbe6a589e447", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19592, "upload_time": "2018-07-06T03:25:01", "url": "https://files.pythonhosted.org/packages/65/4a/eef7ab29ef4cc057afd934a8189d11c4fef909718c79486153cb16d77e76/facsimile-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "07f80da1aba9a0c789da07ecc46537a4", "sha256": "98524d644c66e4a28160e98b35d3dce65d5b4e52cb663cb32ea5c9b01b1df790" }, "downloads": -1, "filename": "facsimile-1.0.1.tar.gz", "has_sig": true, "md5_digest": "07f80da1aba9a0c789da07ecc46537a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23345, "upload_time": "2018-09-21T14:21:08", "url": "https://files.pythonhosted.org/packages/0b/6e/224796f46927dffee5d070d0d87e1fabbf37ff5d177f71f54ca605e4242f/facsimile-1.0.1.tar.gz" } ], "1.0.1.2": [ { "comment_text": "", "digests": { "md5": "32e7551947d81944c00241b27cac6284", "sha256": "39cbbade8f043556d2fdeb29f211f8906f673b2138e373ec03e0e919b6487c82" }, "downloads": -1, "filename": "facsimile-1.0.1.2.tar.gz", "has_sig": false, "md5_digest": "32e7551947d81944c00241b27cac6284", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23821, "upload_time": "2018-11-08T18:38:24", "url": "https://files.pythonhosted.org/packages/49/70/07e8a78d1c191ad88371dcfd96faf789e86ccaebdd842c0dcaba67afab42/facsimile-1.0.1.2.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "75e230a1c3f950eb4e4f82ed4bb62b00", "sha256": "73c2560069b2a9581dad120d58bcd2a8fb46f366d3f462c4f7d46d1b2f9a1b0a" }, "downloads": -1, "filename": "facsimile-1.0.2.tar.gz", "has_sig": false, "md5_digest": "75e230a1c3f950eb4e4f82ed4bb62b00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23825, "upload_time": "2018-11-08T18:40:26", "url": "https://files.pythonhosted.org/packages/8d/2a/73e9cce1145b9b88fe8de96f55bfae81caa1d65f047041d90e517aef0971/facsimile-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "efe1be68a0a092ca2873a963b6db7ef1", "sha256": "0125d1a717f0e3d3615cfd9e171dcbeb85677f17c1c839cc1df9d0d278edbcb1" }, "downloads": -1, "filename": "facsimile-1.0.3.tar.gz", "has_sig": true, "md5_digest": "efe1be68a0a092ca2873a963b6db7ef1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23669, "upload_time": "2019-02-10T22:49:37", "url": "https://files.pythonhosted.org/packages/d4/1a/aef5b932b969e3c680f39bf239f98c00d51a3652f415cf43275a25ee05dc/facsimile-1.0.3.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "da383709cd38d4d93e7f57c6a2dc4bd1", "sha256": "22878ab8d4b7c536ba4101bfa07d94aedb190544967105f6a796e226b56bb079" }, "downloads": -1, "filename": "facsimile-1.1.0.tar.gz", "has_sig": true, "md5_digest": "da383709cd38d4d93e7f57c6a2dc4bd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23769, "upload_time": "2019-02-12T05:05:48", "url": "https://files.pythonhosted.org/packages/d5/c6/bb03912782c193cd3b12a6f204ecfa199674a5e48e83907340e781d6985c/facsimile-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "061ac2cba460c4e7d8f7d0435a925870", "sha256": "e8ff643b1d8f999adb807124c2e86e07c25f1c2b2aef951e3ae47dfbd9841b21" }, "downloads": -1, "filename": "facsimile-1.1.1.tar.gz", "has_sig": true, "md5_digest": "061ac2cba460c4e7d8f7d0435a925870", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23784, "upload_time": "2019-02-22T18:52:33", "url": "https://files.pythonhosted.org/packages/6d/42/a411c5fd1e6faec6c08bbc57d1ea621ca507bccaf46e9c71d804772f996a/facsimile-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "061ac2cba460c4e7d8f7d0435a925870", "sha256": "e8ff643b1d8f999adb807124c2e86e07c25f1c2b2aef951e3ae47dfbd9841b21" }, "downloads": -1, "filename": "facsimile-1.1.1.tar.gz", "has_sig": true, "md5_digest": "061ac2cba460c4e7d8f7d0435a925870", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23784, "upload_time": "2019-02-22T18:52:33", "url": "https://files.pythonhosted.org/packages/6d/42/a411c5fd1e6faec6c08bbc57d1ea621ca507bccaf46e9c71d804772f996a/facsimile-1.1.1.tar.gz" } ] }