{
"info": {
"author": "Internet Development, ILRT, University of Bristol",
"author_email": "internet-development@bris.ac.uk",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Environment :: Web Environment",
"Framework :: Plone",
"Framework :: Zope2",
"Framework :: Zope3",
"Intended Audience :: Developers",
"Intended Audience :: Other Audience",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Topic :: Software Development :: Libraries :: Python Modules"
],
"description": "ilrt.migrationtool Package Readme\n=================================\n\nEd Crewe, `ILRT\n`_ at University of Bristol, May 2009\n\nOverview\n--------\n\nThis package installs a Site Migration Tool in the root of a plone site.\nIt provides a controlled upgrade (and downgrade) system for production\nplone sites. It is designed for a scenario where you have developed a theme egg for\nthe site and you now wish to roll out new development phases to the production\nsite in an automated manner, e.g. without significant use of the ZMI.\n\nThe tool is based on the CMFPlone.MigrationTool but with downgrade functionality added.\nThis is because most site upgrades involve more minor changes than a plone upgrade, ie. adding \nsome products, configuring them, changing zope security, etc. If we are going to automate these \nchanges then we also want to automate undoing them. That way we can quickly revert a roll out \nif it goes wrong.\n\nOnce it is installed you will have a new tool at /site_migration via the ZMI in your plone site. \n\nAs a generic site migration tool it provides the framework and a number of migration related \nutility functions, plus one 'sub-tool' (so far) for migrating content's workflow states, the \nworkflow migration tool, which can be used in isolation. \n\nThe main utility function allows migrations to use `generic setup\n`_ so that each migration is \nlikely to have a related profile in the theme egg, where the changes from the last migration\n(or the initial default profile) are stored.\n\nJust as with the portal_migration tool the site_migration tool looks up the version via the \nversion.txt on the file system as compared to the version in the ZODB. Based on that it flags \nup whether a migration is needed. \n\nConcept\n-------\n\nThe concept is derived from an unreleased plone 2 product by Dominic Hiles, which has been\nused to control production site releases since 2005.\n\nIt is envisaged that users would run through performing an upgrade on a development server with \na copy of the production ZODB, from that they would generate the appropriate migration profile\nand compose the upgrade, downgrade methods. These can then be added and re-tested ready for pushing\nthe migrate button on the production server.\n\nThe underlying principle being that the exact configuration state of your production site is\nrecorded and replicable, similar to the aims of generic setup, but here you are \nmore specifically recording the plone customisations related to the particular \nproduction site / theme egg, rather than all the setup configurations in plone. \n\nOf course if you lose track of the changes made between one migration and the next you could just \ndump the whole generic setup export into your migration profile, that at least ties a site \nconfig to a version of the site, but buries the changes required for that version of the site \namongst all the others.\n \n\nUsing the Site Migration Tool\n-----------------------------\n\nThe tool allows for the setting of the source theme egg for migrations. \n\nThat egg must have the actual migrations added to it within a migrations folder.\nAn example migrations folder is provided within the migrationtool to copy to a theme egg, ie.\ncopy ilrt.migrationtool/docs/migrations to my.theme/my/theme/migrations\n\nEach migration script within the folder must be imported in the __init__.py for the folder in\norder to find it. The migrations upgrade can have a related folder created in profiles with\ngeneric setup files added.\n\n- Once the theme egg has migrations, and the server has been restarted to initialize these new \n files, the migrationtool can use python introspection to find them and activate them.\n\n- Choose the appropriate profile from the drop down on the 'Set migration source' tab for the tool.\n\n- You should then see a list of your migrations and what versions of the site they relate to.\n\n- Now you can click on the 'Do migration' tab \n\n- For a site to be ready for migration the ZODB version of the theme egg should be earlier \n than the one on the file system, ie. your file system code is upgraded ... so now the ZODB \n needs to be migrated to be in synch.\n\n- If this is the case for your site the Migrate button will be available, if not then either \n your theme egg version.txt file needs upping a notch (plus a restart), or you need to force \n the ZODB version down a notch with the 'update instance version' button.\n\n- Once you have the migrate button you can check 'Dry run' to test it will work first. \n\n- A failiure to upgrade or any other errors mean you will need to fix your upgrade methods. \n\n- Once the 'Dry run' runs OK, you can upgrade for real, and add the migration to your egg and repeat\n the process on your production server.\n\nUtilities\n---------\n\n1. runGenericSetupSteps\n Wrapper for generic setup\n\n2. installProducts / uninstallProducts\n Wrapper for the quickinstaller\n\n3. pickleAttributes\n This caters for writing ZODB stored data associated with objects out to the file system.\n The use case being that a migration may require the removal and reinstantiation of objects \n due to their class having been modified. When these objects are replaced associated data \n may be lost, if it is not handled by generic setup export/import. \n An example for this is the portraits associated with the memberdata_tool, if a migration \n modified this class then this tool allows for its reinstantiation to keep the BTree \n that is its .portraits attribute.\n\n4. editSiteProps\n Utility function to temporarily switch portal properties while the migration runs.\n Default use case is to switch off link checks whilst replacing content.\n\nWorkflow Migration Tool\n-----------------------\n\nThe workflow migration tool moves the state of content that has been in one workflow to the \nspecified state in another. Likely uses for the tool are to maintain equivalent state for \ncontent when the workflow that a site uses is changed, or in conjunction with CMFPlacefulWorkflow.\n\nSo for example a site may allow users to toggle whether a folder is an intranet folder or public.\nHowever when a public folder is made into an intranet the user doesn't want everything to be \nreset to the private state, in this case the tool can be called via an event tied to the change\nof workflow policy for a folder. \n\nTo use the tool via the web:\n\n- Change the workflows for your plone site in the portal_workflow tool \n (or add a placeful workflow policy to a folder)\n\n- Go to the Migrate workflow tab and enter the previous workflow followed by the new one you \n have replaced it with.\n\n- Next specify the mapping that you require of states from one workflow to another, \n eg. public draft = published etc.\n\n- Finally if its placeful specify the folder.\n\nHit submit and the migration will recursively find all the objects in the new workflow and update \ntheir state based on the mapping, from what it was in the old one. The tool will return the\nnumber of workflow transitions performed.\n\nKeyword Index Migration Tool\n----------------------------\n\nThis is lifted from Products.PloneKeywordManager, the extra feature is that keywords can \nbe moved between different fields and their corresponding indexes in the zcatalog. \nThe use case being the migration of a set of standard keywords into their own field \nand controlled vocabulary.\n\n\nChangelog for ilrt.migrationtool\n--------------------------------\n\n (name of developer listed in brackets)\n\nilrt.migrationtool - 0.4 Release May 8th 2009\n\n - Remove the paradigm of the sitemigration factory of objects built from users \n migration scripts since it is uneccessary and leads to pickling problems\n - Add a traceback to out method and use it for generic setup utility method\n - Add a keyword moving subtool based on Products.PloneKeywordManager\n - Add a utility method to allow for temporarily toggling properties during migration\n - Enable a tab to aid debugging migration scripts by running migration methods individually\n \n PLEASE NOTE: If an existing site is upgraded to version 0.4 the site_migration tool\n should be deleted and the quickinstaller method for it run to add a fresh instance\n\n [Ed Crewe, ILRT - University of Bristol]\n\nilrt.migrationtool - 0.3 Release - Feb 15th 2009\n\n - Fixed the workflow tool's transition lookup to handle \n workflows that require more than one transition between\n certain states.\n - Added utility to save object attributes to the file system\n so that objects can be reinstantiated without losing data.\n - Added tests for the workflow tool and utility\n - Fixed bug related to migration lookup.\n \n [Ed Crewe, ILRT - University of Bristol]\n\nilrt.migrationtool - 0.2 First release - Jan 30th 2009\n\n - Subclassed plone migration tool\n - Added migration objects\n - Added workflow migration tool via browser views\n \n [Ed Crewe, ILRT - University of Bristol]\n\nilrt.migrationtool - 0.1 Unreleased\n\n - Initial package structure.\n \n [zopeskel]\n\n\nTo Do List\n----------\n\n1. Add tests for the migration tool itself.\n\n2. Add a means to pass kwargs on the single migration methods debug tab.\n Enable 'dry run', ie. transaction rollback for single methods.\n\n3. Add other utilities or sub-tools?",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://svn.ilrt.bris.ac.uk/repos/pypi/ilrt.migrationtool",
"keywords": "web zope plone migration setup release management workflow",
"license": "GPL",
"maintainer": null,
"maintainer_email": null,
"name": "ilrt.migrationtool",
"package_url": "https://pypi.org/project/ilrt.migrationtool/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/ilrt.migrationtool/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "https://svn.ilrt.bris.ac.uk/repos/pypi/ilrt.migrationtool"
},
"release_url": "https://pypi.org/project/ilrt.migrationtool/0.4/",
"requires_dist": null,
"requires_python": null,
"summary": "A site migration tool for Plone that uses the site's theme egg version releases",
"version": "0.4"
},
"last_serial": 732975,
"releases": {
"0.2": [
{
"comment_text": "",
"digests": {
"md5": "47520634381d8ea464e3979cee7d5267",
"sha256": "59de965f9de625435060a309863be5cab02ba5ca6aef23641df7780f150791f7"
},
"downloads": -1,
"filename": "ilrt.migrationtool-0.2-py2.4.egg",
"has_sig": false,
"md5_digest": "47520634381d8ea464e3979cee7d5267",
"packagetype": "bdist_egg",
"python_version": "2.4",
"requires_python": null,
"size": 45151,
"upload_time": "2009-01-30T16:35:51",
"url": "https://files.pythonhosted.org/packages/7a/2e/67fb6d6b2a8de9a17fbfa78381bdefe8e206e3ced8b952e107fc8164eb98/ilrt.migrationtool-0.2-py2.4.egg"
},
{
"comment_text": "",
"digests": {
"md5": "3ec67e3fe3287ad823598d9924f8596b",
"sha256": "e04fe37d4b4d7cc7230532639a085d2033c629b3c97b57b069053adf6bfd09f5"
},
"downloads": -1,
"filename": "ilrt.migrationtool-0.2.tar.gz",
"has_sig": false,
"md5_digest": "3ec67e3fe3287ad823598d9924f8596b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 28196,
"upload_time": "2009-01-30T16:35:51",
"url": "https://files.pythonhosted.org/packages/f0/24/d2968ceb643b7a6f3fa6fc6cc3014b01f1abb2731ac7084a2f4210c8bec8/ilrt.migrationtool-0.2.tar.gz"
}
],
"0.3": [
{
"comment_text": "",
"digests": {
"md5": "05ffa1f03eba54f2561506822dd0b0ca",
"sha256": "69956eca2845fc07adf639a24071d1d39d9a4d8d3ead1ccff4838a447564f124"
},
"downloads": -1,
"filename": "ilrt.migrationtool-0.3-py2.4.egg",
"has_sig": false,
"md5_digest": "05ffa1f03eba54f2561506822dd0b0ca",
"packagetype": "bdist_egg",
"python_version": "2.4",
"requires_python": null,
"size": 51049,
"upload_time": "2009-02-15T17:37:06",
"url": "https://files.pythonhosted.org/packages/4a/96/93d7f2c429f7e678f5611e8c0cce311f8a185c8214019e37b9fe8b474542/ilrt.migrationtool-0.3-py2.4.egg"
},
{
"comment_text": "",
"digests": {
"md5": "f7a101dc5baf1c74f3092cfe7f55712f",
"sha256": "1435930517db2b97525f0259a1970223fd51876a69dfd2a08f1c73e57ad05879"
},
"downloads": -1,
"filename": "ilrt.migrationtool-0.3.tar.gz",
"has_sig": false,
"md5_digest": "f7a101dc5baf1c74f3092cfe7f55712f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 27818,
"upload_time": "2009-02-15T17:37:06",
"url": "https://files.pythonhosted.org/packages/e8/0a/8ca55a8809ebfe7f3d4ce2c67882544c466f1f100b8f786367612f9e5db4/ilrt.migrationtool-0.3.tar.gz"
}
],
"0.4": [
{
"comment_text": "",
"digests": {
"md5": "3c80ee8905ed879e1df554ab1c4faeb4",
"sha256": "19b56555781305e6ec6ef18da3c4362e4d3fb1d5f77c3c42f45bed4fb1fe66cd"
},
"downloads": -1,
"filename": "ilrt.migrationtool-0.4-py2.4.egg",
"has_sig": false,
"md5_digest": "3c80ee8905ed879e1df554ab1c4faeb4",
"packagetype": "bdist_egg",
"python_version": "2.4",
"requires_python": null,
"size": 59656,
"upload_time": "2009-05-08T12:39:47",
"url": "https://files.pythonhosted.org/packages/db/e3/0933a78631b3a5affa279f880afb8d3bf74d7c00533b27eb1f4a26caf918/ilrt.migrationtool-0.4-py2.4.egg"
},
{
"comment_text": "",
"digests": {
"md5": "779d890b2d300427796b15c26cca9f0e",
"sha256": "142b6267277e4dee957357cd2041d411bd25ced271ac791f9b6756116baeed8b"
},
"downloads": -1,
"filename": "ilrt.migrationtool-0.4.tar.gz",
"has_sig": false,
"md5_digest": "779d890b2d300427796b15c26cca9f0e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 29220,
"upload_time": "2009-05-08T12:39:47",
"url": "https://files.pythonhosted.org/packages/f4/f7/acbd0c4613215966ee25d35b079e837e9bc3a06b94cea85530eb31b907d1/ilrt.migrationtool-0.4.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "3c80ee8905ed879e1df554ab1c4faeb4",
"sha256": "19b56555781305e6ec6ef18da3c4362e4d3fb1d5f77c3c42f45bed4fb1fe66cd"
},
"downloads": -1,
"filename": "ilrt.migrationtool-0.4-py2.4.egg",
"has_sig": false,
"md5_digest": "3c80ee8905ed879e1df554ab1c4faeb4",
"packagetype": "bdist_egg",
"python_version": "2.4",
"requires_python": null,
"size": 59656,
"upload_time": "2009-05-08T12:39:47",
"url": "https://files.pythonhosted.org/packages/db/e3/0933a78631b3a5affa279f880afb8d3bf74d7c00533b27eb1f4a26caf918/ilrt.migrationtool-0.4-py2.4.egg"
},
{
"comment_text": "",
"digests": {
"md5": "779d890b2d300427796b15c26cca9f0e",
"sha256": "142b6267277e4dee957357cd2041d411bd25ced271ac791f9b6756116baeed8b"
},
"downloads": -1,
"filename": "ilrt.migrationtool-0.4.tar.gz",
"has_sig": false,
"md5_digest": "779d890b2d300427796b15c26cca9f0e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 29220,
"upload_time": "2009-05-08T12:39:47",
"url": "https://files.pythonhosted.org/packages/f4/f7/acbd0c4613215966ee25d35b079e837e9bc3a06b94cea85530eb31b907d1/ilrt.migrationtool-0.4.tar.gz"
}
]
}