Exemple #1
0
    def createDeviceProxy(self, dev, skipModelMsg=''):
        if self.plugins is None:
            self.plugins = {}
            for loader in loadPlugins(self.dmd):
                try:
                    plugin = loader.create()
                    plugin.loader = loader
                    self.plugins[plugin.name()] = plugin
                except Exception as ex:
                    log.exception(ex)

        result = DeviceProxy()
        result.id = dev.getId()
        result.skipModelMsg = skipModelMsg

        if not skipModelMsg:
            if not dev.manageIp:
                dev.setManageIp()
            result.manageIp = dev.manageIp
            result.plugins = []
            for name in dev.zCollectorPlugins:
                plugin = self.plugins.get(name, None)
                log.debug('checking plugin %s for device %s' %
                          (name, dev.getId()))
                if plugin and plugin.condition(dev, log):
                    log.debug('adding plugin %s for device %s' %
                              (name, dev.getId()))
                    result.plugins.append(plugin.loader)
                    plugin.copyDataToProxy(dev, result)
            result.temp_device = dev.isTempDevice()
        return result
Exemple #2
0
def WbemGet(url, query, properties):
    from Products.DataCollector.DeviceProxy import DeviceProxy
    from WBEMPlugin import WBEMPlugin

    url = url.rsplit('@', 1)
    device = DeviceProxy()
    device.zWbemProxy, ns = url[1].split('/', 1)
    device.zWbemProxy, device.zWbemPort = device.zWbemProxy.split(':')
    device.id = device.zWbemProxy
    device.manageIp = device.zWbemProxy
    url = url[0].split('//', 1)
    device.zWinUser, device.zWinPassword = url[1].split(':', 1)
    device.zWbemUseSSL = True and url[0] == 'https:' or False

    if query.upper().startswith('SELECT '):
        cn = query
        kb = {}
    else:
        try:
            cn, keys = query.split('.', 1)
            kb = {}
            for key in keys.split(','):
                var, val = key.split('=')
                kb[var] = val
        except:
            cn = query
            kb = {}

    wp = WBEMPlugin()
    wp.tables = {'t': (cn, kb, ns, properties)}
    wp.includeQualifiers = True
    cl = WBEMClient(device=device, plugins=[
        wp,
    ])
    cl.run()
    reactor.run()
    for plugin, result in cl.getResults():
        if plugin == wp and 't' in result:
            return result['t']
    return result
def WbemGet(url, query, properties):
    from Products.DataCollector.DeviceProxy import DeviceProxy
    from WBEMPlugin import WBEMPlugin

    url  = url.rsplit('@', 1)
    device = DeviceProxy()
    device.zWbemProxy, ns = url[1].split('/', 1)
    device.zWbemProxy, device.zWbemPort = device.zWbemProxy.split(':')
    device.id = device.zWbemProxy
    device.manageIp = device.zWbemProxy
    url  = url[0].split('//', 1)
    device.zWinUser, device.zWinPassword = url[1].split(':', 1)
    device.zWbemUseSSL = True and url[0] == 'https:' or False

    if query.upper().startswith('SELECT '):
        cn = query
        kb = {}
    else:
        try:
            cn, keys = query.split('.', 1)
            kb = {}
            for key in keys.split(','):
                var, val = key.split('=')
                kb[var] = val
        except:
            cn = query
            kb = {}

    wp = WBEMPlugin()
    wp.tables = {'t': (cn, kb, ns, properties)}
    wp.includeQualifiers = True
    cl = WBEMClient(device=device, plugins=[wp,])
    cl.run()
    reactor.run()
    for plugin, result in cl.getResults():
        if plugin == wp and 't' in result:
            return result['t']
    return result