Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    def __getDict():
        """
        Combines the dect of configuration from both default
        and custom config files
        
        @return: dict
        """

        config_fname = ConfigManager.CONFIG_DIR + '/' + ConfigManager.CONFIG_FILE
        custom_config_fname = ConfigManager.CUSTOM_CONFIG_DIR + '/' + ConfigManager.CUSTOM_CONFIG_FILE

        if not ConfigManager.__dict:
            with ConfigManager.__lock:
                if not ConfigManager.__dict:
                    config = OrderedDict(
                                         ConfigManager.__loadConfigFile(
                                                        fname=config_fname
                                                        )
                                         )
                    custom_config = OrderedDict(
                                        ConfigManager.__loadConfigFile(
                                                       fname=custom_config_fname,
                                                       error_on_not_found=False
                                                       )
                                    )
                    if config and custom_config:
                        config.update(custom_config)
                    ConfigManager.__dict = config

        return ConfigManager.__dict
Ejemplo n.º 4
0
    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([])
Ejemplo n.º 5
0
 def __getitem__(self, key):
     if key not in self.data.keys():
         with self.__lock:
             if key not in self.data.keys():
                 OrderedDict.__setitem__(self, key, Cache())
     return OrderedDict.__getitem__(self, key)
Ejemplo n.º 6
0
 def __init__(self):
     OrderedDict.__init__(self)
     self.__lock = threading.RLock()