views:

187

answers:

1

ZenPack development seems to involve the creation of a variety of persistent state. There are model classes which represent explicitly persistent state. There are skins which are associated with model objects. There are organizers and instances of persistent classes (data sources, graphs, etc).

Considering that during development, many things are done wrong before they're done right, and considering that loading up a ZenPack that does things wrong has persistent consequences on the Zenoss instance it is loaded into and that these consequences are hard to undo, what is the usual approach for development of a ZenPack?

+1  A: 

I don't know anything about Zenoss specifically, but this situations are common for any syste that have persistent configuration in one form or another, like Zope and Plone for example.

And the workflow is that you create a test environment that you can delete and replicate, but in parts and in whole. For a typical Plone site, for example, you have a buildout that lets you replicate the development environment including all dependencies. Then in the extension module you develop you have a script/function that allows you to set up the persistent configuration as you want it.

This results in you being able to easily recreate a desired state.

You also have workflow "stages". Development, typically done on each developers local machine. Staging/testing, which is done on a test server. This is done by copying over the production machines persistent state to the staging machine, and then running any setup/upgrade scripts, and making sure everything works. Finally you the upgrade the production server.

Lennart Regebro
I was hoping for something somewhat more modular or lightweight (ie "fast"). I suppose this isn't how things work sometimes, though. I've since stopped working with Zenoss so I didn't get a chance to follow through with this and see how it worked. Since no one else chimed in, though, I suspect this is probably how things are expected to go with Zenoss development. Thanks.
Jean-Paul Calderone