addNodeToDSCluster.py

 

'''
   Licensed Materials - Property of IBM
   5725-B69 5655-Y17 5655-Y31
   Copyright IBM Corp. 1987, 2013. All Rights Reserved.

   Note to U.S. Government Users Restricted Rights:
   Use, duplication or disclosure restricted by GSA ADP Schedule
   Contract with IBM Corp.
'''

import java.util as util
import java.io as javaio
import sys, java, traceback, localizedMessages

global AdminConfig

def doIt(wodmHome, scriptDir, propertiesFile, clusterNodeName):

    cellName = java.lang.System.getProperty('local.cell')
    
    localizedMessages.printMessageWithParams('GBRPT0028I', [scriptDir])

    wasFullVersion = AdminTask.getNodeBaseProductVersion('[-nodeName '+clusterNodeName+']')

    dsLayoutDir = ""
    moduleSuffix = ""

    if wasFullVersion.find('8.0') != -1:
        print "WebSphere 8.0 detected ("+wasFullVersion+")"
        dsLayoutDir = "/executionserver/applicationservers/WebSphere8"
        moduleSuffix = "WAS8"
    if wasFullVersion.find('8.5') != -1:
        print "WebSphere 8.5 detected ("+wasFullVersion+")"
        dsLayoutDir = "/executionserver/applicationservers/WebSphere85"
        moduleSuffix = "WAS85"

    dsHome = wodmHome + dsLayoutDir


    props = util.Properties()
    localizedMessages.printMessageWithParams('GBRPT0026I', [propertiesFile])
    inside = props.load(javaio.FileInputStream(propertiesFile))

    # get the value from properties file
    clusterName = checkAndGetProperyValue(props, "wodm.dsrules.clusterName")

    dbType = checkAndGetProperyValue(props, "wodm.dsrules.db.type")
    jdbcDriverPath = checkAndGetProperyValue(props, "wodm.dsrules.db.jdbcDriverPath")
    dbName = checkAndGetProperyValue(props, "wodm.dsrules.db.name")
    dbHostname = checkAndGetProperyValue(props, "wodm.dsrules.db.hostname")
    dbPort = checkAndGetProperyValue(props, "wodm.dsrules.db.port")
    dbUser = checkAndGetProperyValue(props, "wodm.dsrules.db.user")
    dbPassword = checkAndGetProperyValue(props, "wodm.dsrules.db.password")

    datasourceName = "DecisionServer - Datasource"    
    jndiName = "jdbc/resdatasource"

    if dbType != "DB2" and dbType != "Oracle" and dbType != "MSSQL":
        raise RuntimeError, localizedMessages.getMessageWithParam('GBRPT0027E', [dbType])

    deployXU.installXu(cellName, clusterNodeName, dsHome, moduleSuffix)

    if dbType == "DB2":
        providerName = "DecisionServer - DB2 Universal JDBC Driver Provider (XA)"
        jdbcProvider = datasource_utils.createDB2UniversalProvider(clusterNodeName, providerName, jdbcDriverPath, 1)
        if not len(AdminConfig.getid("/Node:" + clusterNodeName + "/JDBCProvider:" + providerName + "/DataSource:" + datasourceName)):
            datasource_utils.createDB2UniversalDatasource(jdbcProvider, datasourceName, jndiName, dbName, dbHostname, dbPort, dbUser, dbPassword)
        else:
            localizedMessages.printMessageWithParams('GBRPT0012W', [datasourceName])
    if dbType == "Oracle":
        providerName = "DecisionServer - Oracle JDBC Driver Provider (XA)"
        jdbcProvider = datasource_utils.createOracleProvider(clusterNodeName, providerName, jdbcDriverPath, 1)
        if not len(AdminConfig.getid("/Node:" + clusterNodeName + "/JDBCProvider:" + providerName + "/DataSource:" + datasourceName)):
            datasource_utils.createOracleDatasource(jdbcProvider, datasourceName, jndiName, dbName, dbHostname, dbPort, dbUser, dbPassword)
        else:
            localizedMessages.printMessageWithParams('GBRPT0012W', [datasourceName])
    if dbType == "MSSQL":
        providerName = "DecisionServer - MSSQL JDBC Driver Provider (XA)"
        jdbcProvider = datasource_utils.createMSSQLProvider(clusterNodeName, providerName, jdbcDriverPath, 1)
        if not len(AdminConfig.getid("/Node:" + clusterNodeName + "/JDBCProvider:" + providerName + "/DataSource:" + datasourceName)):
            datasource_utils.createMSSQLDatasource(jdbcProvider, datasourceName, jndiName, dbName, dbHostname, dbPort, dbUser, dbPassword)
        else:
            localizedMessages.printMessageWithParams('GBRPT0012W', [datasourceName])

    deployClusterTools.createMemberOnNewNode(clusterName, clusterNodeName, "odmDSClone4");

    clusterNode = AdminConfig.getid('/Node:'+clusterNodeName+'/')
    hostname = AdminConfig.showAttribute(clusterNode, 'hostName')
    deployClusterTools.updateVirtualHost(cellName, clusterNodeName, hostname)

    AdminConfig.save()

#EndDef

def checkAndGetProperyValue(props, key):
    try:
        if not len(props.getProperty(key)):
            raise RuntimeError, localizedMessages.getMessageWithParam('GBRPC0027E', [key])
    except:
        raise RuntimeError, localizedMessages.getMessageWithParam('GBRPC0029E', [key])

    return props.getProperty(key)
#EndDef

#-------------------------------------------------------------------------------
# Main
#-------------------------------------------------------------------------------
if len(sys.argv) != 4:
    print __name__ , "Bad number of argument (must be 4)"
    print __name__ , "You can call doIt(wodmHome, scriptDir, propertiesFile, clusterNodeName)"
else:
    sys.path.insert(0, sys.argv[1])
    import deployXU, configureDSUsersAndGroups, resConsoleDeployTools, decisionAppsDeployTools, deployClusterTools, localizedMessages, datasource_utils
    doIt(sys.argv[0], sys.argv[1], sys.argv[2], sys.argv[3])
#EndElse