def createCssDiscoverer(snmpClient, Framework, OSHVResult, hostOsh): for cssOidBase in CSS_OID_BASES: snmpAgent = SnmpAgent(cssOidBase, snmpClient, Framework) queryProducer = SnmpQueryBuilder(TEST_OID_OFFSET) queryProducer.addQueryElement(2, 'test') testResults = snmpAgent.getSnmpData(queryProducer) if len(testResults): return CssDiscoverer(snmpAgent, OSHVResult, Framework, hostOsh) raise NoCssException
def createF5Discoverer(snmpClient, Framework, OSHVResult): resultSet = snmpClient.executeQuery(F5_V4_TEST_QUERY)#@@CMD_PERMISION snmp protocol execution if resultSet.next(): snmpAgent = SnmpAgent(F5_V4_OID_BASE, snmpClient, Framework) return F5v4Discoverer(snmpAgent, OSHVResult, Framework) resultSet = snmpClient.executeQuery(F5_V9_TEST_QUERY)#@@CMD_PERMISION snmp protocol execution if resultSet.next(): snmpAgent = SnmpAgent(F5_V9_OID_BASE, snmpClient, Framework) return F5v9Discoverer(snmpAgent, OSHVResult, Framework) raise NoF5Exception
def createA10Discoverer(snmpClient, Framework, OSHVResult): resultSet = snmpClient.executeQuery(A10_TEST_QUERY)#@@CMD_PERMISION snmp protocol execution if resultSet.next(): snmpAgent = SnmpAgent(A10_OID_BASE, snmpClient, Framework) return A10Discoverer(snmpAgent, OSHVResult, Framework) raise NoA10Exception
def discoverF5(self, f5Osh): queryBuilder = SnmpQueryBuilder('1.4') queryBuilder.addQueryElement(1, 'name') queryBuilder.addQueryElement(2, 'version') queryBuilder.addQueryElement(3, 'build') queryBuilder.addQueryElement(4, 'edition') queryBuilder.addQueryElement(5, 'date') snmpAgent = SnmpAgent('1.3.6.1.4.1.3375.2', self.snmpAgent.snmpClient, self.Framework) try: productInformation = snmpAgent.getSnmpData(queryBuilder)[0] f5Osh.setAttribute('application_version', productInformation.version) except: errorMsg = 'Failed to get general information' errobj = errorobject.createError(errorcodes.FAILED_GETTING_INFORMATION, ['snmp', 'general information'], errorMsg) logger.debugException(errorMsg) logger.reportWarningObject(errobj) self.discoverVirtualServers(f5Osh)
def doQuerySNMPService(client, OSHVResult): _hostObj = modeling.createHostOSH(client.getIpAddress()) snmpAgent = SnmpAgent('1.3.6.1.4.1.77', client, None) serviceTableWorker = SimpleTableWorker('1.2.3.1', 'service', snmpAgent) serviceTableWorker.defineMapping(1, 'data_name') serviceTableWorker.defineMappingByMap(2, 'service_installstatus', INSTALL_STATUS_DICT) serviceTableWorker.defineMappingByMap(3, 'service_operatingstatus', OPERATING_STATUS_DICT) serviceTableWorker.defineMappingByMap(4, 'service_canbeuninstalled', TRUE_FALSE_DICT) serviceTableWorker.defineMappingByMap(5, 'service_canbepaused', TRUE_FALSE_DICT) oshs = serviceTableWorker.createOSHs() for osh in oshs: osh.setContainer(_hostObj) OSHVResult.add(osh)
def DiscoveryMain(Framework): OSHVResult = ObjectStateHolderVector() try: checkAlteon(Framework) snmpClient = Framework.createClient() ipAddress = Framework.getDestinationAttribute('ip_address') hostOsh = modeling.createHostOSH(ipAddress) OSHVResult.add(hostOsh) try: snmpAgent = SnmpAgent(ALTEON_OID_BASE, snmpClient, Framework); alteonDiscoverer = AlteonDiscoverer(snmpAgent, OSHVResult, Framework) alteonDiscoverer.discoverAlteon(hostOsh) finally: snmpClient.close() except: logger.errorException('') errobj = errorobject.createError(errorcodes.FAILED_TO_DISCOVER_ALTEON, None, 'Failed to discover Alteon') logger.reportErrorObject(errobj) return OSHVResult
def DiscoveryMain(Framework): OSHVResult = ObjectStateHolderVector() ipAddress = Framework.getDestinationAttribute('ip_address') try: snmpClient = Framework.createClient() snmpAgent = SnmpAgent(CISCO_ACE_OID_BASE, snmpClient, Framework) try: cisco_Discoverer = Cisco_Discoverer(snmpAgent, OSHVResult, Framework) cisco_Discoverer.getTopology(ipAddress) finally: snmpClient.close() except NO_CISCO_ACE_Exception: logger.reportWarning("No Cisco ACE found on the remote machine") except: #TODO: use errormessages here msg = logger.prepareFullStackTrace('') errobj = errormessages.resolveError(msg, 'snmp') logger.reportErrorObject(errobj) logger.debugException('') return OSHVResult