def DiscoveryMain(Framework): OSHVResult = ObjectStateHolderVector() clientId = Framework.getDestinationAttribute('CLIENT_ID') clientClass = Framework.getDestinationAttribute('CLIENT_CLASS') accDatabaseIds = Framework.getTriggerCIDataAsList('ACC_DB_ID') accDatabaseClasses = Framework.getTriggerCIDataAsList('ACC_DB_CLASS') serverIds = Framework.getTriggerCIDataAsList('SERVER_ID') context = Framework.getDestinationAttribute('CONTEXT') SCPId = Framework.getDestinationAttribute('id') serverIdsHaveLink = Framework.getTriggerCIDataAsList('SERVER_ID_HAVE_LINK') serverIdsShouldHaveLink = Framework.getTriggerCIDataAsList( 'SERVER_ID_SHOULD_HAVE_LINK') serverClassesHaveLink = Framework.getTriggerCIDataAsList( 'SERVER_CLASS_HAVE_LINK') acclinks = 0 index = 0 logger.debug("Try to create dependency using database name: ", context) for accDatabaseId in accDatabaseIds: if accDatabaseId and accDatabaseId != clientId: accDatabaseClass = accDatabaseClasses[index] logger.debug("Creating CP link to database: ", accDatabaseId) OSHVResult.addAll( scp.createCPLink(clientId, clientClass, accDatabaseId, accDatabaseClass, SCPId, context)) acclinks += 1 index += 1 if acclinks == 0: logger.debug( "No accurate dependency found, using port to do dependency") for serverId in serverIds: if serverId and serverId != clientId: logger.debug("creating cp-link for ci:", serverId) OSHVResult.addAll( scp.createCPLink(clientId, clientClass, serverId, 'running_software', SCPId, context)) logger.debug("check if there is cp link need to be deleted") clientOsh = ObjectStateHolder( clientClass, CmdbObjectID.Factory.restoreObjectID(clientId)) scp.deleteDependencies(Framework, clientOsh, serverIdsHaveLink, serverIdsShouldHaveLink, serverClassesHaveLink) return OSHVResult
def DiscoveryMain(Framework): OSHVResult = ObjectStateHolderVector() ## Write implementation to return new result CIs here... clientId = Framework.getDestinationAttribute('CLIENT_ID') clientClass = Framework.getDestinationAttribute('CLIENT_CLASS') serverIds = Framework.getTriggerCIDataAsList('SERVER_ID') serverClasses = Framework.getTriggerCIDataAsList('SERVER_CLASS') scpId = Framework.getDestinationAttribute('id') serverIdsHaveLink = Framework.getTriggerCIDataAsList('SERVER_ID_HAVE_LINK') serverIdsShouldHaveLink = Framework.getTriggerCIDataAsList('SERVER_ID_SHOULD_HAVE_LINK') serverClassesHaveLink = Framework.getTriggerCIDataAsList('SERVER_CLASS_HAVE_LINK') clientOsh = ObjectStateHolder(clientClass, clientId) OSHVResult.add(clientOsh) if Framework.getDestinationAttribute('CLIENT_APPLICATION_ID'): buildClientOsh(Framework, clientOsh) index = -1 processed = set() reference = buildReferenceString(Framework) for serverId in serverIds: index += 1 if serverId: if serverId in processed: logger.debug('Ignore duplication link for id:', serverId) continue processed.add(serverId) if serverId == clientId: logger.debug('Ignore self link from id:', serverId) continue logger.debug("creating cp-link for ci:", serverId) serverClass = serverClasses[index] or 'running_software' serverOsh = ObjectStateHolder(serverClass, serverId) OSHVResult.add(serverOsh) OSHVResult.addAll(scp.createCPLinkByOsh(clientOsh, serverOsh, scpId, reference)) if clientClass == 'business_application': containmentLink = modeling.createLinkOSH('containment', clientOsh, serverOsh) OSHVResult.add(containmentLink) logger.debug("check if there is cp link need to be deleted") scp.deleteDependencies(Framework, clientOsh, serverIdsHaveLink, serverIdsShouldHaveLink, serverClassesHaveLink) return OSHVResult
def DiscoveryMain(Framework): OSHVResult = ObjectStateHolderVector() clientId = Framework.getDestinationAttribute('CLIENT_ID') clientClass = Framework.getDestinationAttribute('CLIENT_CLASS') accDatabaseIds = Framework.getTriggerCIDataAsList('ACC_DB_ID') accDatabaseClasses = Framework.getTriggerCIDataAsList('ACC_DB_CLASS') serverIds = Framework.getTriggerCIDataAsList('SERVER_ID') context = Framework.getDestinationAttribute('CONTEXT') SCPId = Framework.getDestinationAttribute('id') serverIdsHaveLink = Framework.getTriggerCIDataAsList('SERVER_ID_HAVE_LINK') serverIdsShouldHaveLink = Framework.getTriggerCIDataAsList('SERVER_ID_SHOULD_HAVE_LINK') serverClassesHaveLink = Framework.getTriggerCIDataAsList('SERVER_CLASS_HAVE_LINK') acclinks = 0 index = 0 logger.debug("Try to create dependency using database name: ", context) for accDatabaseId in accDatabaseIds: if accDatabaseId and accDatabaseId != clientId: accDatabaseClass = accDatabaseClasses[index] logger.debug("Creating CP link to database: ", accDatabaseId) OSHVResult.addAll(scp.createCPLink(clientId, clientClass, accDatabaseId, accDatabaseClass, SCPId, context)) acclinks += 1 index += 1 if acclinks == 0: logger.debug("No accurate dependency found, using port to do dependency") for serverId in serverIds: if serverId and serverId != clientId: logger.debug("creating cp-link for ci:", serverId) OSHVResult.addAll(scp.createCPLink(clientId, clientClass, serverId, 'running_software', SCPId, context)) logger.debug("check if there is cp link need to be deleted") clientOsh = ObjectStateHolder(clientClass, CmdbObjectID.Factory.restoreObjectID(clientId)) scp.deleteDependencies(Framework, clientOsh, serverIdsHaveLink, serverIdsShouldHaveLink, serverClassesHaveLink) return OSHVResult