def executeWmiQuery(wmiClient, Framework, vector, nodeOsh = None):
    '''WmiClient, Framework, oshVector -> None
    @deprecated use hostresources_win_wmi instead
    '''
    try:
        containerOSH = nodeOsh or modeling.createHostOSH(wmiClient.getIpAddress()) 
        wmiProvider = WmiAgentProvider(wmiClient)
        domainName = _getDomainName(wmiProvider)
        userResources = UserDiscoverer(wmiProvider).discoverByDomain(domainName)
        userResources.build(containerOSH)
        vector.addAll( userResources.report() )
    except HostResourceDiscoveryException, hrde:
        errobj = errorobject.createError(errorcodes.FAILED_GETTING_INFORMATION_NO_PROTOCOL, ['User discovery'], str(hrde))
        logger.reportWarningObject(errobj)
            myVec.addAll(makeUserOSH(hostCmdbId, token[0], token[4], token[2], token[3], token[5]))
    return myVec

def _getDomainName(wmiProvider):
    ''' wmiProvider -> str or None
    @command: select Name from Win32_ComputerSystem
    @return: domain name in upper case or None
    @raise Exception: if WMI query failed
    TODO: move to appropriate discoverer (by WMI)
    '''
    queryBuilder = wmiProvider.getBuilder('Win32_ComputerSystem').addWmiObjectProperties('Name')
    systems = wmiProvider.getAgent().getWmiData(queryBuilder, timeout = 60000)
    if systems:
        return systems[0].Name.upper()

def disWinOs(hostOsh, shell):
    ''' ObjectStateHolder, ShellUtils -> ObjectStateHolderVector
    @raise HostResourceDiscoveryException if discovery failed
    @deprecated: use hostresources_win_wmi instead
    '''
    wmiProvider = WmicProvider(shell)
    try:
        domainName = _getDomainName(wmiProvider)
    except Exception, e:
        logger.debug(str(e))
        raise HostResourceDiscoveryException, "Failed to get host domain name. %s" % e
    else:
        userResources = UserDiscoverer(wmiProvider).discoverByDomain(domainName)
        userResources.build(hostOsh)
        return userResources.report()
Exemple #3
0
def _getDomainName(wmiProvider):
    ''' wmiProvider -> str or None
    @command: select Name from Win32_ComputerSystem
    @return: domain name in upper case or None
    @raise Exception: if WMI query failed
    TODO: move to appropriate discoverer (by WMI)
    '''
    queryBuilder = wmiProvider.getBuilder(
        'Win32_ComputerSystem').addWmiObjectProperties('Name')
    systems = wmiProvider.getAgent().getWmiData(queryBuilder, timeout=60000)
    if systems:
        return systems[0].Name.upper()


def disWinOs(hostOsh, shell):
    ''' ObjectStateHolder, ShellUtils -> ObjectStateHolderVector
    @raise HostResourceDiscoveryException if discovery failed
    @deprecated: use hostresources_win_wmi instead
    '''
    wmiProvider = WmicProvider(shell)
    try:
        domainName = _getDomainName(wmiProvider)
    except Exception, e:
        logger.debug(str(e))
        raise HostResourceDiscoveryException, "Failed to get host domain name. %s" % e
    else:
        userResources = UserDiscoverer(wmiProvider).discoverByDomain(
            domainName)
        userResources.build(hostOsh)
        return userResources.report()