[Zope-CMF] Re: <genericsetup:upgradeRerunImportStep> (was Re: Multiple GS profiles per product)

Maurits van Rees m.van.rees at zestsoftware.nl
Tue May 20 17:27:22 EDT 2008


Rob Miller, on 2008-05-20:
> Maurits van Rees wrote:
>> And where are the original typeinfo and workflow upgrade steps
>> defined?  Are they in some other zcml file of your product?  Or would
>> they be general upgradesteps defined by GenericSetup, available for
>> any products?
>
> they're expected to be import steps that are already registered with the 
> portal_setup tool.

Ah, I was confusing upgrade steps and import steps.  Makes more sense now.

> that's not quite the case i'm talking about.  i'm talking about a situation 
> where you've edited the my_workflow.xml file in your GS profile, and you want 
> to express (using GenericSetup's upgrade step registry) that the 'workflow' 
> import step needs to be re-applied to the site.  this is extremely common... 
> i'm always having to keep track of which import steps i need to re-run for a 
> particular upgrade.
>
> in theory, all upgrade code should always be idempotent, so you _could_ argue 
> that you should always just re-import the entire profile.  but sometimes 
> people make mistakes and a particular step is not idempotent.  and 
> re-importing the entire profile might be a much heavier operation than simply 
> re-applying a fairly trivial config change.  i much prefer to mark specific 
> steps as needing to be re-run.

In Plone land I am used to just reapplying the entire profile.  You do
not want that for e.g. catalog.xml when that defines an index, which
is why I have switched to defining indexes in python code again.  That
could be a reason for having better upgrade support like you propose.

> it CAN be done w/o a custom tag... i'm currently using a 'rerun_import_steps' 
> handler, you can see the implementation here:
>
> http://tinyurl.com/5d69my
>
> with a specific usage here:
>
> http://tinyurl.com/6m7sjm  (<-- ZCML)
> http://tinyurl.com/6zhtzw  (<-- handler)
>
> but this is still too much boiler-plate for me.  i have to stub out
> my own data structure to store the steps that need to be run for a
> given upgrade path, including whether or not the step should be run
> in purge mode.  all of this can be expressed in a new ZCML tag very
> easily, eliminating the need for boiler-plate code.  as an added
> bonus, it makes your upgrade registration ZCML more informative, you
> can see at a glance everything that needs to happen for a given
> upgrade path.

Okay, makes sense.

-- 
Maurits van Rees | http://maurits.vanrees.org/
            Work | http://zestsoftware.nl/
"This is your day, don't let them take it away." [Barlow Girl]



More information about the Zope-CMF mailing list