Ejemplo n.º 1
0
def install_mdex(configData, full_path):
    endecaData = configData[json_key]
    requiredFields = ['installOwner', 'installGroup']
    commerce_setup_helper.check_required_fields(endecaData, requiredFields)
    INSTALL_OWNER = endecaData['installOwner']
    INSTALL_GROUP = endecaData['installGroup']
    if 'mdex' in endecaData:
        jsonData = endecaData['mdex']
        requiredFields = ['endecaRoot']
        commerce_setup_helper.check_required_fields(jsonData, requiredFields)
    else:
        logging.error(service_name +
                      " config data missing from json. will not install")
        return

    logging.info("installing " + service_name)

    if (platform.system() == "SunOS"):
        binary_path = full_path + "/binaries/endeca11.3/solaris"
        install_exec = "/MDEX_Install/OCmdex6.5.3-Solaris.bin"
    else:
        binary_path = full_path + "/binaries/endeca11.3"
        install_exec = "/MDEX_Install/OCmdex11.3.0-Linux64_1186050.bin"

    response_files_path = full_path + "/responseFiles/endeca11.3"
    full_exec_path = binary_path + install_exec

    if not os.path.exists(full_exec_path):
        logging.error("Binary " + full_exec_path +
                      " does not exist - will not install")
        return False

    if jsonData is not None:
        ENDECA_ROOT = jsonData['endecaRoot']
        # make the install tree with correct owner if needed
        commerce_setup_helper.mkdir_with_perms(ENDECA_ROOT, INSTALL_OWNER,
                                               INSTALL_GROUP)

        # data field to replace in our silent installer file
        field_replacements = {'INSTALLATION_DIR': ENDECA_ROOT}

        commerce_setup_helper.substitute_file_fields(
            response_files_path + '/mdex_response.rsp.master',
            response_files_path + '/mdex_response.rsp', field_replacements)

        installCommand = "\"" + full_exec_path + " -i silent -f " + response_files_path + '/mdex_response.rsp' + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)

        # add bashrc entries
        commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                            "##################### \n")
        commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                            "#Endeca Settings \n")
        commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                            "##################### \n")
        commerce_setup_helper.add_to_bashrc(
            INSTALL_OWNER, "source " + ENDECA_ROOT +
            "/endeca/MDEX/11.3.0/mdex_setup_sh.ini \n")
        commerce_setup_helper.add_to_bashrc(
            INSTALL_OWNER, "export ENDECA_HOME=" + ENDECA_ROOT + "/endeca \n")
Ejemplo n.º 2
0
def patch_manifest(INSTALL_DIR, INSTALL_OWNER):
    # fix missing manifest entry that cause jps-config.xml to not get pulled into standalone ears
    MANIFEST_TO_UPDATE = INSTALL_DIR + "/home/META-INF/MANIFEST.MF"
    fixJPScmd = "\"" + "echo >> " + MANIFEST_TO_UPDATE + \
                "; echo 'Name: security' >> " + MANIFEST_TO_UPDATE + \
                "; echo 'ATG-Assembler-Import-File: true' >> " + MANIFEST_TO_UPDATE + "\""
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, fixJPScmd)
def pack_domain(configData, full_path): 
    
    if json_key in configData:
        jsonData = configData[json_key]
    else:
        print json_key + " config data missing from json. will not install"
        return
                
    print "Packing... " + service_name                
    requiredFields = ['middlewareHome', 'installOwner', 'wl_domain']
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)

    INSTALL_DIR = jsonData['middlewareHome']
    INSTALL_OWNER = jsonData['installOwner']
    WL_DOMAIN_NAME = jsonData['wl_domain']

        
    WL_DOMAIN_HOME = INSTALL_DIR + '/user_projects/domains/' + WL_DOMAIN_NAME
    DOMAIN_TEMPLATE_NAME = WL_DOMAIN_NAME + '-template.jar'
    DOMAIN_TEMPLATE_PATH = INSTALL_DIR + '/user_projects/domains/' + DOMAIN_TEMPLATE_NAME
    
    packCmd = "\"" + INSTALL_DIR + "/wlserver/common/bin/pack.sh -managed=true -domain=" + WL_DOMAIN_HOME + " -template=" + DOMAIN_TEMPLATE_PATH + " -template_name=" + WL_DOMAIN_NAME + "\""
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, packCmd)
    
    # put a copy of the packed domain in our special users homeDir
    templateUser = "******"
    homeDir = os.path.expanduser("~" + templateUser)
    if os.path.isdir(homeDir):
        shutil.copyfile(DOMAIN_TEMPLATE_PATH , homeDir + "/" + DOMAIN_TEMPLATE_NAME)
        os.chmod(homeDir + "/" + DOMAIN_TEMPLATE_NAME, 0644)
    else:
        print "user " + templateUser + " home dir not available. Will not copy packed domain" 
Ejemplo n.º 4
0
def patch_crs(configData, full_path):
    """
    patch1 has a bug where it does not update CRS with new taglibs. Patch it here.
    """
    atginstall_json_key = 'ATG_install'
    if atginstall_json_key not in configData:
        return

    jsonData = configData[atginstall_json_key]
    INSTALL_DIR = jsonData['dynamoRoot']
    INSTALL_OWNER = jsonData['installOwner']
    INSTALL_CRS = jsonData['install_crs']

    if INSTALL_CRS:
        # If patch1 is installed, these are not updated. fix it.
        cpCmd = "\"" + "cp " + INSTALL_DIR + "/DAS/taglib/dspjspTaglib/1.0/lib/dspjspTaglib1_0.jar " + INSTALL_DIR + "/CommerceReferenceStore/Store/Storefront/j2ee-apps/Storefront/store.war/WEB-INF/lib" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, cpCmd)
        cpCmd = "\"" + "cp " + INSTALL_DIR + "/DAS/taglib/dspjspTaglib/1.0/lib/dspjspTaglib1_0.jar " + INSTALL_DIR + "/CommerceReferenceStore/Store/Storefront/j2ee-apps/Storefront/storedocroot.war/WEB-INF/lib" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, cpCmd)
        cpCmd = "\"" + "cp " + INSTALL_DIR + "/DAS/taglib/dspjspTaglib/1.0/lib/dspjspTaglib1_0.jar " + INSTALL_DIR + "/CommerceReferenceStore/Store/Fluoroscope/j2ee-apps/Fluoroscope/fluoroscope.war/WEB-INF/lib" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, cpCmd)
        cpCmd = "\"" + "cp " + INSTALL_DIR + "/DAS/taglib/dspjspTaglib/1.0/lib/dspjspTaglib1_0.jar " + INSTALL_DIR + "/CommerceReferenceStore/Store/DCS-CSR/j2ee-apps/DCS-CSR/CSRHelper.war/WEB-INF/lib" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, cpCmd)
        cpCmd = "\"" + "cp " + INSTALL_DIR + "/DAS/taglib/dspjspTaglib/1.0/lib/dspjspTaglib1_0.jar " + INSTALL_DIR + "/CommerceReferenceStore/Store/EStore/Versioned/j2ee-apps/Versioned/store-merchandising.war/WEB-INF/lib" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, cpCmd)
Ejemplo n.º 5
0
def install_java(configData, full_path):

    if json_key in configData:
        jsonData = configData[json_key]
    else:
        print service_name + " config data missing from json. will not install"
        return

    if (platform.system() == "SunOS"):
        binary_path = full_path + "/binaries/java1.8/solaris"
    else:
        binary_path = full_path + "/binaries/java1.8"

    requiredFields = ['javaHome', 'installOwner', 'installGroup']
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)
    INSTALL_OWNER = jsonData['installOwner']
    INSTALL_GROUP = jsonData['installGroup']
    JAVA_HOME = jsonData['javaHome']

    commerce_setup_helper.mkdir_with_perms(JAVA_HOME, INSTALL_OWNER,
                                           INSTALL_GROUP)

    # solaris setup is different
    if (platform.system() == "SunOS"):
        install64bitCommand = "\"" + "cd " + JAVA_HOME + "; tar zxf " + binary_path + "/jdk-8u73-solaris-sparcv9.tar.gz " + "\""
    else:
        installCommand = "\"" + "tar zxf " + binary_path + "/jdk-8u73-linux-x64.tar.gz -C " + JAVA_HOME + "\""

    linkCommand = "\"" + "ln -sf " + JAVA_HOME + "/jdk1.8.0_73 " + JAVA_HOME + "/latest" + "\""

    if (platform.system() == "SunOS"):
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, install64bitCommand)
    else:
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)

    if (os.path.exists(JAVA_HOME + "/latest")
            or os.path.islink(JAVA_HOME + "/latest")):
        os.remove(JAVA_HOME + "/latest")
    os.symlink(JAVA_HOME + "/jdk1.8.0_73", JAVA_HOME + "/latest")

    # commerce_setup_helper.exec_as_user(INSTALL_OWNER, linkCommand)
    if (platform.system() != "SunOS"):
        if (os.path.exists('/usr/bin/java')
                or os.path.islink('/usr/bin/java')):
            os.remove('/usr/bin/java')
        os.symlink(JAVA_HOME + '/latest/bin/java', '/usr/bin/java')

    # add bashrc entries
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                        "##################### \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, "#Java Settings \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                        "##################### \n")
    commerce_setup_helper.add_to_bashrc(
        INSTALL_OWNER, "export JAVA_HOME=" + JAVA_HOME + "/latest \n")
    commerce_setup_helper.add_to_bashrc(
        INSTALL_OWNER, "export PATH=" + JAVA_HOME + "/latest/bin:$PATH \n\n")

    os.environ['JAVA_HOME'] = JAVA_HOME
    os.environ["PATH"] = JAVA_HOME + "/bin" + os.pathsep + os.environ["PATH"]
Ejemplo n.º 6
0
def create_servers(configData, full_path):
    """
    Create references to managed servers in the Weblogic Admin instance
    Uses WLST. Not for initial domain setup, but can be used on running domain later
    """
    if json_key in configData:
        jsonDataArray = configData[json_key]
    else:
        logging.error(json_key +
                      " config data missing from json. will not install")
        return

    if common_key in configData:
        commonData = configData[common_key]
    else:
        logging.error(common_key +
                      " config data missing from json. will not install")
        return

    response_files_path = full_path + "/responseFiles/wls-12.1.2"

    logging.info("Updating " + service_name)

    commonRequiredFields = [
        'middlewareHome', 'installOwner', 'wl_adminUser', 'wl_adminHttpPort',
        'wl_adminHost'
        'wl_adminPassword'
    ]
    commerce_setup_helper.check_required_fields(commonData,
                                                commonRequiredFields)

    INSTALL_DIR = commonData['middlewareHome']
    INSTALL_OWNER = commonData['installOwner']
    WL_ADMIN_USER = commonData['wl_adminUser']
    WL_ADMIN_PW = commonData['wl_adminPassword']
    WL_ADMIN_HOST = commonData['wl_adminHost']
    WL_ADMIN_HTTP_PORT = commonData['wl_adminHttpPort']

    wlst_path = INSTALL_DIR + "/wlserver/common/bin/wlst.sh"

    if not os.path.exists(wlst_path):
        logging.error("Binary " + wlst_path +
                      " does not exist - will not install")
        return False

    for jsonData in jsonDataArray:

        requiredFields = [
            'managedServerName', 'managedServerHttpPort', 'managedServerHost'
        ]
        commerce_setup_helper.check_required_fields(jsonData, requiredFields)

        WL_SERVER_NAME = jsonData['managedServerName']
        WL_SERVER_PORT = jsonData['managedServerHttpPort']
        WL_SERVER_HOST = jsonData['managedServerHost']

        wlCmd = "\"" + wlst_path + " " + response_files_path + "/createManagedServer.py -u " + WL_ADMIN_USER + \
        " -p " + WL_ADMIN_PW + " -a t3://" + WL_ADMIN_HOST + ":" + WL_ADMIN_HTTP_PORT + " -n " + WL_SERVER_NAME + " -h " + WL_SERVER_PORT + " -m " + WL_SERVER_HOST + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, wlCmd)
