Package Products :: Package ZenModel :: Module ZenPack :: Class ZenPack |
[hide private]
[frames] | no frames]

# Class ZenPack

source code

                                                            object --+
                                                                     |
                                             ZenModelBase.ZenModelBase --+
                                                                         |
                                   ExtensionClass.Base --+               |
                                                         |               |
                             OFS.CopySupport.CopyContainer --+           |
                                                             |           |
                  ZenRelations.RelCopySupport.RelCopyContainer --+       |
                                                                 |       |
                                   ExtensionClass.Base --+       |       |
                                                         |       |       |
                             OFS.CopySupport.CopyContainer --+   |       |
                                                             |   |       |
                                   ExtensionClass.Base --+   |   |       |
                                                         |   |   |       |
                                 App.Management.Navigation --+   |       |
                                                             |   |       |
                                   ExtensionClass.Base --+   |   |       |
                                                         |   |   |       |
                                       App.Management.Tabs --+   |       |
                                                             |   |       |
                                      Acquisition.Implicit --+   |       |
                                                             |   |       |
                                    Persistence.Persistent --+   |       |
                                                             |   |       |
                               ExtensionClass.Base --+       |   |       |
                                                     |       |   |       |
                webdav.EtagSupport.EtagSupport --+   |       |   |       |
                                                 |   |       |   |       |
                      webdav.Lockable.LockableItem --+       |   |       |
                                                     |       |   |       |
                              webdav.Resource.Resource --+   |   |       |
                                                         |   |   |       |
                              webdav.Collection.Collection --+   |       |
                                                             |   |       |
                               OFS.Traversable.Traversable --+   |       |
                                                             |   |       |
                               OFS.ObjectManager.ObjectManager --+       |
                                                                 |       |
                                   ExtensionClass.Base --+       |       |
                                                         |       |       |
                               ExtensionClass.Base --+   |       |       |
                                                     |   |       |       |
                            OFS.CopySupport.CopySource --+       |       |
                                                         |       |       |
                               ExtensionClass.Base --+   |       |       |
                                                     |   |       |       |
                                   App.Management.Tabs --+       |       |
                                                         |       |       |
                           OFS.Traversable.Traversable --+       |       |
                                                         |       |       |
                               ExtensionClass.Base --+   |       |       |
                                                     |   |       |       |
                             AccessControl.Owned.Owned --+       |       |
                                                         |       |       |
                                  ZenRelations.ZItem.ZItem --+   |       |
                                                             |   |       |
                                      Acquisition.Implicit --+   |       |
                                                             |   |       |
                                   ExtensionClass.Base --+   |   |       |
                                                         |   |   |       |
           AccessControl.PermissionMapping.RoleManager --+   |   |       |
                                                         |   |   |       |
                            AccessControl.Role.RoleManager --+   |       |
                                                             |   |       |
      ZenRelations.PrimaryPathObjectManager.PrimaryPathManager --+       |
                                                                 |       |
                                       ExtensionClass.Base --+   |       |
                                                             |   |       |
                                          App.Undo.UndoSupport --+       |
                                                                 |       |
    ZenRelations.PrimaryPathObjectManager.PrimaryPathObjectManager --+   |
                                                                     |   |
                                                        object --+   |   |
                                                                 |   |   |
                                       ExtensionClass.Base --+   |   |   |
                                                             |   |   |   |
                                     OFS.ZDOM.Node --+       |   |   |   |
                                                     |       |   |   |   |
                                      OFS.ZDOM.Element --+   |   |   |   |
                                                         |   |   |   |   |
                            OFS.ZDOM.ElementWithAttributes --+   |   |   |
                                                             |   |   |   |
                           OFS.PropertyManager.PropertyManager --+   |   |
                                                                 |   |   |
                ZenRelations.ZenPropertyManager.ZenPropertyManager --+   |
                                                                     |   |
                  ZenRelations.RelationshipManager.RelationshipManager --+
                                                                         |
                                               ExtensionClass.Base --+   |
                                                                     |   |
                                                OFS.History.Historical --+
                                                                         |
                                                            object --+   |
                                                                     |   |
                                                   ZenPacker.ZenPacker --+
                                                                         |
                                                     ZenModelRM.ZenModelRM --+
                                                                             |
                                                                            ZenPack

The root of all ZenPacks: has no implementation, but sits here to be the target of the Relation

