Example #1
0
 def _runAction(self, resource, action):
     utils.log("Performing action %s on %s" % (action, resource))
     
     providerClass = Provider.resolve(self, resource.__class__.__name__, resource.provider)
     provider = providerClass(resource)
     
     try:
         providerAction = getattr(provider, 'action_%s' % action)
     except AttributeError:
         raise Fail("%r does not implement action %s" % (provider, action))
     
     providerAction()
     
     if resource.isUpdated:
         for action, res in resource.subscriptions['immediate']:
             utils.log("%s sending %s action to %s (immediate)" % (resource, action, res))
             self._runAction(res, action)
         
         for action, res in resource.subscriptions['delayed']:
             utils.log("%s sending %s action to %s (delayed)" % (resource, action, res))
         
         self.delayedActions |= resource.subscriptions['delayed']