Ejemplo n.º 7
0
def create_machines(configData, full_path):
    """
    Meant to add machines to a running WebLogic domain
    """
    if json_key in configData:
        jsonDataArray = configData[json_key]
    else:
        logging.error(json_key +
                      " config data missing from json. will not install")
        return

    if common_key in configData:
        commonData = configData[common_key]
    else:
        logging.error(common_key +
                      " config data missing from json. will not install")
        return

    response_files_path = full_path + "/responseFiles/wls-12.1.2"

    logging.info("Updating " + service_name)

    commonRequiredFields = [
        'middlewareHome', 'installOwner', 'wl_adminUser', 'wl_adminHttpPort',
        'wl_adminHost'
        'wl_adminPassword'
    ]
    commerce_setup_helper.check_required_fields(commonData,
                                                commonRequiredFields)

    INSTALL_DIR = commonData['middlewareHome']
    INSTALL_OWNER = commonData['installOwner']
    WL_ADMIN_USER = commonData['wl_adminUser']
    WL_ADMIN_PW = commonData['wl_adminPassword']
    WL_ADMIN_HOST = commonData['wl_adminHost']
    WL_ADMIN_HTTP_PORT = commonData['wl_adminHttpPort']

    wlst_path = INSTALL_DIR + "/wlserver/common/bin/wlst.sh"

    if not os.path.exists(wlst_path):
        logging.error("Binary " + wlst_path +
                      " does not exist - will not install")
        return False

    for jsonData in jsonDataArray:
        requiredFields = ['machineName', 'machineAddress']
        commerce_setup_helper.check_required_fields(jsonData, requiredFields)

        WL_MACHINE_NAME = jsonData['machineName']
        WL_MACHINE_ADDR = jsonData['machineAddress']

        wlCmd = "\"" + wlst_path + " " + response_files_path + "/createMachine.py -u " + WL_ADMIN_USER + \
        " -p " + WL_ADMIN_PW + " -a t3://" + WL_ADMIN_HOST + ":" + WL_ADMIN_HTTP_PORT + " -m " + WL_MACHINE_NAME + " -h " + WL_MACHINE_ADDR + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, wlCmd)
Ejemplo n.º 8
0
def install_mdex(configData, full_path):
    endecaData = configData[json_key]
    requiredFields = ['installOwner', 'installGroup']
    commerce_setup_helper.check_required_fields(endecaData, requiredFields)
    INSTALL_OWNER = endecaData['installOwner']
    INSTALL_GROUP = endecaData['installGroup']
    if 'mdex' in endecaData:
        jsonData = endecaData['mdex']
        requiredFields = ['endecaRoot']
        commerce_setup_helper.check_required_fields(jsonData, requiredFields)
    else:
        print service_name + " config data missing from json. will not install"
        return

    print "installing " + service_name

    if (platform.system() == "SunOS"):
        binary_path = full_path + "/binaries/endeca11.1/solaris"
        install_exec = "/MDEX_Install/OCmdex6.5.1-Solaris_829811.sh"
    else:
        binary_path = full_path + "/binaries/endeca11.1"
        install_exec = "/MDEX_Install/OCmdex6.5.1-Linux64_829811.sh"

    full_exec_path = binary_path + install_exec

    if not os.path.exists(full_exec_path):
        print "Binary " + full_exec_path + " does not exist - will not install"
        return False

    if jsonData is not None:

        ENDECA_ROOT = jsonData['endecaRoot']
        # make the install tree with correct owner if needed
        commerce_setup_helper.mkdir_with_perms(ENDECA_ROOT, INSTALL_OWNER,
                                               INSTALL_GROUP)

        installCommand = "\"" + full_exec_path + " --target " + ENDECA_ROOT + "\""
        # print "command is " + installCommand
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)

        # add bashrc entries
        commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                            "##################### \n")
        commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                            "#Endeca Settings \n")
        commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                            "##################### \n")
        commerce_setup_helper.add_to_bashrc(
            INSTALL_OWNER, "source " + ENDECA_ROOT +
            "/endeca/MDEX/6.5.1/mdex_setup_sh.ini \n")
        commerce_setup_helper.add_to_bashrc(
            INSTALL_OWNER, "export ENDECA_HOME=" + ENDECA_ROOT + "/endeca \n")
def config_wl_domain(configData, full_path):
    """
    Modify settings in a running domain
    """

    if json_key in configData:
        jsonData = configData[json_key]
    else:
        logging.error(json_key +
                      " config data missing from json. will not install")
        return

    if common_key in configData:
        commonData = configData[common_key]
    else:
        logging.error(common_key +
                      " config data missing from json. will not install")
        return

    response_files_path = full_path + "/responseFiles/wls-12.1.3"

    logging.info("Updating " + service_name)

    commonRequiredFields = [
        'middlewareHome', 'installOwner', 'wl_adminUser', 'wl_adminPassword',
        'wl_domain', 'wl_adminHttpPort', 'wl_adminHost'
    ]
    commerce_setup_helper.check_required_fields(commonData,
                                                commonRequiredFields)

    requiredFields = ['jtaTimeout']
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)

    INSTALL_DIR = commonData['middlewareHome']
    INSTALL_OWNER = commonData['installOwner']
    WL_ADMIN_USER = commonData['wl_adminUser']
    WL_ADMIN_PW = commonData['wl_adminPassword']
    WL_ADMIN_HOST = commonData['wl_adminHost']
    WL_ADMIN_HTTP_PORT = commonData['wl_adminHttpPort']
    JTA_TIMEOUT = jsonData['jtaTimeout']

    wlst_path = INSTALL_DIR + "/wlserver/common/bin/wlst.sh"

    if not os.path.exists(wlst_path):
        logging.error("Binary " + wlst_path +
                      " does not exist - will not install")
        return False

    jtaCmd = "\"" + wlst_path + " " + response_files_path + "/setJTA.py -u " + WL_ADMIN_USER + \
    " -p " + WL_ADMIN_PW + " -a t3://" + WL_ADMIN_HOST + ":" + WL_ADMIN_HTTP_PORT + " -j " + JTA_TIMEOUT + "\""
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, jtaCmd)
Ejemplo n.º 10
0
def patch_weblogic(configData, full_path):
    if json_key in configData:
        jsonData = configData[json_key]
    else:
        logging.error(json_key +
                      " config data missing from json. will not install")
        return

    binary_path = full_path + "/binaries/wls-12.2.1"
    patches_path = binary_path + "/patches"
    # json key containing patch files
    patchKey = "wl_patches"

    requiredFields = ['middlewareHome', 'installOwner', 'installGroup']
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)

    INSTALL_DIR = jsonData['middlewareHome']
    INSTALL_OWNER = jsonData['installOwner']
    PATCH_FILES = None

    # if the patches key was provided, get the list of patches to apply
    if patchKey in jsonData:
        PATCH_FILES = jsonData['wl_patches']

    if PATCH_FILES:
        logging.info("patching " + service_name)
        patches = PATCH_FILES.split(',')
        patchList = []
        patchScript = INSTALL_DIR + "/OPatch/opatch"
        tmpPatchDir = "/tmp/wlpatches"
        for patch in patches:
            # get list of patches - comma separated
            patchParts = patch.split('_')
            # get just the patch numbner
            patchNum = patchParts[0][1:]
            # keep a running list of all patch numbers
            patchList.append(patchNum)
            if not os.path.exists(patches_path + "/" + patch):
                logging.error("patch file " + patches_path + "/" + patch +
                              " missing - will not install")
                return
            # unzip patch to /tmp. This will create a dir with the patchNum as the name
            unzipCommand = "\"" + "unzip " + patches_path + "/" + patch + " -d " + tmpPatchDir + "\""
            commerce_setup_helper.exec_as_user(INSTALL_OWNER, unzipCommand)
        patchCommand = "\"" + patchScript + " napply " + tmpPatchDir + " -jre /usr/java/latest" + " -silent -id " + ','.join(
            patchList) + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, patchCommand)
        # cleanup our files from /tmp
        shutil.rmtree(tmpPatchDir)
def pack_domain(configData, full_path):

    if json_key in configData:
        jsonData = configData[json_key]
    else:
        logging.error(json_key +
                      " config data missing from json. will not install")
        return

    logging.info("Packing... " + service_name)
    requiredFields = ['middlewareHome', 'installOwner', 'wl_domain']
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)

    INSTALL_DIR = jsonData['middlewareHome']
    INSTALL_OWNER = jsonData['installOwner']
    WL_DOMAIN_NAME = jsonData['wl_domain']

    WL_DOMAIN_HOME = INSTALL_DIR + '/user_projects/domains/' + WL_DOMAIN_NAME
    DOMAIN_TEMPLATE_NAME = WL_DOMAIN_NAME + '-template.jar'
    DOMAIN_TEMPLATE_PATH = INSTALL_DIR + '/user_projects/domains/' + DOMAIN_TEMPLATE_NAME

    JAVA_RAND = ""
    # if linux/Solaris, change random, This is faster in some implementations.
    if (platform.system() == "SunOS"):
        JAVA_RAND = "-Djava.security.egd=file:///dev/urandom"
    else:
        JAVA_RAND = "-Djava.security.egd=file:/dev/./urandom"

    packCmd = "\""
    packCmd += "export CONFIG_JVM_ARGS='" + JAVA_RAND + "'; "
    packCmd += INSTALL_DIR + "/wlserver/common/bin/pack.sh -managed=true -domain=" + WL_DOMAIN_HOME + " -template=" + DOMAIN_TEMPLATE_PATH + " -template_name=" + WL_DOMAIN_NAME + "\""

    commerce_setup_helper.exec_as_user(INSTALL_OWNER, packCmd)

    # put a copy of the packed domain in our special users homeDir
    templateUser = "******"
    homeDir = os.path.expanduser("~" + templateUser)
    if os.path.isdir(homeDir):
        shutil.copyfile(DOMAIN_TEMPLATE_PATH,
                        homeDir + "/" + DOMAIN_TEMPLATE_NAME)
        os.chmod(homeDir + "/" + DOMAIN_TEMPLATE_NAME, 0644)
    else:
        logging.error("user " + templateUser +
                      " home dir not available. Will not copy packed domain")