Instance Methods | [hide private]
__init__(self, id, title=None, buildRelations=True) | source code
install(self, app) Stop daemons, load any loaders, create zProperties, migrate and start daemons | source code
upgrade(self, app) This is essentially an install() call except that a different method is called on the loaders. | source code
remove(self, app, leaveObjects=False) This prepares the ZenPack for removal but does not actually remove the instance from ZenPackManager.packs This is sometimes called during the course of an upgrade where the loaders' unload methods need to be run. | source code
migrate(self, previousVersion=None) Migrate to a new version | source code
list of objects |
list(self, app) Show the list of loaders | source code
createZProperties(self, app) Create zProperties in the ZenPack's self.packZProperties | source code
removeZProperties(self, app) Remove any zProperties defined in the ZenPack | source code
removeCatalogedObjects(self, app) Delete all objects in the zenPackPersistence catalog that are associated with this zenpack. | source code
getCatalogedObjects(self) Return a list of objects from the ZenPackPersistence catalog for this zenpack. | source code
zmanage_editProperties(self, REQUEST, redirect=False) Edit a ZenPack object | source code
manage_deletePackable(self, packables=(), REQUEST=None) Delete objects from this ZenPack | source code
manage_uploadPack(self, znetProject, description, REQUEST=None) Create a new release of the given project. | source code
manage_exportPack(self, download="no", REQUEST=None) Export the ZenPack to the /export directory | source code
manage_download(self, REQUEST) Download the already exported zenpack from $ZENHOME/export | source code
_getClassesByPath(self, name) | source code
getDataSourceClasses(self) | source code
getThresholdClasses(self) | source code
getFilenames(self) Get the filenames of a ZenPack exclude .svn, .pyc and .xml files | source code
getDaemonNames(self) Return a list of daemons in the daemon subdirectory that should be stopped/started before/after an install or an upgrade of the zenpack. | source code
stopDaemons(self) Stop all the daemons provided by this pack. | source code
startDaemons(self) Start all the daemons provided by this pack. | source code
restartDaemons(self) Restart all the daemons provided by this pack. | source code
path(self, *parts) Return the path to the ZenPack module. | source code
isDevelopment(self) Return True if 1) the pack is an old-style ZenPack (not a Python egg) or 2) the pack is a Python egg and is a source install (includes a setup.py file) | source code
isEggPack(self) Return True if this is a new-style (egg) zenpack, false otherwise | source code
moduleName(self) Return the importable dotted module name for this zenpack. | source code
writeSetupValues(self) Write appropriate values to the setup.py file | source code
buildEggInfo(self) Rebuild the egg info to update dependencies, etc | source code
getDistribution(self) Return the distribution that provides this zenpack | source code
getEntryPoint(self) Return a tuple of (packName, packEntry) that comes from the distribution entry map for zenoss.zenopacks. | source code
getModule(self) Get the loaded module from the given entry point. | source code
eggPath(self, *parts) Return the path to the egg supplying this zenpack | source code
eggName(self) | source code
shouldDeleteFilesOnRemoval(self) Return True if the egg itself should be deleted when this ZenPack is removed from Zenoss. | source code
getPackageName(self) Return the name of submodule of zenpacks that contains this zenpack. | source code
getEligibleDependencies(self) Return a list of installed zenpacks that could be listed as dependencies for this zenpack | source code
isInZenPacksDir(self) Return True if the egg is located in the ZenPacks directory, False otherwise. | source code
isBroken(self) Make sure that the ZenPack can be instantiated and that it is physically present on the filesystem. | source code
Inherited from `ZenModelRM.ZenModelRM`: `changePythonClass`, `creator`, `editableDeviceList`, `findChild`, `getCreatedTimeString`, `getDmdKey`, `getModificationTimeString`, `getSubObjects`, `getTreeItems`, `getZenRootNode`, `index_object`, `primarySortKey`, `reindex_all`, `rename`, `setTitle`, `unindex_object`, `viewName`, `zmanage_addProperty`, `zmanage_delObjects`, `zmanage_delProperties`, `zmanage_exportObject`, `zmanage_importObject`, `zmanage_importObjects` Inherited from `ZenModelBase.ZenModelBase`: `__call__`, `__hash__`, `all_meta_types`, `aqBaseHasAttr`, `breadCrumbs`, `callZenScreen`, `checkRemotePerm`, `checkValidId`, `createHierarchyObj`, `custPropertyIds`, `custPropertyMap`, `getBreadCrumbName`, `getBreadCrumbUrlPath`, `getDmd`, `getDmdObj`, `getDmdRoot`, `getHierarchyObj`, `getIconPath`, `getIdLink`, `getNowString`, `getObjByPath`, `getPrimaryDmdId`, `getUnusedId`, `getZopeObj`, `helpLink`, `isLocalName`, `manage_deleteObjects`, `prepId`, `saveCustProperties`, `todayDate`, `upToOrganizerBreadCrumbs`, `urlLink`, `view`, `visibleCustPropertyMap`, `yesterdayDate`, `zenScreenUrl`, `zenpathjoin`, `zenpathsplit`, `zentinelTabs` Inherited from `ZenModelBase.ZenModelBase` (private): `_selectedTabName` Inherited from `ZenRelations.RelationshipManager.RelationshipManager`: `addRelation`, `buildRelations`, `cb_isMoveable`, `checkRelations`, `exportXml`, `exportXmlProperties`, `exportXmlRelationships`, `getRelationshipManagerId`, `getRelationshipNames`, `getRelationships`, `manage_addRelation`, `manage_removeRelation`, `manage_workspace`, `moveMeBetweenRels`, `moveObject`, `removeRelation` Inherited from `ZenRelations.RelationshipManager.RelationshipManager` (private): `_getCopy`, `_notifyOfCopyTo`, `_setObject` Inherited from `ZenRelations.PrimaryPathObjectManager.PrimaryPathObjectManager` (private): `_delObject` Inherited from `ZenRelations.RelCopySupport.RelCopyContainer`: `manage_linkObjects`, `manage_unlinkObjects` Inherited from `ZenRelations.RelCopySupport.RelCopyContainer` (private): `_checkId`, `_getRelName`, `_getSourceObjects`, `_verifyObjectLink`, `_verifyObjectPaste` Inherited from `OFS.ObjectManager.ObjectManager`: `__class_init__`, `__contains__`, `__delitem__`, `__getitem__`, `__iter__`, `__len__`, `__nonzero__`, `__setitem__`, `filtered_meta_types`, `get`, `getSiteManager`, `hasObject`, `items`, `keys`, `list_imports`, `manage_FTPlist`, `manage_FTPstat`, `manage_afterAdd`, `manage_afterClone`, `manage_beforeDelete`, `manage_delObjects`, `manage_exportObject`, `manage_hasId`, `manage_importObject`, `objectIds`, `objectIds_d`, `objectItems`, `objectItems_d`, `objectMap`, `objectMap_d`, `objectValues`, `objectValues_d`, `setSiteManager`, `superValues`, `tpValues`, `values` Inherited from `OFS.ObjectManager.ObjectManager` (private): `_delOb`, `_getImportPaths`, `_getOb`, `_importObjectFromFile`, `_setOb`, `_subobject_permissions` Inherited from `OFS.CopySupport.CopyContainer`: `cb_dataItems`, `cb_dataValid`, `manage_CopyContainerAllItems`, `manage_CopyContainerFirstItem`, `manage_clone`, `manage_copyObjects`, `manage_cutObjects`, `manage_pasteObjects`, `manage_renameObject`, `manage_renameObjects`, `validClipData` Inherited from `OFS.CopySupport.CopyContainer` (private): `_get_id` Inherited from `App.Management.Navigation`: `manage_zmi_logout` Inherited from `ZenRelations.PrimaryPathObjectManager.PrimaryPathManager`: `getPrimaryId`, `getPrimaryParent`, `getPrimaryPath`, `getPrimaryUrlPath`, `primaryAq` Inherited from `ZenRelations.ZItem.ZItem`: `__repr__`, `getId`, `manage_editedDialog`, `this`, `titleOrId`, `title_and_id`, `title_or_id`, `tpURL` Inherited from `OFS.CopySupport.CopySource`: `cb_isCopyable`, `cb_userHasCopyOrMovePermission` Inherited from `OFS.CopySupport.CopySource` (private): `_canCopy`, `_postCopy`, `_setId` Inherited from `App.Management.Tabs`: `filtered_manage_options`, `tabs_path_default`, `tabs_path_info` Inherited from `webdav.Collection.Collection`: `DELETE`, `HEAD`, `PUT`, `dav__init`, `listDAVObjects` Inherited from `webdav.Resource.Resource`: `COPY`, `LOCK`, `MKCOL`, `MOVE`, `OPTIONS`, `PROPFIND`, `PROPPATCH`, `TRACE`, `UNLOCK`, `dav__simpleifhandler`, `dav__validate`, `manage_DAVget` Inherited from `webdav.Lockable.LockableItem`: `wl_clearLocks`, `wl_delLock`, `wl_getLock`, `wl_hasLock`, `wl_isLocked`, `wl_lockItems`, `wl_lockTokens`, `wl_lockValues`, `wl_lockmapping`, `wl_setLock` Inherited from `webdav.EtagSupport.EtagSupport`: `http__etag`, `http__parseMatchList`, `http__processMatchHeaders`, `http__refreshEtag` Inherited from `OFS.Traversable.Traversable`: `absolute_url`, `absolute_url_path`, `getPhysicalPath`, `restrictedTraverse`, `unrestrictedTraverse`, `virtual_url_path` Inherited from `AccessControl.Owned.Owned`: `changeOwnership`, `getOwner`, `getOwnerTuple`, `getWrappedOwner`, `manage_changeOwnershipType`, `manage_fixupOwnershipAfterAdd`, `manage_takeOwnership`, `owner_info`, `userCanTakeOwnership` Inherited from `AccessControl.Owned.Owned` (private): `_deleteOwnershipAfterAdd` Inherited from `AccessControl.Role.RoleManager`: `ac_inherited_permissions`, `access_debug_info`, `acquiredRolesAreUsedBy`, `get_local_roles`, `get_local_roles_for_userid`, `get_valid_userids`, `has_local_roles`, `manage_access`, `manage_acquiredPermissions`, `manage_addLocalRoles`, `manage_changePermissions`, `manage_defined_roles`, `manage_delLocalRoles`, `manage_editRoles`, `manage_getUserRolesAndPermissions`, `manage_permission`, `manage_role`, `manage_setLocalRoles`, `permission_settings`, `permissionsOfRole`, `possible_permissions`, `rolesOfPermission`, `userdefined_roles`, `users_with_local_role`, `validRoles`, `valid_roles`, `validate_roles` Inherited from `AccessControl.Role.RoleManager` (private): `_addRole`, `_delRoles`, `_has_user_defined_role`, `_setRoles` Inherited from `AccessControl.PermissionMapping.RoleManager`: `manage_getPermissionMapping`, `manage_setPermissionMapping` Inherited from `AccessControl.PermissionMapping.RoleManager` (private): `_isBeingUsedAsAMethod` Inherited from `App.Undo.UndoSupport`: `get_request_var_or_attr`, `manage_undo_transactions`, `undoable_transactions` Inherited from `ZenRelations.ZenPropertyManager.ZenPropertyManager`: `deleteZenProperty`, `getOverriddenObjects`, `getProperty`, `getPropertyType`, `getZ`, `hasProperty`, `isLocal`, `manage_editProperties`, `saveZenProperties`, `setZenProperty`, `zenPropIsPassword`, `zenPropertyIds`, `zenPropertyItems`, `zenPropertyMap`, `zenPropertyOptions`, `zenPropertyPath`, `zenPropertyString` Inherited from `ZenRelations.ZenPropertyManager.ZenPropertyManager` (private): `_findParentWithProperty`, `_setPropValue`, `_setProperty`, `_updateProperty` Inherited from `OFS.History.Historical`: `manage_afterHistoryCopy`, `manage_beforeHistoryCopy`, `manage_change_history`, `manage_historicalComparison`, `manage_historyCompare`, `manage_historyCopy` Inherited from `ZenPacker.ZenPacker`: `addToZenPack`, `eligiblePacks`, `findObject` Inherited from `OFS.PropertyManager.PropertyManager`: `manage_addProperty`, `manage_changeProperties`, `manage_changePropertyTypes`, `manage_delProperties`, `propdict`, `propertyDescription`, `propertyIds`, `propertyItems`, `propertyLabel`, `propertyMap`, `propertyValues`, `valid_property_id` Inherited from `OFS.PropertyManager.PropertyManager` (private): `_delPropValue`, `_delProperty`, `_propertyMap`, `_wrapperCheck` Inherited from `OFS.ZDOM.ElementWithAttributes`: `getAttribute`, `getAttributeNode`, `getAttributes` Inherited from `OFS.ZDOM.Element`: `getChildNodes`, `getElementsByTagName`, `getFirstChild`, `getLastChild`, `getNextSibling`, `getNodeName`, `getNodeType`, `getParentNode`, `getPreviousSibling`, `getTagName` Inherited from `OFS.ZDOM.Node`: `getNodeValue`, `getOwnerDocument`, `hasChildNodes`

