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']