Ejemplo n.º 12
0
def install_atgpatch(configData, full_path):

    if json_key in configData:
        jsonData = configData[json_key]
    else:
        print json_key + " config data missing from json. will not install"
        return False

    binary_path = full_path + "/binaries/atg11.1"
    response_files_path = full_path + "/responseFiles/atg11.1"

    print "installing " + service_name
    requiredFields = ['dynamoRoot', 'installOwner']
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)

    INSTALL_DIR = jsonData['dynamoRoot']
    INSTALL_OWNER = jsonData['installOwner']
    PATCH_ARCHIVE = jsonData['atg_patch_archive']
    PATCH_NAME = jsonData['atg_patch_destination']

    path_to_patch = binary_path + "/patches/" + PATCH_ARCHIVE
    patch_destination = INSTALL_DIR + "/patch/" + PATCH_NAME

    if not os.path.exists(path_to_patch):
        print "patch file " + path_to_patch + " does not exist - will not install"
        return False

    unzipCommand = "\"" + "unzip " + path_to_patch + " -d " + INSTALL_DIR + "/patch" + "\""
    chmodCmd = "\"" + "chmod 755 " + patch_destination + "/bin/install.sh" + "\""
    installCmd = "\"" + "cd " + patch_destination + "/bin; ./install.sh < " + response_files_path + "/patches/YES.txt" + "\""

    commerce_setup_helper.exec_as_user(INSTALL_OWNER, unzipCommand)
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, chmodCmd)
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCmd)
def retrieve_domain_template(DOMAIN_TEMPLATE_NAME, DOMAIN_TEMPLATE_PATH,
                             WL_ADMIN_HOST):
    print "Try to get domain template"

    templateUser = "******"

    copyCmd = "\"" + "scp -oStrictHostKeyChecking=no " + WL_ADMIN_HOST + ":" + DOMAIN_TEMPLATE_NAME + " ." + "\""

    # try this X number of times
    loops = 15
    sleepTime = 60

    for _count in xrange(loops):
        returnCode = commerce_setup_helper.exec_as_user(templateUser, copyCmd)
        print "scp returned " + str(returnCode)
        if returnCode == 0:
            break
        time.sleep(sleepTime)

    homeDir = os.path.expanduser("~" + templateUser)
    shutil.copyfile(homeDir + "/" + DOMAIN_TEMPLATE_NAME, DOMAIN_TEMPLATE_PATH)
    os.chmod(homeDir + "/" + DOMAIN_TEMPLATE_NAME, 0644)
Ejemplo n.º 14
0
def create_schema(configData, full_path): 
    
    if json_key in configData:
        jsonArray = configData[json_key]
    else:
        print json_key + " config data missing from json. will not install"
        return
        
    for otdData in jsonArray:
        requiredFields = ['configName', 'installDir', 'adminUser', 'adminPassword', 'installOwner', 'virtualServerName', 'virtualServerPort', 'originServers', 'originPoolName', 'originServerType', 'loadDistribution', 'instanceHostname']
        commerce_setup_helper.check_required_fields(otdData, requiredFields)
        CONFIG_NAME = otdData['configName']
        INSTALL_DIR = otdData['installDir']
        INSTALL_OWNER = otdData['installOwner']
        ADMIN_USER = otdData['adminUser']
        ADMIN_PASSWORD = otdData['adminPassword']
        VSERVER_NAME = otdData['virtualServerName']
        VSERVER_PORT = otdData['virtualServerPort']
        OSERVERS = otdData['originServers']
        OPOOL_NAME = otdData['originPoolName']
        OSERVER_TYPE = otdData['originServerType']
        LOAD_ALG = otdData['loadDistribution']
        INSTANCE_HOST = otdData['instanceHostname']
        
        TADM_COMMAND = INSTALL_DIR + "/bin/tadm"
        otdPassword_replacements = {'TADM_ADMINPASSWORD':ADMIN_PASSWORD}
    
        # setup password file
        commerce_setup_helper.substitute_file_fields(full_path + '/OTD/responseFiles/otdPassword.pwd.master', full_path + '/OTD/responseFiles/otdPassword.pwd', otdPassword_replacements)
        
        # create new config
        configCommand = "\"" + TADM_COMMAND + " create-config --user="******" --password-file=" + full_path + "/OTD/responseFiles/otdPassword.pwd --listener-port=" + \
            VSERVER_PORT + " --server-name=" + VSERVER_NAME + " --origin-server=" + OSERVERS + " --origin-server-pool-name=" + OPOOL_NAME + " --origin-server-type=" + OSERVER_TYPE + " " + CONFIG_NAME + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, configCommand)
        
        # set load balancer algorithm
        loadDistCommand = "\"" + TADM_COMMAND + " set-origin-server-pool-prop --user="******" --password-file=" + full_path + "/OTD/responseFiles/otdPassword.pwd --config=" + \
            CONFIG_NAME + " --origin-server-pool=" + OPOOL_NAME + " load-distribution=" + LOAD_ALG + "\""
    
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, loadDistCommand)    
        
        # create new instance
        instanceCommand = "\"" + TADM_COMMAND + " create-instance --user="******" --password-file=" + full_path + "/OTD/responseFiles/otdPassword.pwd --config=" + CONFIG_NAME + " " + INSTANCE_HOST + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, instanceCommand)           
Ejemplo n.º 15
0
def install_oracle(configData, full_path):

    if json_key in configData:
        jsonData = configData[json_key]
    else:
        print json_key + " config data missing from json. will not install"
        return

    print "installing " + service_name

    if (platform.system() == "SunOS"):
        binary_path = full_path + "/binaries/oracleDB12c/solaris"
    else:
        binary_path = full_path + "/binaries/oracleDB12c"

    response_files_path = full_path + "/responseFiles/oracle12c"

    install_exec = "/database/runInstaller"
    full_exec_path = binary_path + install_exec

    if not os.path.exists(full_exec_path):
        print "Binary " + full_exec_path + " does not exist - will not install"
        return False

    requiredFields = [
        'oracleBase', 'installOwner', 'installGroup', 'installHost',
        'oraInventoryDir', 'oracleHome', 'oracleSID', 'pdbName', 'adminPW',
        'dbStorageLoc'
    ]
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)

    ORACLE_BASE = jsonData['oracleBase']
    INSTALL_OWNER = jsonData['installOwner']
    INSTALL_GROUP = jsonData['installGroup']
    INSTALL_HOST = jsonData['installHost']
    ORACLE_INVENTORY_DIR = jsonData['oraInventoryDir']
    ORACLE_HOME = jsonData['oracleHome']
    ORACLE_SID = jsonData['oracleSID']
    PDB_NAME = jsonData['pdbName']
    ORACLE_PW = jsonData['adminPW']
    DB_FILE_DIR = jsonData['dbStorageLoc']
    ORACLE_BOOT = jsonData['db_onBoot']

    oracle_replacements = {
        'BASE_DIR': ORACLE_BASE,
        'IGROUP': INSTALL_GROUP,
        'INSTALL_HOST': INSTALL_HOST,
        'INVENTORY_DIR': ORACLE_INVENTORY_DIR,
        'PRODUCT_HOME': ORACLE_HOME,
        'GLOBAL_DBNAME': ORACLE_SID,
        'PDB_NAME': PDB_NAME,
        'ORA_PW': ORACLE_PW,
        'DB_FILE_DIR': DB_FILE_DIR,
    }

    commerce_setup_helper.substitute_file_fields(
        response_files_path + '/db.rsp.master',
        response_files_path + '/db.rsp', oracle_replacements)
    commerce_setup_helper.substitute_file_fields(
        response_files_path + '/dbca.rsp.master',
        response_files_path + '/dbca.rsp', oracle_replacements)

    # make the install trees with correct owner if needed
    commerce_setup_helper.mkdir_with_perms(ORACLE_BASE, INSTALL_OWNER,
                                           INSTALL_GROUP)
    commerce_setup_helper.mkdir_with_perms(ORACLE_INVENTORY_DIR, INSTALL_OWNER,
                                           INSTALL_GROUP)
    commerce_setup_helper.mkdir_with_perms(ORACLE_HOME, INSTALL_OWNER,
                                           INSTALL_GROUP)
    commerce_setup_helper.mkdir_with_perms(DB_FILE_DIR, INSTALL_OWNER,
                                           INSTALL_GROUP)

    # install db
    installCommand = "\"" + full_exec_path + " -silent -waitforcompletion -responseFile " + response_files_path + "/db.rsp" + "\""
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)

    invCmd = ORACLE_INVENTORY_DIR + "/orainstRoot.sh"
    commerce_setup_helper.exec_cmd(invCmd)

    rootCmd = ORACLE_HOME + "/root.sh"
    commerce_setup_helper.exec_cmd(rootCmd)

    postInstallCmd = "\"" + ORACLE_HOME + "/cfgtoollogs/configToolAllCommands RESPONSE_FILE=" + response_files_path + "/db.rsp" + "\""
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, postInstallCmd)

    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                        "##################### \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, "#Oracle Settings \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                        "##################### \n")
    commerce_setup_helper.add_to_bashrc(
        INSTALL_OWNER, "export ORACLE_HOME=" + ORACLE_HOME + "\n")
    commerce_setup_helper.add_to_bashrc(
        INSTALL_OWNER, "export ORACLE_SID=" + ORACLE_SID + "\n")
    commerce_setup_helper.add_to_bashrc(
        INSTALL_OWNER, "export PATH=$PATH:" + ORACLE_HOME + "/bin \n")

    # copy start/stop script
    script_replacements = {
        'ORACLE_HOME': ORACLE_HOME,
        'ORACLE_PROCESS_OWNER': INSTALL_OWNER
    }
    commerce_setup_helper.copy_start_script(
        ORACLE_BOOT,
        full_path + '/startStopScripts/bootScripts/oracleDatabase.master',
        script_replacements)
    # commerce_setup_helper.copy_start_script(ORACLE_BOOT, full_path + '/startStopScripts/bootScripts/oracleDBconsole.master', script_replacements)

    commerce_setup_helper.add_to_bashrc(
        INSTALL_OWNER, "# echo " + service_name +
        " start/stop script: /etc/init.d/oracleDatabase \n")
    # not used for 12c install - using em express instead
    # commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, "# echo database console start/stop script: /etc/init.d/oracleDBconsole \n\n")

    install_listener(INSTALL_OWNER, ORACLE_HOME, response_files_path)

    install_sampledb(INSTALL_OWNER, ORACLE_HOME, response_files_path)

    if (platform.system() == "SunOS"):
        oratab_file = "/var/opt/oracle/oratab"
    else:
        oratab_file = "/etc/oratab"

    # set our DB to autostart in the future
    line_to_replace = ORACLE_SID + ":" + ORACLE_HOME + ":" "N"
    replace_with = ORACLE_SID + ":" + ORACLE_HOME + ":" "Y"

    for line in fileinput.input(oratab_file, inplace=True):
        print line.rstrip().replace(line_to_replace, replace_with)
