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

# Class MaintenanceWindow

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 --+       |       |
                                                         |       |       |
                             AccessControl.Owned.Owned --+       |       |
                                                         |       |       |
                                  ZenRelations.ZItem.ZItem --+   |       |
                                                             |   |       |
                                      Acquisition.Implicit --+   |       |
                                                             |   |       |
                            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 --+
                                                                             |
                                                                            MaintenanceWindow

Known Subclasses:
  - NotificationSubscriptionWindow.NotificationSubscriptionWindow
  - , ZenEvents.ActionRuleWindow.ActionRuleWindow

Instance Methods | [hide private]
__init__(self, id) | source code
set(self, start, duration, repeat, enabled=True) | source code
displayName(self) | source code
repeatOptions(self) Provide the list of REPEAT options | source code
getTargetId(self) | source code
niceDuration(self) Return a human readable version of the duration in days, hours, minutes | source code
niceStartDate(self) Return a date in the format use by the calendar javascript | source code
niceStartDateTime(self) Return start time as a string with nice sort qualities | source code
niceStartProductionState(self) Return a string version of the startProductionState | source code
niceStopProductionState(self) Return a string version of the stopProductionState | source code
niceStartHour(self) | source code
niceStartMinute(self) | source code
manage_editMaintenanceWindow(self, startDate='', startHours='', startMinutes='00', durationDays='0', durationHours='00', durationMinutes='00', repeat='Never', startProductionState=300, stopProductionState=RETURN_TO_ORIG_PROD_STATE, enabled=True, skip=1, REQUEST=None) Update the maintenance window from GUI elements | source code
nextEvent(self, now) Return the time of the next begin() or end() | source code
list
    >>> dmd.Devices.Server.breadCrumbs()
    [('/zport/dmd/Devices', 'Devices'),
        ('/zport/dmd/Devices/Server', 'Server')]
breadCrumbs(self, terminator='dmd') fix up breadCrumbs to add a link back to the Manage tab | source code
next(self, now=None) From Unix time_t now value, return next time_t value for the window to start, or None This adjusts for DST changes. | source code
_next(self, now) | source code
target(self) | source code
boolean |
isActive(self) Return whether or not the maintenance window is active. | source code
fetchDeviceMinProdStates(self, devices=None) Return a dictionary of devices and their minimum production state from all maintenance windows. | source code
fetchDevices(self) Get the list of devices from our maintenance window. | source code
setProdState(self, state, ending=False) At any one time there is one production state for each device to be in, and that is the state that is the most 'blacked out' in all of the active maintenance windows affecting that device. | source code
begin(self, now=None) Hook for entering the Maintenance Window: call if you override | source code
end(self) Hook for leaving the Maintenance Window: call if you override | source code
execute(self, now=None) Take the next step: either start or stop the Maintenance Window | source code
adjustDST(self, result) | source code
padDST(self, now) When incrementing or decrementing timestamps within a DST switch we need to add or subtract the DST offset accordingly. | 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_editProperties`, `zmanage_exportObject`, `zmanage_importObject`, `zmanage_importObjects` Inherited from `ZenModelBase.ZenModelBase`: `__call__`, `__hash__`, `all_meta_types`, `aqBaseHasAttr`, `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 `App.Undo.UndoSupport`: `get_request_var_or_attr`, `manage_undo_transactions`, `undoable_transactions` Inherited from `ZenRelations.ZenPropertyManager.ZenPropertyManager`: `deleteZenProperty`, `exportZProperties`, `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]
| meta_type = `'Maintenance Window'`
| default_catalog = `'maintenanceWindowSearch'`
| name = `None`
| start = `None`
| started = `None`
| duration = `60`
| repeat = `'Never'`
| startProductionState = `300`
| stopProductionState = `-99`
| enabled = `True`
| skip = `1`
| _properties = `{'id': 'name', 'type': 'string', 'mode': 'w'}, {`...``
| factory_type_information = `{'immediate_view': 'maintenanceWind`...``
| backCrumb = `'deviceManagement'`
| _relations = `"productionState", ToOne(ToManyCont, "Products.Ze`...``
| security = `ClassSecurityInfo()`
| REPEAT = `"Never/Daily/Every Weekday/Weekly/Monthly/First Sunda`...``
Inherited from `ZenModelRM.ZenModelRM`: `isInTree` 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 `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) (Constructor) | source code
Overrides: ZenRelations.RelationshipManager.RelationshipManager.__init__

### breadCrumbs(self, terminator='dmd') | source code
fix up breadCrumbs to add a link back to the Manage tab Returns: list
    >>> dmd.Devices.Server.breadCrumbs()
    [('/zport/dmd/Devices', 'Devices'),
        ('/zport/dmd/Devices/Server', 'Server')]
List of tuples to create a bread crumbs Overrides: ZenModelBase.ZenModelBase.breadCrumbs

### isActive(self) | source code
Return whether or not the maintenance window is active. Returns: boolean is this window active or not?

### fetchDeviceMinProdStates(self, devices=None) | source code
    Return a dictionary of devices and their minimum production state from
    all maintenance windows.

    Note: This method should be moved to the zenjobs command in order to
          improve performance.

    @return: dictionary of device_id:production_state
    @rtype: dictionary

### setProdState(self, state, ending=False) | source code
At any one time there is one production state for each device to be in, and that is the state that is the most 'blacked out' in all of the active maintenance windows affecting that device. When the last maintenance window affecting a device has ended, the original production state of the device is used to determine the end state of the device. Maintenance windows are processed by zenjobs in batch so the ordering of when two maintenance windows that end at the same time get processed is non-deterministic. Since there is only one stop production state now, this is not an issue. Parameters: `state` (integer) - hint from the maint window about device's start or stop state `ending` (boolean) - are we ending a maintenance window?

Class Variable Details | [hide private]

  ### _properties Value:
      {'id': 'name', 'type': 'string', 'mode': 'w'}, {'id': 'start', 'type':
       'int', 'mode': 'w'}, {'id': 'started', 'type': 'int', 'mode': 'w'}, {
      'id': 'duration', 'type': 'int', 'mode': 'w'}, {'id': 'repeat', 'type'
      : 'string', 'mode': 'w'}, {'id': 'skip', 'type': 'int', 'mode': 'w'},

  ### factory_type_information Value:
      {'immediate_view': 'maintenanceWindowDetail', 'actions':({'id': 'statu
      s', 'name': 'Status', 'action': 'maintenanceWindowDetail', 'permission
      s':(ZEN_MAINTENANCE_WINDOW_VIEW,)},)},

  ### _relations Value:
      "productionState", ToOne(ToManyCont, "Products.ZenModel.MaintenanceWin
      dowable", "maintenanceWindows"),

  ### REPEAT Value:
      "Never/Daily/Every Weekday/Weekly/Monthly/First Sunday of the Month".s
      plit('/')