def execute_method(self, resource, method_name, opts={}): """executes given method with specified opts.""" if hasattr(resource, method_name): method = getattr(resource, method_name) method_args = OrderedDict().fromkeys( MethodHelper.getMethodArgs(brokers, method.im_class.__name__, method_name, drop_self=True)) if method_args: for arg in method_args.keys(): param_type = ParseHelper.getXmlType(arg) if param_type: method_args[arg] = self.update_object_data( param_type.factory(), opts) elif opts.has_key('--' + arg): method_args[arg] = opts['--' + arg] else: # TODO: throw error if param is mandatory pass try: result = method(**method_args) except AttributeError: self.error(Messages.Error.UNSUPPORTED_ATTRIBUTE) else: result = method() return result else: self.error('no such action "%s"' % method_name)
def get_method_params(module, clazz, method, holder=OrderedDict(), expendNestedTypes=False, groupOptions=False): args = MethodHelper.getMethodArgs(module, clazz, method) expender = MethodHelper.__expend_nested_type if not groupOptions: if args: if len(args) == 3: if expendNestedTypes: cand = expender(args[1], module, method, []) else: cand = args[1] cand = ", ".join(cand) if type(cand) == list else cand if not holder.has_key(args[2]): holder[args[2]] = cand else: if holder[args[2]] == None: if args[1] != None: holder[args[2]] = 'None, ' + cand else: holder[args[2]] = holder[args[2]] + ', ' + cand elif len(args) == 2: if not holder.has_key(args[1]): holder[args[1]] = None else: if holder[args[1]] == None: if holder[args[1]] != None: holder[args[1]] = 'None' + ', ' + holder[args[1]] else: holder[args[1]] = holder[args[1]] + ', ' + 'None' return MethodHelper.__remove_replications(holder) else: if args: if len(args) == 3: if expendNestedTypes: cand = expender(args[1], module, method, []) else: cand = args[1] cand = cand if type(cand) == list else [cand] if not holder.has_key(args[2]): holder[args[2]] = [cand] else: if holder[args[2]] == None: if args[1] != None: holder[args[2]] = [[], cand] elif cand not in holder[args[2]]: holder[args[2]].append(cand) elif len(args) == 2: if not holder.has_key(args[1]): holder[args[1]] = [[]] else: if holder[args[1]] == None: if holder[args[1]] != None: holder[args[1]] = [[], holder[args[1]]] elif [] not in holder[args[1]]: holder[args[1]].append([])