Ejemplo n.º 16
0
def install_sampledb(INSTALL_OWNER, ORACLE_HOME, response_files_path):
    postInstallCmd = "\"" + ORACLE_HOME + "/bin/dbca -silent -responseFile " + response_files_path + "/dbca.rsp" + "\""
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, postInstallCmd)
Ejemplo n.º 17
0
def create_wl_domain(configData, full_path): 
    
    if json_key in configData:
        jsonData = configData[json_key]
    else:
        logging.error(json_key + " config data missing from json. will not install")
        return

    if common_key in configData:
        commonData = configData[common_key]
    else:
        logging.error(common_key + " config data missing from json. will not install")
        return   

    response_files_path = full_path + "/responseFiles/wls-12.2.1"
                    
    logging.info("Creating " + service_name)               
     
    commonRequiredFields = ['middlewareHome', 'installOwner', 'wl_domain', 'wl_adminHttpPort', 'wl_adminHttpsPort', 'wl_adminPassword']
    commerce_setup_helper.check_required_fields(commonData, commonRequiredFields)
    
    requiredFields = ['wl_startAdmin_onBoot', 'wl_startNodemgr_onBoot']
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)    

    INSTALL_DIR = commonData['middlewareHome']
    INSTALL_OWNER = commonData['installOwner']
    WL_DOMAIN_NAME = commonData['wl_domain']
    WL_ADMIN_HTTP_PORT = commonData['wl_adminHttpPort']
    WL_ADMIN_HTTPS_PORT = commonData['wl_adminHttpsPort']
    WL_ADMIN_PW = commonData['wl_adminPassword']
    WL_ADMIN_BOOT = jsonData['wl_startAdmin_onBoot']
    WL_NODE_BOOT = jsonData['wl_startNodemgr_onBoot']

    WL_MACHINES = add_machines(configData, full_path)
    WL_MANAGED_SERVERS = add_managed_servers(configData, full_path)

    wlst_path = INSTALL_DIR + "/oracle_common/common/bin/wlst.sh"
    
    if not os.path.exists(wlst_path):
        logging.error("Binary " + wlst_path + " does not exist - will not install")
        return False   
        
    wl_replacements = {'INSTALL_DIR':INSTALL_DIR, 'WL_DOMAIN_NAME':WL_DOMAIN_NAME, 'WL_ADMIN_HTTP_PORT':WL_ADMIN_HTTP_PORT, 'WL_ADMIN_HTTPS_PORT':WL_ADMIN_HTTPS_PORT, 'WL_ADMIN_PW':WL_ADMIN_PW, 'WL_MANAGED_SERVERS':WL_MANAGED_SERVERS, 'WL_MACHINES':WL_MACHINES}
    commerce_setup_helper.substitute_file_fields(response_files_path + '/basicWLSDomain.py.master', response_files_path + '/basicWLSDomain.py', wl_replacements)

    domainCmd = "\""
    
    JAVA_RAND = ""
    # if linux/Solaris, change random, This is faster in some implementations.
    if (platform.system() == "SunOS"):
        JAVA_RAND = "-Djava.security.egd=file:///dev/urandom"
    else:
        JAVA_RAND = "-Djava.security.egd=file:/dev/./urandom"
        
    # create wl domain CONFIG_JVM_ARGS
    domainCmd += "export CONFIG_JVM_ARGS='" + JAVA_RAND + "'; "
    domainCmd += wlst_path + " " + response_files_path + "/basicWLSDomain.py " + "\""
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, domainCmd)  
   
    if (platform.system() == 'SunOS'):
        startStopPath = "/startStopScripts/solaris/bootScripts/"
    else:
        startStopPath = "/startStopScripts/bootScripts/"
   
    # copy start/stop script
    WL_DOMAIN_HOME = INSTALL_DIR + '/user_projects/domains/' + WL_DOMAIN_NAME
    wlScript_replacements = {'WL_DOMAIN_HOME':WL_DOMAIN_HOME, "WL_PROCESS_OWNER":INSTALL_OWNER}
    commerce_setup_helper.copy_start_script(WL_ADMIN_BOOT, full_path + startStopPath + 'weblogicAdmin.master', wlScript_replacements)
    commerce_setup_helper.copy_start_script(WL_NODE_BOOT, full_path + startStopPath + 'weblogicNodemgr.master', wlScript_replacements)
    
    # pack the domain for managed servers
    weblogic_packer.pack_domain(configData, full_path)
    
    # fire up the admin server and nodemgr 
    startWLCmd = "/etc/init.d/weblogicAdmin"
    commerce_setup_helper.exec_cmd(startWLCmd + " start")
    startNodeCmd = "/etc/init.d/weblogicNodemgr"
    commerce_setup_helper.exec_cmd(startNodeCmd + " start")
    
    # give admin server time to finish starting
    sleepTime = 60
    time.sleep(sleepTime)
    
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, "# echo 'WebLogic Admin start/stop script: '" + startWLCmd + "\n")    
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, "# echo 'WebLogic NodeManager start/stop script: '" + startNodeCmd + "\n")   
Ejemplo n.º 18
0
def clone_oracle(configData, full_path):

    if json_key in configData:
        jsonData = configData[json_key]
    else:
        logging.error(json_key +
                      " config data missing from json. will not install")
        return
    logging.info("installing " + service_name)

    INSTALL_OWNER = jsonData['installOwner']
    ORACLE_HOME = jsonData['oracleHome']
    ORIG_HOST = jsonData['originalHost']
    NEW_HOST = jsonData['newHost']
    ORACLE_SID = jsonData['oracleSID']
    UPDATE_DB_CONSOLE = jsonData['updateDBConsole']

    db_script = "/etc/init.d/oracleDatabase"
    db_console_script = "/etc/init.d/oracleDBconsole"
    stop_db_cmd = db_script + " stop"
    stop_db_console_cmd = db_console_script + " stop"
    start_db_cmd = db_script + " start"
    start_db_console_cmd = db_console_script + " start"

    tns_path = ORACLE_HOME + "/network/admin/tnsnames.ora"
    lsnr_path = ORACLE_HOME + "/network/admin/listener.ora"

    if not os.path.exists(tns_path):
        logging.error("tnsnames.ora not found at " + tns_path +
                      " - will not proceed")
        return False

    # stop db
    commerce_setup_helper.exec_cmd(stop_db_cmd)

    # stop console
    commerce_setup_helper.exec_cmd(stop_db_console_cmd)

    tns_replacements = {}
    lsnr_replacements = {}

    if (ORIG_HOST and NEW_HOST):
        tns_replacements[ORIG_HOST] = NEW_HOST
        lsnr_replacements[ORIG_HOST] = NEW_HOST

    # update tnsnames
    if tns_replacements:
        if not os.path.exists(tns_path):
            logging.warn("tnsnames.ora not found at " + tns_path +
                         " - cannot modify")
        else:
            # backup tnsnames
            timestr = time.strftime("%Y%m%d-%H%M%S")
            installCommand = "\"" + "cp " + tns_path + " " + tns_path + "." + timestr + "\""
            commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)
            commerce_setup_helper.substitute_file_fields(
                tns_path, tns_path, tns_replacements)

    # update listener
    if lsnr_replacements:
        if not os.path.exists(lsnr_path):
            logging.warn("listener.ora not found at " + lsnr_path +
                         " - cannot modify")
        else:
            # backup listener
            timestr = time.strftime("%Y%m%d-%H%M%S")
            installCommand = "\"" + "cp " + lsnr_path + " " + lsnr_path + "." + timestr + "\""
            commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)
            commerce_setup_helper.substitute_file_fields(
                lsnr_path, lsnr_path, tns_replacements)

    # update db name
    orig_db_name = ORACLE_HOME + "/" + ORIG_HOST + "_" + ORACLE_SID
    new_db_name = ORACLE_HOME + "/" + NEW_HOST + "_" + ORACLE_SID
    if not os.path.exists(orig_db_name):
        logging.error("db path not found at " + orig_db_name +
                      " - cannot modify")
    else:
        mv_cmd = "\"" + "mv " + orig_db_name + " " + new_db_name + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, mv_cmd)

    # update db console
    if (UPDATE_DB_CONSOLE == "true"):
        PORT = jsonData['lsnrPort']
        ORACLE_PW = jsonData['adminPW']
        orig_db_console = ORACLE_HOME + "/oc4j/j2ee/OC4J_DBConsole_" + ORIG_HOST + "_" + ORACLE_SID
        new_db_console = ORACLE_HOME + "/oc4j/j2ee/OC4J_DBConsole_" + NEW_HOST + "_" + ORACLE_SID
        if not os.path.exists(orig_db_console):
            logging.warn("db console not found at " + orig_db_console +
                         " - cannot modify")
        else:
            mv_cmd = "\"" + "mv " + orig_db_console + " " + new_db_console + "\""
            commerce_setup_helper.exec_as_user(INSTALL_OWNER, mv_cmd)

            # db must be running for emca to exec. make sure
            # start db
            commerce_setup_helper.exec_cmd(start_db_cmd)

            emca_params = "-SID " + ORACLE_SID + " -PORT " + PORT + " -SYS_PWD " + ORACLE_PW + " -SYSMAN_PWD " + ORACLE_PW + " -DBSNMP_PWD " + ORACLE_PW
            drop_repo_cmd = "\"" + ORACLE_HOME + "/bin/emca -deconfig dbcontrol db -repos drop -silent " + emca_params + "\""
            create_repo_cmd = "\"" + ORACLE_HOME + "/bin/emca -config dbcontrol db -repos create -silent " + emca_params + "\""
            commerce_setup_helper.exec_as_user(INSTALL_OWNER, drop_repo_cmd)
            commerce_setup_helper.exec_as_user(INSTALL_OWNER, create_repo_cmd)

    # stop db
    commerce_setup_helper.exec_cmd(stop_db_cmd)

    # stop console
    commerce_setup_helper.exec_cmd(stop_db_console_cmd)

    # start db
    commerce_setup_helper.exec_cmd(start_db_cmd)

    if (UPDATE_DB_CONSOLE == "true"):
        # start dbconsole
        commerce_setup_helper.exec_cmd(start_db_console_cmd)
