AVCommon/commands/meta/REPORT.py
__author__ = 'zeno'
from AVCommon.logger import logging
import time
from AVCommon import command
from AVCommon.procedure import Procedure
def execute(vm, protocol, mon_args):
""" client side, returns (bool,*) """
logging.debug(" SET %s" % str(mon_args))
assert vm, "null vm"
assert command.context is not None
assert isinstance(mon_args, list), "VM expects a list"
assert protocol
assert protocol.procedure
logging.debug("insert report init")
command_list = []
command_list.append("REPORT_INIT")
for proc_token in mon_args:
report_args = []
if isinstance(proc_token, basestring):
proc_name = proc_token
elif isinstance(proc_token, dict):
assert len(proc_token.keys()) == 1
proc_name = proc_token.keys()[0]
report_args = proc_token[proc_name]
else:
return False, "Error parsing"
logging.debug("insert report kind: %s args: %s" % (proc_name, report_args))
command_list.append(["REPORT_KIND_INIT", None, (proc_name)])
command_list.append(["CALL", None, (proc_name)])
command_list.append(["REPORT_KIND_END", None, (proc_name, report_args)])
command_list.append("REPORT_END")
proc = Procedure("_REPORT", command_list)
protocol.procedure.insert(proc)
#logging.debug("procedure: %s" % (protocol.procedure.command_list))
#logging.debug("report items: %s" % (command.context))
return True, "REPORT"