def createOAMRunningSoftwareOsh(scpId, ip, port, protocolId, version, apacheOsh, vector): """ Create OAM osh on oam endpoint, oam node & client server relation """ logger.debug('submit OAM endpoint: %s:%s' % (ip, port)) endpoint = netutils.createTcpEndpoint(ip, port) builder = netutils.ServiceEndpointBuilder() reporter = netutils.EndpointReporter(builder) nodeOsh = reporter.reportHostFromEndpoint(endpoint) endpointOsh = reporter.reportEndpoint(endpoint, nodeOsh) linkOsh = modeling.createLinkOSH('client_server', apacheOsh, endpointOsh) linkOsh.setStringAttribute('clientserver_protocol', 'tcp') oamServerOsh = modeling.createApplicationOSH('running_software', 'Oracle Access Management', nodeOsh, None, 'oracle_corp') oamServerOsh.setStringAttribute('credentials_id', protocolId) oamServerOsh.setStringAttribute('version', version) usageOsh = modeling.createLinkOSH('usage', oamServerOsh, endpointOsh) vector.add(nodeOsh) vector.add(endpointOsh) vector.add(linkOsh) vector.add(oamServerOsh) vector.add(usageOsh) logger.debug("create ownership between runningsoftware and scp") vector.addAll(scp.createOwnerShip(scpId, oamServerOsh)) logger.debug("create consumer-provider link between apache and runningsoftware") reference = 'connection_type=oam, server_host=%s, server_ip=%s, server_port=%s' % (ip, ip, port) vector.addAll(scp.createCPLinkByOsh(apacheOsh, oamServerOsh, scpId, reference))
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