Ejemplo n.º 19
0
def generate_atg_server_layers(configData, full_path):
    """
    Create ATG server layers based on the instance type
    """
    # we need the server defs, and the path to the ATG install
    wl_managed_key = "WEBLOGIC_managed_servers"
    atg_key = "ATG_install"

    if wl_managed_key in configData:
        managedServerArray = configData[wl_managed_key]
    else:
        logger.error(wl_managed_key +
                     " missing from json. will not create atg server layers")
        return ''

    if atg_key in configData:
        atgData = configData[atg_key]
    else:
        logger.error(atg_key +
                     " missing from json. will not create atg server layers")
        return ''

    ATG_INSTALL_ROOT = atgData['dynamoRoot']
    ATG_CLUSTER_NAME = atgData['atg_clustername']
    ATG_INSTALL_OWNER = atgData['installOwner']
    ATG_SERVERS_HOME = ATG_INSTALL_ROOT + "/home/servers"

    logger.info("Creating ATG Server layers")
    serverData = ''

    PROD_LOCK_PORTS_ARRAY = []
    PROD_LOCK_SERVERS_ARRAY = []

    # calculate lock server data first. We need this for all other instances
    for jsonData in managedServerArray:
        requiredFields = ['atgServerType']
        commerce_setup_helper.check_required_fields(jsonData, requiredFields)
        ATG_SERVER_TYPE = jsonData['atgServerType']
        if (ATG_SERVER_TYPE == "lock"):
            PROD_LOCK_PORTS_ARRAY.append(jsonData['atgLockManPort'])
            PROD_LOCK_SERVERS_ARRAY.append(jsonData['managedServerHost'])

    for jsonData in managedServerArray:
        requiredFields = [
            'managedServerName', 'managedServerHttpPort',
            'managedServerHttpsPort', 'managedServerHost', 'atgServerType',
            'atgRmiPort', 'atgFdPort', 'atgDrpPort'
        ]
        commerce_setup_helper.check_required_fields(jsonData, requiredFields)

        WL_SERVER_NAME = jsonData['managedServerName']
        WL_SERVER_HTTP_PORT = jsonData['managedServerHttpPort']
        WL_SERVER_HTTPS_PORT = jsonData['managedServerHttpsPort']
        WL_SERVER_HOST = jsonData['managedServerHost']
        ATG_SERVER_TYPE = jsonData['atgServerType']
        ATG_RMI_PORT = jsonData['atgRmiPort']
        ATG_FD_PORT = jsonData['atgFdPort']
        ATG_DRP_PORT = jsonData['atgDrpPort']
        BCC_FILE_PORT = ""
        BCC_LOCK_PORT = ""
        ATG_LOCK_PORT = ""
        if 'bccFileSyncPort' in jsonData:
            BCC_FILE_PORT = jsonData['bccFileSyncPort']
        if 'bccLockPort' in jsonData:
            BCC_LOCK_PORT = jsonData['bccLockPort']
        if 'atgLockManPort' in jsonData:
            ATG_LOCK_PORT = jsonData['atgLockManPort']

        PROD_LOCK_PORTS = ','.join(PROD_LOCK_PORTS_ARRAY)
        PROD_LOCK_SERVERS = ','.join(PROD_LOCK_SERVERS_ARRAY)

        server_layer_path = full_path + "/atg-server-layers/"

        cpCmd = "\"" + "cp -R " + server_layer_path + ATG_SERVER_TYPE + " " + ATG_SERVERS_HOME + "/" + WL_SERVER_NAME + "\""
        commerce_setup_helper.exec_as_user(ATG_INSTALL_OWNER, cpCmd)

        #distutils.dir_util.copy_tree(server_layer_path + ATG_SERVER_TYPE , ATG_SERVERS_HOME + "/" + WL_SERVER_NAME)
        string_replacements = {'ATG_DRP_PORT':ATG_DRP_PORT, 'ATG_RMI_PORT':ATG_RMI_PORT, 'ATG_FD_PORT':ATG_FD_PORT, 'ATG_HTTP_PORT':WL_SERVER_HTTP_PORT, \
                               'ATG_HTTPS_PORT':WL_SERVER_HTTPS_PORT, 'BCC_FILE_SYNC_PORT':BCC_FILE_PORT, 'BCC_LOCK_PORT':BCC_LOCK_PORT, \
                               'ATG_CLUSTER_NAME':ATG_CLUSTER_NAME, 'PROD_LOCK_PORTS':PROD_LOCK_PORTS, 'PROD_LOCK_SERVERS':PROD_LOCK_SERVERS}

        for dname, dirs, files in os.walk(ATG_SERVERS_HOME + "/" +
                                          WL_SERVER_NAME):
            for fname in files:
                fpath = os.path.join(dname, fname)
                commerce_setup_helper.substitute_file_fields_inplace(
                    fpath, string_replacements)

    return serverData
Ejemplo n.º 20
0
def install_weblogic(configData, full_path):

    if json_key in configData:
        jsonData = configData[json_key]
    else:
        print json_key + " config data missing from json. will not install"
        return

    print "installing " + service_name

    binary_path = full_path + "/binaries/wls-12.1.3"
    response_files_path = full_path + "/responseFiles/wls-12.1.3"
    install_exec = "fmw_12.1.3.0.0_wls.jar"
    full_exec_path = binary_path + "/" + install_exec

    if not os.path.exists(full_exec_path):
        print "Binary " + full_exec_path + " does not exist - will not install"
        return False

    requiredFields = [
        'middlewareHome', 'installOwner', 'installGroup', 'oraInventoryDir'
    ]
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)

    INSTALL_DIR = jsonData['middlewareHome']
    INSTALL_OWNER = jsonData['installOwner']
    INSTALL_GROUP = jsonData['installGroup']
    ORACLE_INVENTORY_DIR = jsonData['oraInventoryDir']
    ORA_INST = "/etc/oraInst.loc"

    oraInst_replacements = {
        'ORACLE_INVENTORY_DIR': ORACLE_INVENTORY_DIR,
        'ORACLE_INVENTORY_GROUP': INSTALL_GROUP
    }

    # if oraInst.loc doesn't already exist, we need to make one
    if not os.path.isfile(ORA_INST):
        commerce_setup_helper.substitute_file_fields(
            response_files_path + '/oraInst.loc.master',
            response_files_path + '/oraInst.loc', oraInst_replacements)
        shutil.copyfile(response_files_path + "/oraInst.loc", ORA_INST)
        commerce_setup_helper.change_file_owner(ORA_INST, INSTALL_OWNER,
                                                INSTALL_GROUP)
        os.chmod(ORA_INST, 0664)

    wl_replacements = {'INSTALL_DIR': INSTALL_DIR}
    commerce_setup_helper.substitute_file_fields(
        response_files_path + '/install.rsp.master',
        response_files_path + '/install.rsp', wl_replacements)

    # make the install tree with correct owner if needed
    commerce_setup_helper.mkdir_with_perms(INSTALL_DIR, INSTALL_OWNER,
                                           INSTALL_GROUP)

    # install wl
    if (platform.system() == 'SunOS'):
        installCommand = "\"" + "java -d64 -jar "
    else:
        installCommand = "\"" + "java -jar "
    installCommand = installCommand + full_exec_path + " -silent -invPtrLoc " + ORA_INST + " -responseFile " + response_files_path + "/install.rsp -logfile wlinstall.log" + "\""
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)

    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                        "##################### \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, "#WebLogic Settings \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                        "##################### \n")
    commerce_setup_helper.add_to_bashrc(
        INSTALL_OWNER, "export MW_HOME=" + INSTALL_DIR + "\n\n")

    # install patches if any were listed
    patch_weblogic(configData, full_path)
Ejemplo n.º 21
0
def install_atg(configData, full_path):

    if json_key in configData:
        jsonData = configData[json_key]
    else:
        print json_key + " config data missing from json. will not install"
        return False

    print "installing " + service_name

    binary_path = full_path + "/binaries/atg11.1"
    response_files_path = full_path + "/responseFiles/atg11.1"
    install_exec = "/linux/OCPlatform11.1.bin"
    full_exec_path = binary_path + install_exec

    if not os.path.exists(full_exec_path):
        print "Binary " + full_exec_path + " does not exist - will not install"
        return False

    requiredFields = [
        'dynamoRoot', 'installOwner', 'installGroup', 'rmiPort', 'javaHome',
        'wl_home', 'wl_domain', 'wl_adminPort', 'install_crs'
    ]
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)

    INSTALL_DIR = jsonData['dynamoRoot']
    INSTALL_OWNER = jsonData['installOwner']
    INSTALL_GROUP = jsonData['installGroup']
    RMI_PORT = jsonData['rmiPort']
    JAVA_DIR = jsonData['javaHome']
    WL_HOME = jsonData['wl_home']
    WL_DOMAIN = jsonData['wl_domain']
    WL_ADMIN_PORT = jsonData['wl_adminPort']
    INSTALL_CRS = jsonData['install_crs']
    INSTALL_SERVICE = jsonData['install_service']

    field_replacements = {
        'INSTALL_HOME': INSTALL_DIR,
        'WEBLOGIC_HOME': WL_HOME,
        'WEBLOGIC_DOMAIN': WL_DOMAIN,
        'WEBLOGIC_ADMIN_PORT': WL_ADMIN_PORT,
        'ATGRMI_PORT': RMI_PORT,
        'JDK_PATH': JAVA_DIR
    }
    commerce_setup_helper.substitute_file_fields(
        response_files_path + '/linux/installer.properties.master',
        response_files_path + '/linux/installer.properties',
        field_replacements)

    # make the install tree with correct owner if needed
    commerce_setup_helper.mkdir_with_perms(INSTALL_DIR, INSTALL_OWNER,
                                           INSTALL_GROUP)

    installCommand = "\"" + full_exec_path + " -i silent -f " + response_files_path + "/linux/installer.properties" + "\""
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)

    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                        "##################### \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, "#ATG Settings \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                        "##################### \n")
    commerce_setup_helper.add_to_bashrc(
        INSTALL_OWNER, "export DYNAMO_ROOT=" + INSTALL_DIR + "\n")
    commerce_setup_helper.add_to_bashrc(
        INSTALL_OWNER, "export DYNAMO_HOME=$DYNAMO_ROOT/home \n\n")

    if (INSTALL_CRS == "true"):

        print "installing CRS"

        crs_exec_path = binary_path + "/crs/OCReferenceStore11.1.bin"
        if not os.path.exists(crs_exec_path):
            print "Binary " + crs_exec_path + " does not exist - will not install"
            return

        field_replacements = {'INSTALL_HOME': INSTALL_DIR}
        commerce_setup_helper.substitute_file_fields(
            response_files_path + '/crs/crsinstaller.properties.master',
            response_files_path + '/crs/crsinstaller.properties',
            field_replacements)
        installCommand = "\"" + crs_exec_path + " -i silent -f " + response_files_path + "/crs/crsinstaller.properties" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)

        # If patch1 is installed, these are not updated. fix it.
        cpCmd = "\"" + "cp " + INSTALL_DIR + "/DAS/taglib/dspjspTaglib/1.0/lib/dspjspTaglib1_0.jar " + INSTALL_DIR + "/CommerceReferenceStore/Store/Storefront/j2ee-apps/Storefront/store.war/WEB-INF/lib" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, cpCmd)
        cpCmd = "\"" + "cp " + INSTALL_DIR + "/DAS/taglib/dspjspTaglib/1.0/lib/dspjspTaglib1_0.jar " + INSTALL_DIR + "/CommerceReferenceStore/Store/Storefront/j2ee-apps/Storefront/storedocroot.war/WEB-INF/lib" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, cpCmd)
        cpCmd = "\"" + "cp " + INSTALL_DIR + "/DAS/taglib/dspjspTaglib/1.0/lib/dspjspTaglib1_0.jar " + INSTALL_DIR + "/CommerceReferenceStore/Store/Fluoroscope/j2ee-apps/Fluoroscope/fluoroscope.war/WEB-INF/lib" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, cpCmd)
        cpCmd = "\"" + "cp " + INSTALL_DIR + "/DAS/taglib/dspjspTaglib/1.0/lib/dspjspTaglib1_0.jar " + INSTALL_DIR + "/CommerceReferenceStore/Store/DCS-CSR/j2ee-apps/DCS-CSR/CSRHelper.war/WEB-INF/lib" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, cpCmd)
        cpCmd = "\"" + "cp " + INSTALL_DIR + "/DAS/taglib/dspjspTaglib/1.0/lib/dspjspTaglib1_0.jar " + INSTALL_DIR + "/CommerceReferenceStore/Store/EStore/Versioned/j2ee-apps/Versioned/store-merchandising.war/WEB-INF/lib" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, cpCmd)

    if (INSTALL_SERVICE == "true"):

        print "installing Service"

        service_exec_path = binary_path + "/service/OCServiceCenter11.1.bin"
        if not os.path.exists(service_exec_path):
            print "Binary " + service_exec_path + " does not exist - will not install"
            return

        field_replacements = {'INSTALL_HOME': INSTALL_DIR}
        commerce_setup_helper.substitute_file_fields(
            response_files_path +
            '/service/serviceinstaller.properties.master',
            response_files_path + '/service/serviceinstaller.properties',
            field_replacements)
        installCommand = "\"" + service_exec_path + " -i silent -f " + response_files_path + "/service/serviceinstaller.properties" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)
