def MI_invokeMethod(self, env, objectName, methodName, inputParams):
        # pylint: disable=invalid-name
        """Invoke an extrinsic method.

        Implements the InvokeMethod WBEM operation by calling the
        method on a derived class called cim_method_<method_name>,
        where <method_name> is the name of the CIM method, in all
        lower case.

        Arguments:
        env -- Provider Environment (pycimmb.ProviderEnvironment)
        objectName -- The InstanceName or ClassName of the object on
        which the method is invoked.
        methodName -- The name of the method to be invoked.
        inputParams -- A Dictionary where the key is the parameter name
            and the value is the parameter value.

        The return value for invokeMethod must be a tuple of size 2
        where:
        element 0 is a tuple of size 2 where element 0 is the return
            data type name and element 1 is the actual data value.
        element 1 is a dictionary where the key is the output
            parameter name and the value is a tuple of size 2 where
            element 0 is the data type name for the output parameter
            and element 1 is the actual value of the output parameter.

        A derived class will not normally override this method.

        """

        logger = env.get_logger()
        logger.log_debug('CIMProvider2 MI_invokeMethod called. ' \
                         'method: %s:%s' % (objectName.classname, methodName))
        lmethName = "cim_method_%s" % methodName.lower()
        if hasattr(self, lmethName):
            method = getattr(self, lmethName)
            new_inputs = dict([('param_%s' % k.lower(), v) \
                            for k, v in inputParams.items()])
            try:
                (rval, outs) = method(env=env, object_name=objectName,
                                      **new_inputs)
            except TypeError as exc:
                raise pywbem.CIMError(pywbem.CIM_ERR_INVALID_PARAMETER, str(exc))

            def add_type(v):
                if isinstance(v, pywbem.CIMParameter):
                    return (v.type, v.value)
                lv = v
                if type(v) == list and len(v) > 0:
                    lv = v[0]
                if isinstance(lv, pywbem.CIMClass):
                    tp = 'class'
                elif isinstance(lv, pywbem.CIMInstance):
                    tp = 'instance'
                elif isinstance(lv, pywbem.CIMInstanceName):
                    tp = 'reference'
                elif v is None or (type(v) == list and len(v) == 0):
                    assert(None == 'This should not happen')
                else:
                    tp = cimtype(v)
                return (tp, v)

            louts = {}
            for op in outs:
                louts[op.name] = (op.type, op.value)
            rval = add_type(rval)
            rval = (rval, louts)
        else:
            raise pywbem.CIMError(
                pywbem.CIM_ERR_METHOD_NOT_FOUND,
                "%s:%s"%(objectName.classname, methodName))
        logger.log_debug('CIMProvider2 MI_invokeMethod returning')
        return rval
def MI_invokeMethod ( self , env , objectName , methodName , inputParams ) : logger = env . get_logger ( ) logger . log_debug ( 'CIMProvider2 MI_invokeMethod called. ' 'method: %s:%s' % ( objectName . classname , methodName ) ) lmethName = "cim_method_%s" % methodName . lower ( ) if hasattr ( self , lmethName ) : method = getattr ( self , lmethName ) new_inputs = dict ( [ ( 'param_%s' % k . lower ( ) , v ) for k , v in inputParams . items ( ) ] ) try : ( rval , outs ) = method ( env = env , object_name = objectName , ** new_inputs ) except TypeError as exc : raise pywbem . CIMError ( pywbem . CIM_ERR_INVALID_PARAMETER , str ( exc ) ) def add_type ( v ) : if isinstance ( v , pywbem . CIMParameter ) : return ( v . type , v . value ) lv = v if type ( v ) == list and len ( v ) > 0 : lv = v [ 0 ] if isinstance ( lv , pywbem . CIMClass ) : tp = 'class' elif isinstance ( lv , pywbem . CIMInstance ) : tp = 'instance' elif isinstance ( lv , pywbem . CIMInstanceName ) : tp = 'reference' elif v is None or ( type ( v ) == list and len ( v ) == 0 ) : assert ( None == 'This should not happen' ) else : tp = cimtype ( v ) return ( tp , v ) louts = { } for op in outs : louts [ op . name ] = ( op . type , op . value ) rval = add_type ( rval ) rval = ( rval , louts ) else : raise pywbem . CIMError ( pywbem . CIM_ERR_METHOD_NOT_FOUND , "%s:%s" % ( objectName . classname , methodName ) ) logger . log_debug ( 'CIMProvider2 MI_invokeMethod returning' ) return rval
Invoke an extrinsic method.

        Implements the InvokeMethod WBEM operation by calling the
        method on a derived class called cim_method_<method_name>,
        where <method_name> is the name of the CIM method, in all
        lower case.

        Arguments:
        env -- Provider Environment (pycimmb.ProviderEnvironment)
        objectName -- The InstanceName or ClassName of the object on
        which the method is invoked.
        methodName -- The name of the method to be invoked.
        inputParams -- A Dictionary where the key is the parameter name
            and the value is the parameter value.

        The return value for invokeMethod must be a tuple of size 2
        where:
        element 0 is a tuple of size 2 where element 0 is the return
            data type name and element 1 is the actual data value.
        element 1 is a dictionary where the key is the output
            parameter name and the value is a tuple of size 2 where
            element 0 is the data type name for the output parameter
            and element 1 is the actual value of the output parameter.

        A derived class will not normally override this method.