def __getV2(self, action, dry_run=0): """ Fetches queued actions for the clients version 2+. """ log_debug(3, self.server_id) # Get the root dir of this install try: method = getMethod.getMethod(action['method'], 'server.action') except getMethod.GetMethodException: Traceback("queue.get V2") raise_with_tb(EmptyAction("Could not get a valid method for %s" % ( action['method'],)), sys.exc_info()[2]) # Call the method result = method(self.server_id, action['id'], dry_run) if result is None: # None are mapped to the empty list result = () elif not isinstance(result, TupleType): # Everything other than a tuple is wrapped in a tuple result = (result, ) xmlblob = xmlrpclib.dumps(result, methodname=action['method']) log_debug(5, "returning xmlblob for action", xmlblob) return { 'id': action['id'], 'action': xmlblob, 'version': action['version'], }
def process_extra_data(self, server_id, action_id, data={}, action_type=None): log_debug(4, server_id, action_id, action_type) if not action_type: # Shouldn't happen return try: method = getMethod.getMethod(action_type, 'server.action_extra_data') except getMethod.GetMethodException: Traceback("queue.get V2") raise_with_tb(EmptyAction("Could not get a valid method for %s" % action_type), sys.exc_info()[2]) # Call the method result = method(self.server_id, action_id, data=data) return result