def unpack_domain(configData, full_path):
    """
    Get domain template and unpack it for a new managed server setup
    """
    if json_key in configData:
        jsonData = configData[json_key]
    else:
        print json_key + " config data missing from json. will not install"
        return

    if common_key in configData:
        commonData = configData[common_key]
    else:
        print common_key + " config data missing from json. will not install"
        return

    print "Unpacking... " + service_name

    commonRequiredFields = [
        'middlewareHome', 'installOwner', 'installGroup', 'wl_domain',
        'wl_adminHost'
    ]
    commerce_setup_helper.check_required_fields(commonData,
                                                commonRequiredFields)

    requiredFields = ['wl_startNodemgr_onBoot']
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)

    INSTALL_DIR = commonData['middlewareHome']
    INSTALL_OWNER = commonData['installOwner']
    INSTALL_GROUP = commonData['installGroup']
    WL_DOMAIN_NAME = commonData['wl_domain']
    WL_ADMIN_HOST = commonData['wl_adminHost']
    WL_NODE_BOOT = jsonData['wl_startNodemgr_onBoot']

    WL_DOMAIN_HOME = INSTALL_DIR + '/user_projects/domains/' + WL_DOMAIN_NAME
    DOMAIN_TEMPLATE_NAME = WL_DOMAIN_NAME + '-template.jar'
    DOMAIN_TEMPLATE_PATH = INSTALL_DIR + '/user_projects/domains/' + DOMAIN_TEMPLATE_NAME

    if not os.path.isfile(DOMAIN_TEMPLATE_PATH):
        print "domain template not found. Try to get it"
        # make the install tree with correct owner if needed
        commerce_setup_helper.mkdir_with_perms(WL_DOMAIN_HOME, INSTALL_OWNER,
                                               INSTALL_GROUP)
        retrieve_domain_template(DOMAIN_TEMPLATE_NAME, DOMAIN_TEMPLATE_PATH,
                                 WL_ADMIN_HOST)

    unpackCmd = "\"" + INSTALL_DIR + "/wlserver/common/bin/unpack.sh -domain=" + WL_DOMAIN_HOME + " -template=" + WL_DOMAIN_HOME + "-template.jar\""
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, unpackCmd)

    # copy start/stop script
    WL_DOMAIN_HOME = INSTALL_DIR + '/user_projects/domains/' + WL_DOMAIN_NAME

    if (platform.system() == 'SunOS'):
        startStopPath = "/startStopScripts/solaris/bootScripts/"
    else:
        startStopPath = "/startStopScripts/bootScripts/"
    # copy start/stop script
    WL_DOMAIN_HOME = INSTALL_DIR + '/user_projects/domains/' + WL_DOMAIN_NAME
    wlScript_replacements = {
        'WL_DOMAIN_HOME': WL_DOMAIN_HOME,
        "WL_PROCESS_OWNER": INSTALL_OWNER
    }
    commerce_setup_helper.copy_start_script(
        WL_NODE_BOOT, full_path + startStopPath + 'weblogicNodemgr.master',
        wlScript_replacements)

    # fire up the nodemgr
    startNodeCmd = "/etc/init.d/weblogicNodemgr"
    commerce_setup_helper.exec_cmd(startNodeCmd + " start")
Ejemplo n.º 23
0
def install_toolsAndFramework(configData, full_path):

    endecaData = configData[json_key]
    requiredFields = ['installOwner', 'installGroup']
    commerce_setup_helper.check_required_fields(endecaData, requiredFields)
    INSTALL_OWNER = endecaData['installOwner']
    INSTALL_GROUP = endecaData['installGroup']
    if 'toolsAndFramework' in endecaData:
        jsonData = endecaData['toolsAndFramework']
        requiredFields = ['endecaRoot']
        commerce_setup_helper.check_required_fields(jsonData, requiredFields)
    else:
        logging.error(service_name +
                      " config data missing from json. will not install")
        return

    logging.info("installing " + service_name)

    if (platform.system() == "SunOS"):
        binary_path = full_path + "/binaries/endeca11.3/solaris"
    else:
        binary_path = full_path + "/binaries/endeca11.3"

    install_exec = "/ToolsAndFrameworkInstall/Disk1/install/silent_install.sh"

    response_files_path = full_path + "/responseFiles/endeca11.3"

    full_exec_path = binary_path + install_exec

    if not os.path.exists(full_exec_path):
        logging.error("Binary " + full_exec_path +
                      " does not exist - will not install")
        return False

    if jsonData is not None:
        ENDECA_ROOT = jsonData['endecaRoot']
        START_ON_BOOT = jsonData['start_onBoot']
        # make the install tree with correct owner if needed
        commerce_setup_helper.mkdir_with_perms(ENDECA_ROOT, INSTALL_OWNER,
                                               INSTALL_GROUP)

        # data field to replace in our silent installer file
        field_replacements = {
            'ENDECA_ROOT': ENDECA_ROOT,
            'ENDECA_GROUP': INSTALL_GROUP
        }

        commerce_setup_helper.substitute_file_fields(
            response_files_path + '/tools_response.rsp.master',
            response_files_path + '/tools_response.rsp', field_replacements)

        installCommand = "\"" + full_exec_path + " " + \
        response_files_path + "/tools_response.rsp ToolsAndFrameworks " + \
        ENDECA_ROOT + "/endeca/ToolsAndFrameworks "

        if 'oraInventoryDir' in jsonData:
            installCommand = installCommand + jsonData['oraInventoryDir']

        commerce_setup_helper.exec_as_user(INSTALL_OWNER,
                                           installCommand + "\"")

        # copy start/stop script
        ENDECA_HOME = ENDECA_ROOT + "/endeca"
        MDEX_SETUP = ENDECA_HOME + "/MDEX/11.3.0/mdex_setup_sh.ini"
        PLATFORM_SETUP = ENDECA_HOME + "/PlatformServices/workspace/setup/installer_sh.ini"
        script_replacements = {
            'ENDECA_PROCESS_OWNER': INSTALL_OWNER,
            'ENDECA_INSTALL_ROOT': ENDECA_HOME,
            "MDEX_SETUP": MDEX_SETUP,
            "PLATFORM_SETUP": PLATFORM_SETUP,
            "INSTALL_VERSION": endeca_version
        }
        commerce_setup_helper.copy_start_script(
            START_ON_BOOT, full_path +
            '/startStopScripts/bootScripts/toolsAndFramework.master',
            script_replacements)

        # fire up the server
        startCmd = "/etc/init.d/toolsAndFramework"
        commerce_setup_helper.exec_cmd(startCmd + " start")

        commerce_setup_helper.add_to_bashrc(
            INSTALL_OWNER, "# echo Endeca " + service_name +
            " start/stop script: " + startCmd + "\n")
Ejemplo n.º 24
0
def install_platformServices(configData, full_path):

    endecaData = configData[json_key]
    requiredFields = ['installOwner', 'installGroup']
    commerce_setup_helper.check_required_fields(endecaData, requiredFields)
    INSTALL_OWNER = endecaData['installOwner']
    INSTALL_GROUP = endecaData['installGroup']
    if 'platformServices' in endecaData:
        jsonData = endecaData['platformServices']
        requiredFields = [
            'endecaRoot', 'eacPort', 'eacShutdownPort', 'mdexRoot'
        ]
        commerce_setup_helper.check_required_fields(jsonData, requiredFields)
    else:
        logging.error(service_name +
                      " config data missing from json. will not install")
        return

    logging.info("installing " + service_name)

    if (platform.system() == "SunOS"):
        binary_path = full_path + "/binaries/endeca11.3/solaris"
        install_exec = "/Platform_Install/OCplatformservices11.3.0-Solaris.bin"
    else:
        binary_path = full_path + "/binaries/endeca11.3"
        install_exec = "/Platform_Install/OCplatformservices11.3.0-Linux64.bin"

    response_files_path = full_path + "/responseFiles/endeca11.3"

    full_exec_path = binary_path + install_exec

    if not os.path.exists(full_exec_path):
        logging.error("Binary " + full_exec_path +
                      " does not exist - will not install")
        return False

    if jsonData is not None:
        ENDECA_ROOT = jsonData['endecaRoot']
        MDEX_ROOT = jsonData['mdexRoot']
        EAC_PORT = jsonData['eacPort']
        EAC_SHUTDOWN_PORT = jsonData['eacShutdownPort']
        START_ON_BOOT = jsonData['start_onBoot']
        # make the install tree with correct owner if needed
        commerce_setup_helper.mkdir_with_perms(ENDECA_ROOT, INSTALL_OWNER,
                                               INSTALL_GROUP)

        # data field to replace in our silent installer file
        field_replacements = {
            'INSTALLATION_DIR': ENDECA_ROOT,
            'MDEX_INST_ROOT': MDEX_ROOT,
            'EAC_PORT': EAC_PORT,
            'EAC_SHUTDOWN_PORT': EAC_SHUTDOWN_PORT
        }

        commerce_setup_helper.substitute_file_fields(
            response_files_path + '/platform_response.rsp.master',
            response_files_path + '/platform_response.rsp', field_replacements)

        installCommand = "\"" + full_exec_path + " -i silent -f " + response_files_path + '/platform_response.rsp' + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)

        # add bashrc entries
        commerce_setup_helper.add_to_bashrc(
            INSTALL_OWNER, "source " + ENDECA_ROOT +
            "/endeca/PlatformServices/workspace/setup/installer_sh.ini \n")

        # copy start/stop script
        ENDECA_HOME = ENDECA_ROOT + "/endeca"
        MDEX_SETUP = MDEX_ROOT + "/mdex_setup_sh.ini"
        PLATFORM_SETUP = ENDECA_HOME + "/PlatformServices/workspace/setup/installer_sh.ini"
        script_replacements = {
            'ENDECA_PROCESS_OWNER': INSTALL_OWNER,
            'ENDECA_INSTALL_ROOT': ENDECA_HOME,
            "MDEX_SETUP": MDEX_SETUP,
            "PLATFORM_SETUP": PLATFORM_SETUP,
            "INSTALL_VERSION": endeca_version
        }
        commerce_setup_helper.copy_start_script(
            START_ON_BOOT, full_path +
            '/startStopScripts/bootScripts/platformServices.master',
            script_replacements)

        # fire up the server
        startCmd = "/etc/init.d/platformServices"
        commerce_setup_helper.exec_cmd(startCmd + " start")

        commerce_setup_helper.add_to_bashrc(
            INSTALL_OWNER, "# echo Endeca " + service_name +
            " start/stop script: " + startCmd + "\n")