Class Methods | [hide private]
Inherited from `ZenRelations.RelationshipManager.RelationshipManager`: `lookupSchema`

Class Variables | [hide private]
| objectPaths = `None`
| version = `'0.1'`
| author = `''`
| organization = `''`
| url = `''`
| license = `''`
| compatZenossVers = `''`
| prevZenPackName = `''`
| prevZenPackVersion = `None`
| eggPack = `False`
| requires = `()`
| loaders = `ZPLObject(), ZPLReport(), ZPLDaemons(), ZPLBin(), ZP`...``
| _properties = `ZenModelRM._properties+({'id': 'objectPaths', 't`...``
| _relations = `'root', ToOne(ToManyCont, 'Products.ZenModel.Data`...``
| factory_type_information = `{'immediate_view': 'viewPackDetail'`...``
| packZProperties = `[]`
| security = `ClassSecurityInfo()`
Inherited from `ZenModelRM.ZenModelRM`: `default_catalog`, `isInTree`, `meta_type` Inherited from `ZenModelBase.ZenModelBase`: `index_html`, `sub_meta_types` Inherited from `ZenModelBase.ZenModelBase` (private): `_zendoc` Inherited from `ZenRelations.RelationshipManager.RelationshipManager`: `manage_main`, `manage_options` Inherited from `ZenRelations.RelationshipManager.RelationshipManager` (private): `_operation` Inherited from `OFS.ObjectManager.ObjectManager`: `has_order_support`, `isAnObjectManager`, `isPrincipiaFolderish`, `manage_addProduct`, `manage_importExportForm`, `manage_index_main`, `meta_types` Inherited from `OFS.ObjectManager.ObjectManager` (private): `_components`, `_objects` Inherited from `OFS.CopySupport.CopyContainer`: `manage_renameForm` Inherited from `App.Management.Navigation`: `manage`, `manage_copyright`, `manage_form_title`, `manage_menu`, `manage_page_footer`, `manage_page_header`, `manage_top_frame`, `manage_zmi_prefs`, `zope_quick_start` Inherited from `ZenRelations.ZItem.ZItem`: `REQUEST`, `__allow_access_to_unprotected_subobjects__`, `__name__`, `__propsets__`, `getId__roles__`, `icon`, `id`, `isTopLevelPrincipiaApplicationObject`, `title` Inherited from `ZenRelations.ZItem.ZItem` (private): `_manage_editedDialog` Inherited from `App.Management.Tabs`: `manage_tabs`, `manage_workspace__roles__` Inherited from `webdav.Collection.Collection`: `__dav_collection__` Inherited from `webdav.Resource.Resource`: `__dav_resource__`, `__http_methods__` Inherited from `OFS.Traversable.Traversable`: `getPhysicalRoot` Inherited from `AccessControl.Owned.Owned`: `manage_owner` Inherited from `AccessControl.Role.RoleManager`: `__ac_local_roles__`, `__ac_roles__`, `aclAChecked`, `aclEChecked`, `aclPChecked`, `manage_acquiredForm`, `manage_editLocalRoles`, `manage_listLocalRoles`, `manage_permissionForm`, `manage_reportUserPermissions`, `manage_roleForm`, `permissionMappingPossibleValues`, `selectedRoles`, `smallRolesWidget` Inherited from `AccessControl.Role.RoleManager` (private): `_normal_manage_access` Inherited from `App.Undo.UndoSupport`: `manage_UndoForm` Inherited from `ZenRelations.ZenPropertyManager.ZenPropertyManager`: `__pychecker__`, `manage_propertiesForm` Inherited from `ZenRelations.ZenPropertyManager.ZenPropertyManager` (private): `_onlystars` Inherited from `OFS.History.Historical`: `HistoricalRevisions`, `manage_change_history_page` Inherited from `OFS.History.Historical` (private): `_manage_historyComparePage` Inherited from `OFS.PropertyManager.PropertyManager`: `manage_propertyTypeForm`, `propertysheets` Inherited from `OFS.PropertyManager.PropertyManager` (private): `_reserved_names`

