Пример #1
0
    def __getitem__(self, key):
        """
        单例字典魔术方法,返回键key对应的值

        :param str key: 键参数
        :return: 键对应的值
        :rtype: str
        :raises: KeyError 键对应的值不存在
        """

        try:
            return dict.__getitem__(self, key)
        except KeyError:
            raise exception.EMissingParam("key [{}] not exist".format(key))
Пример #2
0
    def get_action(self, name):
        """
        获取一个执行进度

        :param str name: 执行进度名
        :return: 执行进度
        :rtype: Action
        :raises EMissingParam: 缺少参数异常
        """
        match_action = filter(lambda x: x.name == name, self.actions)
        try:
            action = match_action[0]
        except IndexError:
            raise exception.EMissingParam("action:{} not found".format(name))
        return action
Пример #3
0
    def on_message(self, message):
        """
        触发执行并返回结果,``on_execute_message`` 可能为同步或异步操作,
        若为异步操作,则返回结果并非本次执行的结果,
        需要根据ret中EXECUTOR_OPERATION_ID字段确定是哪个操作的结果

        :param Message message: 消息对象
        :return: 无返回
        :rtype: None
        :raises ETypeMismatch: 返回值类型不匹配
        :raises EMissingParam: 返回值缺字段
        """
        ret = self.on_execute_message(message)
        log.info("execute message return:{}".format(ret))
        if not ret:
            return
        elif not isinstance(ret, dict):
            raise exception.ETypeMismatch()
        elif EXECUTOR_OPERATION_ID not in ret:
            raise exception.EMissingParam()
        else:
            message = OperationMessage("COMPLETE_MESSAGE",
                                       ret[EXECUTOR_OPERATION_ID], ret)
            self.send(message)
Пример #4
0
 def test_singledict_getitem_exception(self):
     are.common.SingleDict._instance = None
     sd = are.common.SingleDict({"test": 1})
     self.assertRaises(exception.EMissingParam("key [test2] not exist"))