Ejemplo n.º 25
0
def install_java(configData, full_path):

    if json_key in configData:
        jsonData = configData[json_key]
    else:
        logging.error(service_name +
                      " config data missing from json. will not install")
        return

    if installer_key in configData:
        installerData = configData[installer_key]
    else:
        logging.error("installer data missing. Cannot continue")
        return

    logging.info("installing " + service_name)

    config = ConfigParser.ConfigParser()
    installer_props = installerData['installer_properties']
    config_file = full_path + '/' + installer_props

    if (not os.path.exists(config_file)):
        logging.error("Cannot load installer config data. Halting")
    logging.info("config file is " + config_file)
    config.read(config_file)
    rel_path = config.get(service_name, 'java_binary')
    java_version = config.get(service_name, 'java_version')
    binary_path = full_path + '/' + rel_path

    requiredFields = ['javaHome', 'installOwner', 'installGroup']
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)
    INSTALL_OWNER = jsonData['installOwner']
    INSTALL_GROUP = jsonData['installGroup']
    JAVA_HOME = jsonData['javaHome']

    commerce_setup_helper.mkdir_with_perms(JAVA_HOME, INSTALL_OWNER,
                                           INSTALL_GROUP)

    # solaris setup is different
    if (platform.system() == "SunOS"):
        installCommand = "\"" + "cd " + JAVA_HOME + "; tar zxf " + binary_path + "\""
    else:
        installCommand = "\"" + "tar zxf " + binary_path + " -C " + JAVA_HOME + "\""

    linkCommand = "\"" + "ln -sf " + JAVA_HOME + "/" + java_version + " " + JAVA_HOME + "/latest" + "\""

    commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)

    if (os.path.exists(JAVA_HOME + "/latest")
            or os.path.islink(JAVA_HOME + "/latest")):
        os.remove(JAVA_HOME + "/latest")
    os.symlink(JAVA_HOME + "/" + java_version, JAVA_HOME + "/latest")

    # commerce_setup_helper.exec_as_user(INSTALL_OWNER, linkCommand)
    if (platform.system() != "SunOS"):
        if (os.path.exists('/usr/bin/java')
                or os.path.islink('/usr/bin/java')):
            os.remove('/usr/bin/java')
        os.symlink(JAVA_HOME + '/latest/bin/java', '/usr/bin/java')

    # add bashrc entries
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                        "##################### \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, "#Java Settings \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                        "##################### \n")
    commerce_setup_helper.add_to_bashrc(
        INSTALL_OWNER, "export JAVA_HOME=" + JAVA_HOME + "/latest \n")
    commerce_setup_helper.add_to_bashrc(
        INSTALL_OWNER, "export PATH=" + JAVA_HOME + "/latest/bin:$PATH \n\n")

    os.environ['JAVA_HOME'] = JAVA_HOME
    os.environ["PATH"] = JAVA_HOME + "/bin" + os.pathsep + os.environ["PATH"]
Ejemplo n.º 26
0
def config_wl_datasources(configData, full_path): 

    """
    Modify settings in a running domain
    Creates datasources
    """   
        
    if json_key in configData:
        dsData = configData[json_key]
    else:
        logging.error(json_key + " config data missing from json. will not install")
        return

    if common_key in configData:
        commonData = configData[common_key]
    else:
        logging.error(common_key + " config data missing from json. will not install")
        return  

    response_files_path = full_path + "/responseFiles/wls-12.2.1"
                    
    logging.info("Updating " + service_name)    
                
    commonRequiredFields = ['middlewareHome', 'installOwner', 'wl_adminUser', 'wl_adminPassword', 'wl_domain', 'wl_adminHttpPort', 'wl_adminHost']
    commerce_setup_helper.check_required_fields(commonData, commonRequiredFields)
    
    INSTALL_DIR = commonData['middlewareHome']
    INSTALL_OWNER = commonData['installOwner']
    WL_ADMIN_USER = commonData['wl_adminUser']
    WL_ADMIN_PW = commonData['wl_adminPassword']
    WL_ADMIN_HOST = commonData['wl_adminHost']
    WL_ADMIN_HTTP_PORT = commonData['wl_adminHttpPort']  

    wlst_path = INSTALL_DIR + "/oracle_common/common/bin/wlst.sh"
    
    if not os.path.exists(wlst_path):
        logging.error("Binary " + wlst_path + " does not exist - will not install")
        return False   
        
    # datasource is an array type. look through them all
    for jsonData in dsData:
        requiredFields = ["dsName", "dsJNDIName", "dsURL", "dsDriver", "dsUsername", "dsPassword", "dsTargetNames", "dsMaxCapacity"]
        commerce_setup_helper.check_required_fields(jsonData, requiredFields)    

        dsName = jsonData['dsName']
        dsJNDIName = jsonData['dsJNDIName']
        dsURL = jsonData['dsURL']
        dsDriver = jsonData['dsDriver']
        dsUsername = jsonData['dsUsername']
        dsPassword = jsonData['dsPassword']
        dsTargetNames = jsonData['dsTargetNames']
        dsMaxCapacity = jsonData['dsMaxCapacity'] 
        
        # add login params
        cmd_flags = "--wlusername="******" --wlpassword="******" --adminUrl=t3://" + WL_ADMIN_HOST + ":" + WL_ADMIN_HTTP_PORT
        # add ds creation flags
        cmd_flags += " --dsName=" + dsName + " --dsJNDIName=" + dsJNDIName + " --dsURL=" + dsURL + " --dsDriver=" + dsDriver + " --dsUsername="******" --dsPassword="******" --dsTargetNames=" + dsTargetNames + " --dsMaxCapacity=" + dsMaxCapacity
           
        dsCmd = "\"" + wlst_path + " " + response_files_path + "/create_datasources.py " + cmd_flags + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, dsCmd)  
def install_weblogic(configData, full_path): 
    
    if json_key in configData:
        jsonData = configData[json_key]
    else:
        logging.error(json_key + " config data missing from json. will not install")
        return False

    logging.info("installing " + service_name)
    
    binary_path = full_path + "/binaries/wls-12.1.2"
    response_files_path = full_path + "/responseFiles/wls-12.1.2"
    install_exec = "wls_121200.jar"
    full_exec_path = binary_path + "/" + install_exec
    
    if not os.path.exists(full_exec_path):
        logging.error("Binary " + full_exec_path + " does not exist - will not install")
        return False
                    
                    
    requiredFields = ['middlewareHome', 'installOwner', 'installGroup', 'oraInventoryDir']
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)

    INSTALL_DIR = jsonData['middlewareHome']
    INSTALL_OWNER = jsonData['installOwner']
    INSTALL_GROUP = jsonData['installGroup']
    ORACLE_INVENTORY_DIR = jsonData['oraInventoryDir']
    ORA_INST = "/etc/oraInst.loc"
    
    oraInst_replacements = {'ORACLE_INVENTORY_DIR':ORACLE_INVENTORY_DIR, 'ORACLE_INVENTORY_GROUP':INSTALL_GROUP}
    
    # if oraInst.loc doesn't already exist, we need to make one
    if not os.path.isfile(ORA_INST):
        commerce_setup_helper.substitute_file_fields(response_files_path + '/oraInst.loc.master', response_files_path + '/oraInst.loc', oraInst_replacements)
        shutil.copyfile(response_files_path + "/oraInst.loc" , ORA_INST)
        commerce_setup_helper.change_file_owner(ORA_INST, INSTALL_OWNER, INSTALL_GROUP)
        os.chmod(ORA_INST, 0664) 
        
    wl_replacements = {'INSTALL_DIR':INSTALL_DIR}
    commerce_setup_helper.substitute_file_fields(response_files_path + '/install.rsp.master', response_files_path + '/install.rsp', wl_replacements)
    
    # make the install tree with correct owner if needed
    commerce_setup_helper.mkdir_with_perms(INSTALL_DIR, INSTALL_OWNER, INSTALL_GROUP)
        
    # install wl
    if (platform.system() == 'SunOS'):
        installCommand = "\"" + "java -d64 -jar "
    else:
        installCommand = "\"" + "java -jar "
    installCommand = installCommand + full_exec_path + " -silent -invPtrLoc " + ORA_INST + " -responseFile " + response_files_path + "/install.rsp -logfile wlinstall.log" + "\""
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)
    
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, "##################### \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, "#WebLogic Settings \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, "##################### \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, "export MW_HOME=" + INSTALL_DIR + "\n\n")
    
    JAVA_RAND = ""
    # if linux/Solaris, change random, This is faster in some implementations.
    if (platform.system() == "SunOS"):
        JAVA_RAND = "-Djava.security.egd=file:///dev/urandom"
    else:
        JAVA_RAND = "-Djava.security.egd=file:/dev/./urandom"
            
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, 'export CONFIG_JVM_ARGS=\"' + JAVA_RAND + ' \" \n')
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, 'export JAVA_OPTIONS=\"' + JAVA_RAND + ' \" \n')    
    
    # install patches if any were listed
    patch_weblogic(configData, full_path)