Method Details | [hide private]

### __init__(self, id, title=None, buildRelations=True) (Constructor) | source code
Overrides: ZenRelations.RelationshipManager.RelationshipManager.__init__

### install(self, app) | source code
Stop daemons, load any loaders, create zProperties, migrate and start daemons Parameters: `app` (ZenPack object) - ZenPack

### upgrade(self, app) | source code
This is essentially an install() call except that a different method is called on the loaders. NB: Newer ZenPacks (egg style) do not use this upgrade method. Instead the proper method is to remove(leaveObjects=True) and install again. See ZenPackCmd.InstallDistAsZenPack(). Parameters: `app` (ZenPack object) - ZenPack

### remove(self, app, leaveObjects=False) | source code
This prepares the ZenPack for removal but does not actually remove the instance from ZenPackManager.packs This is sometimes called during the course of an upgrade where the loaders' unload methods need to be run. Parameters: `app` (ZenPack object) - ZenPack `leaveObjects` (boolean) - remove zProperties and things?

### migrate(self, previousVersion=None) | source code
Migrate to a new version Parameters: `previousVersion` (string) - previous version number

### list(self, app) | source code
Show the list of loaders Parameters: `app` (ZenPack object) - ZenPack Returns: list of objects list of loaders

### createZProperties(self, app) | source code
Create zProperties in the ZenPack's self.packZProperties Parameters: `app` (ZenPack object) - ZenPack

