示例#1
0
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