Ejemplo n.º 28
0
def install_atg(configData, full_path):

    if json_key in configData:
        jsonData = configData[json_key]
    else:
        logging.error(json_key +
                      " config data missing from json. will not install")
        return False

    logging.info("installing " + service_name)
    binary_path = full_path + "/binaries/atg11.3"
    response_files_path = full_path + "/responseFiles/atg11.3"
    install_exec = "/linux/OCPlatform11.3.bin"
    full_exec_path = binary_path + install_exec

    if not os.path.exists(full_exec_path):
        logging.error("Binary " + full_exec_path +
                      " does not exist - will not install")
        return False

    requiredFields = [
        'dynamoRoot', 'installOwner', 'installGroup', 'rmiPort', 'javaHome',
        'wl_home', 'wl_domain', 'wl_adminPort', 'install_crs', 'install_csa'
    ]
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)

    INSTALL_DIR = jsonData['dynamoRoot']
    INSTALL_OWNER = jsonData['installOwner']
    INSTALL_GROUP = jsonData['installGroup']
    RMI_PORT = jsonData['rmiPort']
    JAVA_DIR = jsonData['javaHome']
    WL_HOME = jsonData['wl_home']
    WL_DOMAIN = jsonData['wl_domain']
    WL_ADMIN_PORT = jsonData['wl_adminPort']
    INSTALL_CRS = jsonData['install_crs']
    INSTALL_CSA = jsonData['install_csa']
    INSTALL_SERVICE = jsonData['install_service']

    field_replacements = {
        'INSTALL_HOME': INSTALL_DIR,
        'WEBLOGIC_HOME': WL_HOME,
        'WEBLOGIC_DOMAIN': WL_DOMAIN,
        'WEBLOGIC_ADMIN_PORT': WL_ADMIN_PORT,
        'ATGRMI_PORT': RMI_PORT,
        'JDK_PATH': JAVA_DIR
    }
    commerce_setup_helper.substitute_file_fields(
        response_files_path + '/linux/installer.properties.master',
        response_files_path + '/linux/installer.properties',
        field_replacements)

    # make the install tree with correct owner if needed
    commerce_setup_helper.mkdir_with_perms(INSTALL_DIR, INSTALL_OWNER,
                                           INSTALL_GROUP)

    installCommand = "\"" + full_exec_path + " -i silent -f " + response_files_path + "/linux/installer.properties" + "\""
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)

    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                        "##################### \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER, "#ATG Settings \n")
    commerce_setup_helper.add_to_bashrc(INSTALL_OWNER,
                                        "##################### \n")
    commerce_setup_helper.add_to_bashrc(
        INSTALL_OWNER, "export DYNAMO_ROOT=" + INSTALL_DIR + "\n")
    commerce_setup_helper.add_to_bashrc(
        INSTALL_OWNER, "export DYNAMO_HOME=$DYNAMO_ROOT/home \n\n")

    if (INSTALL_CRS == "true"):
        logging.info("installing CRS")
        crs_exec_path = binary_path + "/crs/OCReferenceStore11.3.bin"
        if not os.path.exists(crs_exec_path):
            logging.error("Binary " + crs_exec_path +
                          " does not exist - will not install")
            return False
        field_replacements = {'INSTALL_HOME': INSTALL_DIR}
        commerce_setup_helper.substitute_file_fields(
            response_files_path + '/crs/crsinstaller.properties.master',
            response_files_path + '/crs/crsinstaller.properties',
            field_replacements)
        installCommand = "\"" + crs_exec_path + " -i silent -f " + response_files_path + "/crs/crsinstaller.properties" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)

    if (INSTALL_CSA == "true"):
        logging.info("installing CSA")
        csa_exec_path = binary_path + "/csa/OCStoreAccelerator11.3.bin"
        if not os.path.exists(csa_exec_path):
            logging.error("Binary " + csa_exec_path +
                          " does not exist - will not install")
            return False
        field_replacements = {'INSTALL_HOME': INSTALL_DIR}
        commerce_setup_helper.substitute_file_fields(
            response_files_path + '/csa/csainstaller.properties.master',
            response_files_path + '/csa/csainstaller.properties',
            field_replacements)
        installCommand = "\"" + csa_exec_path + " -i silent -f " + response_files_path + "/csa/csainstaller.properties" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)

    if (INSTALL_SERVICE == "true"):

        logging.info("installing Service")

        service_exec_path = binary_path + "/service/OCServiceCenter11.3.bin"
        if not os.path.exists(service_exec_path):
            logging.error("Binary " + service_exec_path +
                          " does not exist - will not install")
            return

        field_replacements = {'INSTALL_HOME': INSTALL_DIR}
        commerce_setup_helper.substitute_file_fields(
            response_files_path +
            '/service/serviceinstaller.properties.master',
            response_files_path + '/service/serviceinstaller.properties',
            field_replacements)
        installCommand = "\"" + service_exec_path + " -i silent -f " + response_files_path + "/service/serviceinstaller.properties" + "\""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)
Ejemplo n.º 29
0
def install_cas(configData, full_path):

    endecaData = configData[json_key]
    requiredFields = ['installOwner', 'installGroup']
    commerce_setup_helper.check_required_fields(endecaData, requiredFields)
    INSTALL_OWNER = endecaData['installOwner']
    INSTALL_GROUP = endecaData['installGroup']
    if service_key in endecaData:
        jsonData = endecaData[service_key]
        requiredFields = [
            'endecaRoot', 'casPort', 'casShutdownPort', 'casHostname'
        ]
        commerce_setup_helper.check_required_fields(jsonData, requiredFields)
    else:
        print service_name + " config data missing from json. will not install"
        return

    print "installing " + service_name

    if (platform.system() == "SunOS"):
        binary_path = full_path + "/binaries/endeca11.1/solaris"
        install_exec = "/CAS_Install/OCcas11.1.0-Solaris.sh"
    else:
        binary_path = full_path + "/binaries/endeca11.1"
        install_exec = "/CAS_Install/OCcas11.1.0-Linux64.sh"

    response_files_path = full_path + "/responseFiles/endeca11.1"

    full_exec_path = binary_path + install_exec

    if not os.path.exists(full_exec_path):
        print "Binary " + full_exec_path + " does not exist - will not install"
        return False

    if jsonData is not None:

        ENDECA_ROOT = jsonData['endecaRoot']
        CAS_PORT = jsonData['casPort']
        CAS_SHUTDOWN_PORT = jsonData['casShutdownPort']
        CAS_HOSTNAME = jsonData['casHostname']
        START_ON_BOOT = jsonData['start_onBoot']
        # make the install tree with correct owner if needed
        commerce_setup_helper.mkdir_with_perms(ENDECA_ROOT, INSTALL_OWNER,
                                               INSTALL_GROUP)

        # data field to replace in our silent installer file
        field_replacements = {
            'ENDECA_ROOT': ENDECA_ROOT,
            'CAS_PORT': CAS_PORT,
            'CAS_SHUTDOWN_PORT': CAS_SHUTDOWN_PORT,
            'CAS_HOST': CAS_HOSTNAME
        }

        commerce_setup_helper.substitute_file_fields(
            response_files_path + '/cas_silent.txt.master',
            response_files_path + '/cas_silent.txt', field_replacements)

        installCommand = "\"" + full_exec_path + " --silent --target " + ENDECA_ROOT + \
        " --endeca_tools_root " + ENDECA_ROOT + "/endeca/ToolsAndFrameworks/11.1.0 --endeca_tools_conf " + ENDECA_ROOT + "/endeca/ToolsAndFrameworks/11.1.0/server/workspace < " + \
        response_files_path + "/cas_silent.txt \""
        commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)

        if (platform.system() == 'SunOS'):
            startStopPath = "/startStopScripts/solaris/bootScripts/"
        else:
            startStopPath = "/startStopScripts/bootScripts/"

        # copy start/stop script
        ENDECA_HOME = ENDECA_ROOT + "/endeca"
        MDEX_SETUP = ENDECA_HOME + "/MDEX/6.5.1/mdex_setup_sh.ini"
        PLATFORM_SETUP = ENDECA_HOME + "/PlatformServices/workspace/setup/installer_sh.ini"
        script_replacements = {
            'ENDECA_PROCESS_OWNER': INSTALL_OWNER,
            'ENDECA_INSTALL_ROOT': ENDECA_HOME,
            "MDEX_SETUP": MDEX_SETUP,
            "PLATFORM_SETUP": PLATFORM_SETUP
        }
        commerce_setup_helper.copy_start_script(
            START_ON_BOOT, full_path + startStopPath + 'endecaCAS.master',
            script_replacements)

        # restart other services before cas
        platformCmd = "/etc/init.d/platformServices"
        toolsCmd = "/etc/init.d/toolsAndFramework"
        commerce_setup_helper.exec_cmd(toolsCmd + " stop")
        commerce_setup_helper.exec_cmd(platformCmd + " restart")
        commerce_setup_helper.exec_cmd(toolsCmd + " start")
        # start cas
        startCmd = "/etc/init.d/endecaCAS"
        commerce_setup_helper.exec_cmd(startCmd + " start")

        commerce_setup_helper.add_to_bashrc(
            INSTALL_OWNER, "# echo Endeca " + service_name +
            " start/stop script: " + startCmd + "\n")
Ejemplo n.º 30
0
def install_otd(configData, full_path):

    if json_key in configData:
        jsonData = configData[json_key]
    else:
        print json_key + " config data missing from json. will not install"
        return False

    print "installing " + service_name

    if (platform.system() == "SunOS"):
        binary_path = full_path + "/binaries/OTD11.1.1.9/solaris"
    else:
        binary_path = full_path + "/binaries/OTD11.1.1.9"

    install_exec = "/Disk1/runInstaller"

    response_files_path = full_path + "/responseFiles/OTD11"

    full_exec_path = binary_path + install_exec

    if not os.path.exists(full_exec_path):
        print "Binary " + full_exec_path + " does not exist - will not install"
        return False

    requiredFields = [
        'instanceHome', 'installDir', 'adminUser', 'installOwner',
        'adminPassword', 'oraInventoryDir'
    ]
    commerce_setup_helper.check_required_fields(jsonData, requiredFields)

    INSTALL_OWNER = jsonData['installOwner']
    INSTANCE_HOME = jsonData['instanceHome']
    INSTALL_DIR = jsonData['installDir']
    ORACLE_INVENTORY_DIR = jsonData['oraInventoryDir']
    ORACLE_INVENTORY_GROUP = jsonData['oraInventoryGroup']
    ADMIN_USER = jsonData['adminUser']
    ADMIN_PASSWORD = jsonData['adminPassword']
    OTD_ADMIN_BOOT = jsonData['otd_startAdmin_onBoot']
    ORA_INST = "/etc/oraInst.loc"
    OTD_INSTANCE_NAME = "admin-server"

    oraInst_replacements = {
        'ORACLE_INVENTORY_DIR': ORACLE_INVENTORY_DIR,
        'ORACLE_INVENTORY_GROUP': ORACLE_INVENTORY_GROUP
    }
    otdPassword_replacements = {'TADM_ADMINPASSWORD': ADMIN_PASSWORD}

    # if oraInst.loc doesn't already exist, we need to make one
    if not os.path.isfile(ORA_INST):
        commerce_setup_helper.substitute_file_fields(
            response_files_path + '/oraInst.loc.master',
            response_files_path + '/oraInst.loc', oraInst_replacements)
        shutil.copyfile(response_files_path + "/oraInst.loc", ORA_INST)
        commerce_setup_helper.change_file_owner(ORA_INST, INSTALL_OWNER,
                                                ORACLE_INVENTORY_GROUP)
        os.chmod(ORA_INST, 0664)

    # make the install tree with correct owner if needed
    commerce_setup_helper.mkdir_with_perms(INSTALL_DIR, INSTALL_OWNER,
                                           ORACLE_INVENTORY_GROUP)

    # exec the install command
    installCommand = "\"" + binary_path + "/Disk1/runInstaller -silent -waitforcompletion -invPtrLoc /etc/oraInst.loc ORACLE_HOME=" + INSTALL_DIR + " SKIP_SOFTWARE_UPDATES=true\""
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, installCommand)

    # setup password file
    commerce_setup_helper.substitute_file_fields(
        response_files_path + '/otdPassword.pwd.master',
        response_files_path + '/otdPassword.pwd', otdPassword_replacements)

    # exec base admin server creation
    configCommand = "\"" + INSTALL_DIR + "/bin/tadm configure-server --user="******" --instance-home=" + INSTANCE_HOME + " --password-file=" + response_files_path + "/otdPassword.pwd\""
    commerce_setup_helper.exec_as_user(INSTALL_OWNER, configCommand)

    if (platform.system() == 'SunOS'):
        startStopPath = "/startStopScripts/solaris/bootScripts/"
    else:
        startStopPath = "/startStopScripts/bootScripts/"

    # copy start/stop script
    otdScript_replacements = {
        'OTD_PROCESS_OWNER': INSTALL_OWNER,
        'OTD_INSTANCE_HOME': INSTANCE_HOME,
        'OTD_INSTANCE_NAME': OTD_INSTANCE_NAME
    }
    commerce_setup_helper.copy_start_script(
        OTD_ADMIN_BOOT, full_path + startStopPath + 'OTDAdmin.master',
        otdScript_replacements)

    # fire up the otd admin server
    startCmd = "/etc/init.d/OTDAdmin"
    commerce_setup_helper.exec_cmd(startCmd + " start")

    commerce_setup_helper.add_to_bashrc(
        INSTALL_OWNER,
        "# echo " + service_name + " start/stop script: " + startCmd + "\n\n")