### removeZProperties(self, app) | source code
Remove any zProperties defined in the ZenPack Parameters: `app` (ZenPack object) - ZenPack

### removeCatalogedObjects(self, app) | source code
Delete all objects in the zenPackPersistence catalog that are associated with this zenpack. Parameters: `app` (ZenPack object) - ZenPack

### zmanage_editProperties(self, REQUEST, redirect=False) | source code
Edit a ZenPack object Overrides: ZenModelBase.ZenModelBase.zmanage_editProperties

### manage_exportPack(self, download="no", REQUEST=None) | source code
Export the ZenPack to the /export directory Parameters: `download` (string) - download to client's desktop? ('yes' vs anything else) `REQUEST` (Zope REQUEST object) - Zope REQUEST object To Do: make this more modular add better XML headers

### manage_download(self, REQUEST) | source code
Download the already exported zenpack from $ZENHOME/export Parameters: `REQUEST` (Zope REQUEST object) - Zope REQUEST object

### stopDaemons(self) | source code
Stop all the daemons provided by this pack. Called before an upgrade or a removal of the pack.

### startDaemons(self) | source code
Start all the daemons provided by this pack. Called after an upgrade or an install of the pack.

### restartDaemons(self) | source code
Restart all the daemons provided by this pack. Called after an upgrade or an install of the pack.

### path(self, *parts) | source code
Return the path to the ZenPack module. It would be convenient to store the module name/path in the zenpack object, however this would make things more complicated when the name of the package under ZenPacks changed on us (do to a user edit.)

### isDevelopment(self) | source code
Return True if 1) the pack is an old-style ZenPack (not a Python egg) or 2) the pack is a Python egg and is a source install (includes a setup.py file) Returns False otherwise.

### getModule(self) | source code
Get the loaded module from the given entry point. if not packEntry then retrieve it.

### shouldDeleteFilesOnRemoval(self) | source code
Return True if the egg itself should be deleted when this ZenPack is removed from Zenoss. If the ZenPack code resides in $ZENHOME/ZenPacks then it is deleted, otherwise it is not.

Class Variable Details | [hide private]

  ### loaders Value:
      ZPLObject(), ZPLReport(), ZPLDaemons(), ZPLBin(), ZPLLibExec(), ZPLSki
      ns(), ZPLDataSources(), ZPLLibraries(), ZPLAbout()

  ### _properties Value:
      ZenModelRM._properties+({'id': 'objectPaths', 'type': 'lines', 'mode':
       'w'}, {'id': 'version', 'type': 'string', 'mode': 'w', 'description':
       'ZenPack version'}, {'id': 'author', 'type': 'string', 'mode': 'w', '
      description': 'ZenPack author'}, {'id': 'organization', 'type': 'strin
      g', 'mode': 'w', 'description': 'Sponsoring organization for the ZenPa
      ck'}, {'id': 'url', 'type': 'string', 'mode': 'w', 'description': 'Hom
      epage for the ZenPack'}, {'id': 'license', 'type': 'string', 'mode': '
      w', 'description': 'Name of the license under which this ZenPack is av
      ...

  ### _relations Value:
      'root', ToOne(ToManyCont, 'Products.ZenModel.DataRoot', 'packs'), ('ma
      nager', ToOne(ToManyCont, 'Products.ZenModel.ZenPackManager', 'packs')
      ), ("packables", ToMany(ToOne, "Products.ZenModel.ZenPackable", "pack"
      )),

  ### factory_type_information Value:
      {'immediate_view': 'viewPackDetail', 'factory': 'manage_addZenPack', '
      actions':({'id': 'viewPackDetail', 'name': 'Detail', 'action': 'viewPa
      ckDetail', 'permissions':("Manage DMD",)},)},