2788N/A<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2788N/A<!DOCTYPE stax SYSTEM "/stax.dtd">
2788N/A<!--
2788N/A ! CDDL HEADER START
2788N/A !
2788N/A ! The contents of this file are subject to the terms of the
2788N/A ! Common Development and Distribution License, Version 1.0 only
2788N/A ! (the "License"). You may not use this file except in compliance
2788N/A ! with the License.
2788N/A !
2788N/A ! You can obtain a copy of the license at
2788N/A ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
2788N/A ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
2788N/A ! See the License for the specific language governing permissions
2788N/A ! and limitations under the License.
2788N/A !
2788N/A ! When distributing Covered Code, include this CDDL HEADER in each
2788N/A ! file and include the License file at
2788N/A ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
2788N/A ! add the following below this CDDL HEADER, with the fields enclosed
2788N/A ! by brackets "[]" replaced with your own identifying information:
2788N/A ! Portions Copyright [yyyy] [name of copyright owner]
2788N/A !
2788N/A ! CDDL HEADER END
2788N/A !
5061N/A ! Copyright 2007-2010 Sun Microsystems, Inc.
6184N/A ! Portions Copyright 2011-2013 ForgeRock AS.
2788N/A ! -->
2788N/A<stax>
2788N/A <function name="createTopology">
2788N/A <function-prolog>
2788N/A This function creates the topology required by the Test Group/Suite.
2788N/A </function-prolog>
2788N/A <function-map-args>
3071N/A <function-arg-def name="topologyDescFile"
3071N/A type="optional"
3071N/A default="None">
2788N/A <function-arg-description>
2788N/A Topology Description file
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="filePath"/>
2788N/A </function-arg-def>
3071N/A <function-arg-def name="initialiseInstance"
3071N/A type="optional"
3071N/A default="False">
2788N/A <function-arg-description>
3071N/A Specifies whether the instance should be initialised with
3071N/A some default data.
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="boolean"/>
2788N/A </function-arg-def>
3071N/A <function-arg-def name="sharedDataFolder"
3071N/A type="optional"
3071N/A default="''">
2788N/A <function-arg-description>
2788N/A Specifies a relative folder that holds the shared data for the tests
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="string"/>
2788N/A </function-arg-def>
4865N/A <function-arg-def name="fileExtensions"
4865N/A type="optional"
4865N/A default="[]">
4865N/A <function-arg-description>
4865N/A Specifies a list of file extension to add to testdata.zip
4865N/A </function-arg-description>
4865N/A <function-arg-property name="type" value="string"/>
4865N/A </function-arg-def>
4865N/A
4631N/A <function-arg-def name="splitReplicationServers"
4631N/A type="optional"
4631N/A default="False">
4631N/A <function-arg-description>
4631N/A Specifies whether the replication servers should be split from the
4631N/A ldap servers and be configured on separate instances.
4631N/A </function-arg-description>
4631N/A <function-arg-property name="type" value="boolean"/>
4631N/A </function-arg-def>
2788N/A </function-map-args>
2788N/A
2788N/A <sequence>
2788N/A <script>
2788N/A if not sharedDataFolder and CurrentTestPath.has_key('group'):
2788N/A sharedDataFolder=CurrentTestPath['group']
4631N/A
4631N/A _topologyServerList = []
4631N/A _topologyReplServerList = []
4631N/A _splitServerList = []
2788N/A </script>
2788N/A
2788N/A <call function="'prepareInstanceCreation'">
4865N/A { 'groupDataDir' : sharedDataFolder,
4865N/A 'fileExtensions' : fileExtensions
4865N/A }
2788N/A </call>
2788N/A
2788N/A <if expr="topologyDescFile == None">
3071N/A <!-- SINGLE instance deployment: read parameters from config.py (done
3071N/A by default) -->
2788N/A <sequence>
2788N/A <message>
2788N/A 'SINGLE instance deployment: read parameters from config.py'
2788N/A </message>
2788N/A <call function="'createInstance'" />
2788N/A <if expr="RC == 0 and initialiseInstance == True">
2788N/A <sequence>
2788N/A <!-- Load the server with default data -->
2788N/A <import machine="STAF_LOCAL_HOSTNAME"
2788N/A file="'%s/testcases/quickstart/quickstart.xml' % (TESTS_DIR)" />
2788N/A <call function="'main_quickstart'"/>
2788N/A </sequence>
2788N/A </if>
2788N/A </sequence>
3361N/A <else>
3361N/A <!-- MULTIPLE instance deployment: read parameters from
3361N/A topologyDescFile -->
3361N/A <sequence>
3361N/A <message>
3361N/A 'MULTIPLE instance deployment: read parameters from %s' \
3361N/A % topologyDescFile
3361N/A </message>
3361N/A
3361N/A <!-- Parse the topology description file and set
3361N/A _topologyServerList -->
3361N/A <call function="'readTopology'">
3361N/A { 'file' : topologyDescFile }
3361N/A </call>
3361N/A
4631N/A <if expr="splitReplicationServers">
4631N/A <sequence>
4631N/A <message>
5540N/A 'Replication servers will be split from ldap servers.'
4631N/A </message>
4631N/A <iterate var="server" in="_topologyServerList" indexvar="i">
4631N/A <sequence>
4631N/A <script>
4631N/A _topologyReplServerList.append(server.splitReplServer())
4631N/A _splitServerList.append(server)
4631N/A _splitServerList.append(_topologyReplServerList[i])
4631N/A </script>
4631N/A </sequence>
4631N/A </iterate>
4631N/A </sequence>
4631N/A <else>
4631N/A <script>
4631N/A _splitServerList = _topologyServerList
4631N/A </script>
4631N/A </else>
4631N/A </if>
4631N/A
3361N/A <message>
3361N/A 'Number of server instances required by the deployment: %s' \
4631N/A % len(_splitServerList)
3361N/A </message>
3853N/A
4631N/A <iterate var="server" in="_splitServerList">
3361N/A <sequence>
3361N/A <!-- Create the instance-->
3361N/A <call function="'createInstance'">
3853N/A { 'dsHost' : server.getHostname(),
3853N/A 'dsDir' : server.getDir(),
3853N/A 'dsPort' : server.getPort(),
3853N/A 'dsAdminPort' : server.getAdminPort(),
3853N/A 'dsSslPort' : server.getSslPort(),
3853N/A 'dsJmxPort' : server.getJmxPort(),
3853N/A 'dsBindDN' : server.getRootDn(),
3853N/A 'dsBindPwd' : server.getRootPwd(),
3853N/A 'dsBaseDN' : server.getBaseDn()
3361N/A }
3361N/A </call>
3361N/A
3361N/A </sequence>
3361N/A </iterate>
3361N/A </sequence>
3361N/A </else>
2788N/A </if>
2788N/A </sequence>
2788N/A </function>
2788N/A
2788N/A
2788N/A
2788N/A <function name="prepareInstanceCreation">
2788N/A <function-prolog>
2788N/A This function prepares locally the necessary
2788N/A files to create an instance: data zip file and OpenDS zip file.
2788N/A </function-prolog>
2788N/A <function-map-args>
3071N/A <function-arg-def name="groupDataDir"
3071N/A type="optional"
3071N/A default="''">
2788N/A <function-arg-description>
3071N/A Specifies a relative folder that holds the shared data for the test
3071N/A group
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="string"/>
2788N/A </function-arg-def>
3361N/A <function-arg-def name="fileExtensions"
3361N/A type="optional"
3361N/A default="[]">
3361N/A <function-arg-description>
3361N/A Specifies a list of file extension to add to testdata.zip
3361N/A </function-arg-description>
3361N/A <function-arg-property name="type" value="list"/>
3361N/A </function-arg-def>
5507N/A <function-arg-def name="javaProjects"
5507N/A type="optional"
5507N/A default="[]">
5507N/A <function-arg-description>
5507N/A Specifies a list of java projects to add to testdata.zip
5507N/A </function-arg-description>
5507N/A <function-arg-property name="type" value="list"/>
5507N/A </function-arg-def>
2788N/A </function-map-args>
2788N/A <sequence>
2788N/A <!-- ON LOCAL HOST: get data ready to copy to remote host -->
2788N/A <script>
5507N/A # Original source location of the data files
3816N/A sourceTestsGroupDir='%s/%s' % (source.data,groupDataDir)
5507N/A
5507N/A # Location of data files are staged locally before transit to SUT
3816N/A localTestsGroupDir ='%s/%s' % (local.data, groupDataDir)
5507N/A
5507N/A # Location of data files are copied to on the remote SUT
3816N/A remoteTestsGroupDir='%s/%s' % (remote.data,groupDataDir)
2788N/A </script>
5507N/A
5507N/A <!-- Stage static data-->
5507N/A <call function="'stageStaticDataFiles'">
5540N/A { 'customFileExtensions' : fileExtensions,
5540N/A 'testGroupDirName' : groupDataDir }
5507N/A </call>
5504N/A
5507N/A <!-- Stage (*/.java) files -->
5507N/A <call function="'stageJavaFiles'">
5507N/A { 'customJavaProjects' : javaProjects }
5507N/A </call>
5507N/A
5507N/A <!-- Stage (SNMP/.java) files -->
5507N/A <call function="'stageSNMPFiles'"/>
5507N/A
5507N/A <!-- Delete the any existing testdata archive -->
5507N/A <message>
5507N/A 'Delete %s/testdata.zip' % local.temp
5507N/A </message>
5507N/A <call function="'deleteFile'">
5507N/A { 'location' : STAXServiceMachine,
5507N/A 'filename' : '%s/testdata.zip' % local.temp
3071N/A }
2788N/A </call>
2788N/A
5507N/A <!-- Zip up local testdata files for transit to SUT -->
5507N/A <message>
5507N/A 'Zip up local testdata files to %s/testdata.zip' % local.temp
5507N/A </message>
5507N/A <call function="'zipUpFile'">
5507N/A { 'location' : STAXServiceMachine,
5507N/A 'zipfile' : '%s/testdata.zip' % local.temp,
5507N/A 'folder' : local.testdata,
5507N/A 'relativeto' : local.directory
5507N/A }
5507N/A </call>
5507N/A
2788N/A </sequence>
2788N/A </function>
2788N/A
2788N/A
2788N/A
2788N/A <function name="createInstance">
2788N/A <function-prolog>
2788N/A This function creates an instance on a given host.
2788N/A It copies both data and OpenDS zip files onto the host,
2788N/A unzips them, and configures OpenDS.
2788N/A </function-prolog>
2788N/A
2788N/A <function-map-args>
3071N/A <function-arg-def name="dsHost"
3071N/A type="optional"
3071N/A default="DIRECTORY_INSTANCE_HOST">
2788N/A <function-arg-description>
3071N/A Hostname where the instance is to be created
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="hostname"/>
2788N/A </function-arg-def>
3071N/A <function-arg-def name="dsDir"
3071N/A type="optional"
3071N/A default="DIRECTORY_INSTANCE_DIR">
2788N/A <function-arg-description>
3071N/A Directory where OpenDS will be installed
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="filepath"/>
3071N/A </function-arg-def>
3071N/A <function-arg-def name="dsPort"
3071N/A type="optional"
3071N/A default="DIRECTORY_INSTANCE_PORT">
2788N/A <function-arg-description>
3071N/A Directory Server port number
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="Port number"/>
2788N/A </function-arg-def>
3853N/A <function-arg-def name="dsAdminPort"
3853N/A type="optional"
3853N/A default="DIRECTORY_INSTANCE_ADMIN_PORT">
3853N/A <function-arg-description>
3853N/A Directory Server admin port number
3853N/A </function-arg-description>
3853N/A <function-arg-property name="type" value="Port number"/>
3853N/A </function-arg-def>
3071N/A <function-arg-def name="dsSslPort"
3071N/A type="optional"
5551N/A default="None">
2788N/A <function-arg-description>
3071N/A Directory Server SSL port number
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="Port number"/>
2788N/A </function-arg-def>
3071N/A <function-arg-def name="dsJmxPort"
3071N/A type="optional"
3071N/A default="None">
2788N/A <function-arg-description>
3071N/A Directory Server JMX port number
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="Port number"/>
2788N/A </function-arg-def>
3071N/A <function-arg-def name="dsBindDN"
3071N/A type="optional"
3071N/A default="DIRECTORY_INSTANCE_DN">
2788N/A <function-arg-description>
3071N/A Directory Manager DN
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="DN"/>
2788N/A </function-arg-def>
3071N/A <function-arg-def name="dsBindPwd"
3071N/A type="optional"
3071N/A default="DIRECTORY_INSTANCE_PSWD">
2788N/A <function-arg-description>
3071N/A Directory Server SSL port number
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="string"/>
2788N/A </function-arg-def>
3071N/A <function-arg-def name="dsBaseDN"
3071N/A type="optional"
3071N/A default="DIRECTORY_INSTANCE_SFX">
2788N/A <function-arg-description>
3071N/A Directory Server base suffix dn
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="DN"/>
2788N/A </function-arg-def>
2788N/A </function-map-args>
2788N/A
2788N/A <sequence>
2788N/A <message>
5974N/A 'Create an instance on remote host %s' % dsHost
2788N/A </message>
2788N/A
2788N/A <!-- ON REMOTE HOST: copy files, unzip, configure instance -->
2788N/A <!--- Delete folder if it exists on remote host-->
2788N/A <message>
5974N/A 'Delete existing instance folder %s on remote host %s' % (dsDir,dsHost)
2788N/A </message>
2788N/A <call function="'deleteFolder'">
2788N/A { 'location' : dsHost,
5974N/A 'foldername' : '%s' % (dsDir)
2788N/A }
2788N/A </call>
2788N/A
2788N/A <!--- Create folder on remote host -->
2788N/A <message>
5974N/A 'Create new instance folder %s on remote host %s' % (dsDir,dsHost)
2788N/A </message>
2788N/A <call function="'createFolder'">
2788N/A { 'location' : dsHost,
2788N/A 'foldername' : '%s' % dsDir
2788N/A }
2788N/A </call>
3921N/A
5976N/A <!--- Create folder on remote host -->
5974N/A <message>
5976N/A 'Create new instance temp folder %s/temp on remote host %s' % (dsDir,dsHost)
5974N/A </message>
5976N/A <call function="'createFolder'">
5976N/A { 'location' : dsHost,
5974N/A 'foldername' : '%s/temp' % dsDir
5974N/A }
5974N/A </call>
3921N/A
2788N/A <!--- Copy staging data to remote host -->
2788N/A <message>
5974N/A 'Copy %s/testdata.zip to %s on %s on remote host' \
5974N/A % (local.testdata,dsDir,dsHost)
2788N/A </message>
2788N/A <call function="'copyFile'">
3816N/A { 'srcfile' : '%s/testdata.zip' % local.temp,
2788N/A 'destfile' : '%s/testdata.zip' % dsDir,
2788N/A 'remotehost' : dsHost
2788N/A }
2788N/A </call>
2788N/A
2788N/A <!--- Unzip contents of staging data on remote host -->
2788N/A <message>
5974N/A 'Extract contents of test data %s on %s on remote host' \
5974N/A % (dsDir,dsHost)
2788N/A </message>
2788N/A <call function="'unZipFile'">
2788N/A { 'location' : dsHost,
2788N/A 'zipfile' : '%s/testdata.zip' % dsDir,
2788N/A 'unzipdir' : dsDir
2788N/A }
2788N/A </call>
5116N/A
5116N/A <!-- Check if DS Copy zip exists -->
5116N/A <call function="'GetEntry'">
5116N/A {
5116N/A 'location' : dsHost,
5116N/A 'entry' : '%s/%s' % (dsDir,ZIPNAME),
5116N/A 'attribute' : 'TYPE'
2788N/A }
2788N/A </call>
5116N/A <if expr="RC == 48">
5116N/A <sequence>
5116N/A <!--- Copy DS Copy zip file -->
5116N/A <message>
5116N/A 'Copy DS zip archive %s/%s to %s' % (ZIPPATH,ZIPNAME,dsHost)
5116N/A </message>
5116N/A <call function="'copyFile'">
5116N/A { 'srcfile' : '%s/%s' % (ZIPPATH,ZIPNAME),
5116N/A 'destfile' : '%s/%s' % (dsDir,ZIPNAME),
5116N/A 'remotehost' : dsHost
5116N/A }
5116N/A </call>
5116N/A </sequence>
5116N/A <else>
5116N/A <message>
5116N/A 'DS zip archive %s/%s already exists, nothing to do' % (dsDir,ZIPNAME)
5116N/A </message>
5116N/A </else>
5116N/A </if>
5116N/A
6312N/A <if expr="UPGRADE_OPENDJNAME == ''">
6308N/A <sequence>
6308N/A <!-- *********** -->
6308N/A <!-- NORMAL MODE -->
6308N/A <!-- *********** -->
6308N/A
6308N/A <!--- Install DS Extract zip file -->
6308N/A <message>
6308N/A 'Extract DS zip archive to %s on %s' % (dsDir,dsHost)
6308N/A </message>
6308N/A <call function="'unZipFile'">
6308N/A { 'location' : dsHost,
6308N/A 'zipfile' : '%s/%s' % (dsDir,ZIPNAME),
6308N/A 'unzipdir' : dsDir
6308N/A }
6308N/A </call>
6308N/A </sequence>
6308N/A <else>
6308N/A <sequence>
6308N/A <!-- ************ -->
6308N/A <!-- UPGRADE MODE -->
6308N/A <!-- ************ -->
6308N/A
6309N/A <!-- Check if old DS Copy zip exists -->
6309N/A <call function="'GetEntry'">
6309N/A {
6309N/A 'location' : dsHost,
6309N/A 'entry' : '%s/%s' % (dsDir,UPGRADE_ZIPNAME),
6309N/A 'attribute' : 'TYPE'
6309N/A }
6309N/A </call>
6309N/A <if expr="RC == 48">
6309N/A <sequence>
6309N/A <!--- Install old DS Extract zip file -->
6309N/A <message>
6309N/A 'Extract old DS zip archive to %s on %s' % (local.temp,STAXServiceMachine)
6309N/A </message>
6309N/A <call function="'unZipFile'">
6309N/A { 'zipfile' : '%s/%s' % (UPGRADE_ZIPPATH,UPGRADE_ZIPNAME),
6309N/A 'unzipdir' : local.temp
6309N/A }
6309N/A </call>
6309N/A
6309N/A <!-- Rename folder for the old version, for instance OpenDJ-2.4.5 => opendj -->
6309N/A <message>
6309N/A 'Rename old DS zip folder from %s/%s to %s/%s' % (local.temp,UPGRADE_OPENDJNAME,local.temp,OPENDSNAME)
6309N/A </message>
6309N/A <script>
6309N/A import os
6309N/A
6309N/A srcDir = os.path.join(local.temp, UPGRADE_OPENDJNAME)
6309N/A destDir = os.path.join(local.temp, OPENDSNAME)
6309N/A os.rename(srcDir, destDir)
6309N/A </script>
6309N/A
6309N/A <!-- Re-create a new archive for the old DS -->
6309N/A <message>
6309N/A 'Re-create old DS archive %s/%s from %s/%s' % (local.temp,UPGRADE_ZIPNAME,local.temp,OPENDSNAME)
6309N/A </message>
6309N/A <call function="'zipUpFile'">
6309N/A { 'zipfile' : '%s/%s' % (local.temp,UPGRADE_ZIPNAME),
6309N/A 'folder' : '%s/%s' % (local.temp,OPENDSNAME),
6309N/A 'relativeto' : local.temp
6309N/A }
6309N/A </call>
6308N/A
6308N/A <!--- Copy old DS Copy zip file -->
6308N/A <message>
6308N/A 'Copy old DS zip archive %s/%s to %s' % (local.temp,UPGRADE_ZIPNAME,dsHost)
6308N/A </message>
6308N/A <call function="'copyFile'">
6308N/A { 'srcfile' : '%s/%s' % (local.temp,UPGRADE_ZIPNAME),
6308N/A 'destfile' : '%s/%s' % (dsDir,UPGRADE_ZIPNAME),
6308N/A 'remotehost' : dsHost
6308N/A }
6308N/A </call>
6309N/A
6309N/A <message>
6309N/A 'Delete folder %s/%s' % (local.temp,OPENDSNAME)
6309N/A </message>
6309N/A <call function="'deleteFolder'">
6309N/A { 'foldername' : '%s/%s' % (local.temp,OPENDSNAME)
6309N/A }
6309N/A </call>
6309N/A
6309N/A <message>
6309N/A 'Delete archive %s/%s' % (local.temp,UPGRADE_ZIPNAME)
6309N/A </message>
6309N/A <call function="'deleteFile'">
6309N/A { 'filename' : '%s/%s' % (local.temp,UPGRADE_ZIPNAME)
6309N/A }
6309N/A </call>
6308N/A </sequence>
6308N/A <else>
6308N/A <message>
6308N/A 'Old DS zip archive %s/%s already exists, nothing to do' % (dsDir,UPGRADE_ZIPNAME)
6308N/A </message>
6308N/A </else>
6308N/A </if>
6308N/A
6308N/A <!--- Install DS Extract zip file -->
6308N/A <message>
6308N/A 'Extract old DS zip archive to %s on %s' % (dsDir,dsHost)
6308N/A </message>
6308N/A <call function="'unZipFile'">
6308N/A { 'location' : dsHost,
6308N/A 'zipfile' : '%s/%s' % (dsDir,UPGRADE_ZIPNAME),
6308N/A 'unzipdir' : dsDir
6308N/A }
6308N/A </call>
6308N/A </sequence>
6308N/A </else>
6308N/A </if>
2788N/A
2788N/A <!-- fixMe: Windows Services are not enabled -->
3621N/A <if expr="is_windows_platform(dsHost)">
2788N/A <script>
2788N/A enableWindowsService=''
2788N/A </script>
2788N/A <else>
2788N/A <script>
2788N/A enableWindowsService=''
2788N/A </script>
2788N/A </else>
2788N/A </if>
2788N/A
2788N/A <!--- Set up DS -->
5061N/A
5061N/A <!--- In IPS mode, at this point we need to overwrite dsDir -->
5061N/A <if expr="IPS_PKG == True">
5061N/A <script>
5061N/A dsDir = DIRECTORY_INSTANCE_BIN
5061N/A </script>
5061N/A </if>
5061N/A
2788N/A <message>
2788N/A 'Set up DS on %s : %s/%s' % (dsHost,dsDir,OPENDSNAME)
2788N/A </message>
2788N/A
2788N/A <call function="'SetUpDsWithScript'">
2788N/A { 'location' : dsHost,
2788N/A 'dsPath' : '%s/%s' % (dsDir, OPENDSNAME),
2788N/A 'dsPort' : dsPort,
3853N/A 'dsAdminPort' : dsAdminPort,
5551N/A 'dsSslPort' : dsSslPort,
2788N/A 'dsJmxPort' : dsJmxPort,
2788N/A 'dsBindDN' : dsBindDN,
2788N/A 'dsBindPwd' : dsBindPwd,
2788N/A 'dsBaseDN' : dsBaseDN,
2788N/A 'dsEnableWindowsService' : enableWindowsService,
2788N/A 'dsDoNotStart' : 'true'
2788N/A }
2788N/A </call>
2788N/A
2788N/A <call function="'checkRC'">
2788N/A { 'returncode' : RC ,
2788N/A 'result' : STAXResult
2788N/A }
2788N/A </call>
2788N/A
2788N/A <if expr="returncode == 0">
2788N/A <message>
2788N/A 'Instance created.'
2788N/A </message>
2788N/A <else>
2788N/A <message>
2788N/A 'Failed to create instance.'
2788N/A </message>
2788N/A </else>
2788N/A </if>
6308N/A
6308N/A <!-- ******* -->
6308N/A <!-- UPGRADE -->
6308N/A <!-- ******* -->
6312N/A <if expr="UPGRADE_OPENDJNAME != ''">
6308N/A <sequence>
6308N/A <!-- Copy content of new version into old version -->
6308N/A <!-- Install DS Extract zip file -->
6308N/A <message>
6308N/A 'Extract DS zip archive to %s on %s' % (dsDir,dsHost)
6308N/A </message>
6308N/A <call function="'unZipFile'">
6308N/A { 'location' : dsHost,
6308N/A 'zipfile' : '%s/%s' % (dsDir,ZIPNAME),
6308N/A 'unzipdir' : dsDir
6308N/A }
6308N/A </call>
6308N/A
6308N/A <!-- Upgrade instance -->
6308N/A <call function="'UpgradeDsWithScript'">
6308N/A { 'location' : dsHost,
6308N/A 'dsPath' : '%s/%s' % (dsDir, OPENDSNAME),
6308N/A }
6308N/A </call>
6308N/A </sequence>
6308N/A </if>
2788N/A </sequence>
2788N/A </function>
2788N/A
2788N/A
2788N/A
2788N/A <function name="DEPRECATEDconfigureReplication">
2788N/A <function-prolog>
2788N/A This function configures replication in a given server.
2788N/A </function-prolog>
2788N/A
2788N/A <function-list-args>
2788N/A <function-arg-def name="syncserverMap" type="required">
2788N/A <function-arg-description>
3071N/A Map containing a Server class instance representing the server to
3071N/A configure.
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="map"/>
2788N/A </function-arg-def>
2788N/A </function-list-args>
2788N/A
2788N/A <sequence>
2788N/A <script>
2788N/A syncserver = syncserverMap['instance']
2788N/A
2788N/A filename = 'replication_conf.ldif'
3816N/A filePath = '%s/%s' % (local.testdata,filename)
3816N/A dataDir = '%s/%s' % (syncserver.getDir(),remote.reldatadir)
2788N/A
2788N/A write_replication_conf_ldif_file(filePath, syncserver)
2788N/A </script>
2788N/A
2788N/A <message>
3071N/A 'Configure replication on server on host %s at directory %s' \
3071N/A % (syncserver.getHostname(),syncserver.getDir())
2788N/A </message>
2788N/A
2788N/A <!-- Copy the replication_conf ldif to remote host -->
2788N/A <message>
3816N/A 'Copy %s file from %s to %s' % (filename,local.testdata,dataDir)
2788N/A </message>
2788N/A <call function="'copyFile'">
2788N/A { 'srcfile' : filePath,
2788N/A 'destfile' : '%s/%s' % (dataDir,filename),
2788N/A 'remotehost' : syncserver.getHostname()
2788N/A }
2788N/A </call>
2788N/A
2788N/A <!--- Add replication configuration entries to config.ldif in server -->
2788N/A <script>
2788N/A remoteFilePath = '%s/%s' % (dataDir, filename)
2788N/A syncserverPath = '%s/%s' % (syncserver.getDir(),OPENDSNAME)
2788N/A </script>
2788N/A
2788N/A <!--- Start DS -->
2788N/A <call function="'StartDsWithScript'">
2788N/A { 'location' : syncserver.getHostname(),
2788N/A 'dsPath' : syncserverPath
2788N/A }
2788N/A </call>
2788N/A
2788N/A <call function="'checkRC'">
2788N/A { 'returncode' : RC ,
2788N/A 'result' : STAXResult
2788N/A }
2788N/A </call>
2788N/A
2788N/A <message>
2788N/A 'Add replication configuration entries in %s' % remoteFilePath
2788N/A </message>
2788N/A
2788N/A <call function="'addEntry'">
2788N/A { 'location' : syncserver.getHostname(),
2788N/A 'dsPath' : syncserverPath,
2788N/A 'dsInstanceHost' : syncserver.getHostname(),
2788N/A 'dsInstancePort' : syncserver.getPort(),
2788N/A 'dsInstanceDn' : syncserver.getRootDn(),
2788N/A 'dsInstancePswd' : syncserver.getRootPwd(),
2788N/A 'entryToBeAdded' : remoteFilePath
2788N/A }
2788N/A </call>
2788N/A
2788N/A <call function="'checkRC'">
2788N/A { 'returncode' : RC,
2788N/A 'result' : STAXResult
2788N/A }
2788N/A </call>
2788N/A
2788N/A <!--- Stop DS -->
2788N/A <call function="'StopDsWithScript'">
3853N/A { 'location' : syncserver.getHostname(),
3853N/A 'dsHost' : syncserver.getHostname(),
3853N/A 'dsPath' : syncserverPath,
3853N/A 'dsAdminPort' : syncserver.getAdminPort(),
3853N/A 'dsBindDN' : syncserver.getRootDn(),
3853N/A 'dsBindPwd' : syncserver.getRootPwd()
2788N/A }
2788N/A </call>
2788N/A
2788N/A <call function="'checkRC'">
2788N/A { 'returncode' : RC ,
2788N/A 'result' : STAXResult
2788N/A }
2788N/A </call>
2788N/A </sequence>
2788N/A </function>
2788N/A
2788N/A
2788N/A <function name="configureReplication">
2788N/A <function-prolog>
2788N/A This function configures replication in a given server.
2788N/A </function-prolog>
2788N/A
2788N/A <function-list-args>
2788N/A <function-arg-def name="syncserver" type="required">
2788N/A <function-arg-description>
2788N/A Server class instance representing the server to configure.
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="Server"/>
2788N/A </function-arg-def>
2788N/A </function-list-args>
2788N/A
2788N/A <sequence>
2788N/A <!--- Configure replication using dsconfig -->
2788N/A <message>
3071N/A 'Configure replication on server on host %s at directory %s' \
3071N/A % (syncserver.getHostname(),syncserver.getDir())
2788N/A </message>
2788N/A
2788N/A <script>
2788N/A syncserverPath = '%s/%s' % (syncserver.getDir(),OPENDSNAME)
2788N/A </script>
2788N/A
2788N/A <!--- Start DS -->
2788N/A <call function="'StartDsWithScript'">
2788N/A { 'location' : syncserver.getHostname(),
2788N/A 'dsPath' : syncserverPath
2788N/A }
6184N/A </call>
2788N/A
2788N/A <message>
2788N/A 'List synchronization providers'
2788N/A </message>
2788N/A
2788N/A <call function="'listSyncProviders'">
3853N/A { 'location' : syncserver.getHostname(),
3853N/A 'dsPath' : syncserverPath,
3853N/A 'dsInstanceHost' : syncserver.getHostname(),
3853N/A 'dsInstanceAdminPort' : syncserver.getAdminPort(),
3853N/A 'dsInstanceDn' : syncserver.getRootDn(),
3853N/A 'dsInstancePswd' : syncserver.getRootPwd()
2788N/A }
2788N/A </call>
2788N/A
2788N/A <script>
2788N/A replicationServer = syncserver.getChangelogServer()
2788N/A replicatedSuffixList = syncserver.getSynchronizedSuffixList()
2788N/A </script>
2788N/A
2788N/A <if expr="replicationServer">
2788N/A <sequence>
2788N/A <message>
3071N/A 'Create replication server listening on port: %s' \
3071N/A % replicationServer.getPort()
2788N/A </message>
2788N/A <call function="'createReplicationServer'">
2788N/A { 'location' : syncserver.getHostname(),
2788N/A 'dsPath' : syncserverPath,
2788N/A 'dsInstanceHost' : syncserver.getHostname(),
3853N/A 'dsInstanceAdminPort' : syncserver.getAdminPort(),
2788N/A 'dsInstanceDn' : syncserver.getRootDn(),
2788N/A 'dsInstancePswd' : syncserver.getRootPwd(),
2788N/A 'replicationPort' : replicationServer.getPort(),
2788N/A 'replicationServerId' : replicationServer.getId(),
2788N/A 'replicationServerList' : replicationServer.getChangelogServerList()
2788N/A }
2788N/A </call>
2788N/A </sequence>
2788N/A </if>
2788N/A
2788N/A <iterate var="suffix" in="replicatedSuffixList" indexvar="i">
2788N/A <sequence>
2788N/A <message>
2788N/A 'Create domain name for suffix: %s' % suffix.getSuffixDn()
2788N/A </message>
2788N/A <call function="'createMultimasterDomain'">
2788N/A { 'location' : syncserver.getHostname(),
2788N/A 'dsPath' : syncserverPath,
2788N/A 'dsInstanceHost' : syncserver.getHostname(),
3853N/A 'dsInstanceAdminPort' : syncserver.getAdminPort(),
2788N/A 'dsInstanceDn' : syncserver.getRootDn(),
2788N/A 'dsInstancePswd' : syncserver.getRootPwd(),
2788N/A 'domainName' : 'SUFFIX-%s' % i,
2788N/A 'replicationDn' : suffix.getSuffixDn(),
2788N/A 'serverId' : suffix.getId(),
2788N/A 'replicationServerList' : suffix.getChangelogServerList()
2788N/A }
2788N/A </call>
2788N/A </sequence>
2788N/A </iterate>
2788N/A
2788N/A <!--- Stop DS -->
2788N/A <call function="'StopDsWithScript'">
3853N/A { 'location' : syncserver.getHostname(),
3853N/A 'dsHost' : syncserver.getHostname(),
3853N/A 'dsPath' : syncserverPath,
3853N/A 'dsAdminPort' : syncserver.getAdminPort(),
3853N/A 'dsBindDN' : syncserver.getRootDn(),
3853N/A 'dsBindPwd' : syncserver.getRootPwd()
2788N/A }
2788N/A </call>
2788N/A </sequence>
2788N/A </function>
2788N/A
2788N/A
2788N/A
2788N/A
2788N/A <!-- Enable replication between servers using dsreplication -->
2788N/A <function name="enableReplication">
2788N/A <function-prolog>
2788N/A This function enables replication between servers using dsreplication.
2788N/A </function-prolog>
2788N/A <function-map-args>
2788N/A <function-arg-def name="location"
2788N/A type="optional"
2788N/A default="STAF_REMOTE_HOSTNAME">
2788N/A <function-arg-description>
2788N/A Location of target host
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="hostname" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="dsPath"
2788N/A type="optional"
4153N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
2788N/A <function-arg-description>
2788N/A Pathname to installation root
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="filepath" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="dsInstanceHost"
2788N/A type="optional"
2788N/A default="STAF_REMOTE_HOSTNAME">
2788N/A <function-arg-description>
2788N/A Directory server hostname or IP address
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="hostname" />
2788N/A </function-arg-def>
2788N/A
3853N/A <function-arg-def name="dsInstanceAdminPort" type="required">
2788N/A <function-arg-description>
3853N/A Directory server admin port number
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="Port number" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="dsInstanceDn" type="required">
2788N/A <function-arg-description>
2788N/A Bind DN
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="DN" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="dsInstancePswd" type="required">
2788N/A <function-arg-description>
2788N/A Bind password
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="string" />
2788N/A </function-arg-def>
2788N/A
2879N/A <function-arg-def name="dsReplicationPort"
2879N/A type="optional"
2879N/A default="None">
2788N/A <function-arg-description>
2788N/A Replication port number
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="Port number" />
2788N/A </function-arg-def>
2879N/A
2879N/A <function-arg-def name="dsSecureReplication"
2879N/A type="optional"
2879N/A default="None">
2879N/A <function-arg-description>
2879N/A Encrypt communications over dsReplicationPort (secure replication)
2879N/A </function-arg-description>
2879N/A <function-arg-property name="type" value="boolean" />
4631N/A </function-arg-def>
4631N/A
4631N/A <function-arg-def name="dsOnlyLdapServer"
4631N/A type="optional"
4631N/A default="None">
4631N/A <function-arg-description>
4631N/A Server only to contain replicated data (no Repl server/changelog)
4631N/A </function-arg-description>
4631N/A <function-arg-property name="type" value="boolean" />
4631N/A </function-arg-def>
4631N/A
4631N/A <function-arg-def name="dsOnlyReplServer"
4631N/A type="optional"
4631N/A default="None">
4631N/A <function-arg-description>
4631N/A Server only to contain Repl server/changelog (no replicated data)
4631N/A </function-arg-description>
4631N/A <function-arg-property name="type" value="boolean" />
4631N/A </function-arg-def>
4631N/A
2788N/A <function-arg-def name="refInstanceHost"
2788N/A type="optional"
2788N/A default="STAF_REMOTE_HOSTNAME">
2788N/A <function-arg-description>
2788N/A Reference Directory server hostname or IP address
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="hostname" />
2788N/A </function-arg-def>
2788N/A
3853N/A <function-arg-def name="refInstanceAdminPort" type="required">
2788N/A <function-arg-description>
3853N/A Reference Directory server admin port number
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="Port number" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="refInstanceDn" type="required">
2788N/A <function-arg-description>
2788N/A Reference server Bind DN
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="DN" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="refInstancePswd" type="required">
2788N/A <function-arg-description>
2788N/A Reference server Bind password
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="string" />
2788N/A </function-arg-def>
2788N/A
2879N/A <function-arg-def name="refReplicationPort"
2879N/A type="optional"
2879N/A default="None">
2788N/A <function-arg-description>
2788N/A Reference server Replication port number
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="Port number" />
2788N/A </function-arg-def>
2879N/A
2879N/A <function-arg-def name="refSecureReplication"
2879N/A type="optional"
2879N/A default="None">
2879N/A <function-arg-description>
2879N/A Encrypt communications over refReplicationPort (secure replication)
2879N/A </function-arg-description>
2879N/A <function-arg-property name="type" value="boolean" />
4631N/A </function-arg-def>
4631N/A
4631N/A <function-arg-def name="refOnlyLdapServer"
4631N/A type="optional"
4631N/A default="None">
4631N/A <function-arg-description>
4631N/A Server only to contain replicated data (no Repl server/changelog)
4631N/A </function-arg-description>
4631N/A <function-arg-property name="type" value="boolean" />
4631N/A </function-arg-def>
4631N/A
4631N/A <function-arg-def name="refOnlyReplServer"
4631N/A type="optional"
4631N/A default="None">
4631N/A <function-arg-description>
4631N/A Server only to contain Repl server/changelog (no replicated data)
4631N/A </function-arg-description>
4631N/A <function-arg-property name="type" value="boolean" />
4631N/A </function-arg-def>
4631N/A
2788N/A
2788N/A <function-arg-def name="replicationDnList" type="required">
2788N/A <function-arg-description>
2788N/A DN of the replicated suffix
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="DN list" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="adminUID"
4631N/A type="optional"
4631N/A default="AdminUID">
2788N/A <function-arg-description>
2788N/A Global Administrator UID
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="UID" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="adminPswd"
4631N/A type="optional"
4631N/A default="AdminPswd">
2788N/A <function-arg-description>
2788N/A Global Administrator password
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="string" />
2788N/A </function-arg-def>
2879N/A
2879N/A <function-arg-def name="noSchemaReplication"
2879N/A type="optional"
2879N/A default="None">
2879N/A <function-arg-description>
2879N/A Do not enable schema replication
2879N/A </function-arg-description>
2879N/A <function-arg-property name="type" value="boolean" />
2879N/A </function-arg-def>
2879N/A
2879N/A <function-arg-def name="useSecondServerAsSchemaSource"
2879N/A type="optional"
2879N/A default="None">
2879N/A <function-arg-description>
2879N/A Take the refInstanceHost as the source for the schema initialisation
2879N/A </function-arg-description>
2879N/A <function-arg-property name="type" value="boolean" />
2879N/A </function-arg-def>
3361N/A
2788N/A <function-arg-def name="expectedRC" type="optional" default="0">
2788N/A <function-arg-description>
3194N/A Expected return code value. Default value is 0.
3194N/A Wildcard 'noCheck' to not check the RC
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="string" />
2788N/A </function-arg-def>
2788N/A </function-map-args>
2788N/A <sequence>
2788N/A <!-- Local variables -->
2788N/A <script>
2788N/A STAFCmdParams=''
2788N/A STAFCmd=''
2788N/A
2788N/A if dsPath:
2788N/A dsBinPath='%s/%s' % (dsPath,fileFolder)
2788N/A STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
2788N/A
2788N/A STAFCmdParamsList=[]
2788N/A STAFCmdParamsList.append('enable')
2788N/A STAFCmdParamsList.append('-n')
2788N/A STAFCmdParamsList.append('-Q')
3853N/A STAFCmdParamsList.append('-X')
2788N/A
4631N/A if refInstanceHost:
4631N/A STAFCmdParamsList.append('--host1 %s' % refInstanceHost)
4631N/A
4631N/A if refInstanceAdminPort:
4631N/A STAFCmdParamsList.append('--port1 %s' % refInstanceAdminPort)
4631N/A
4631N/A if refInstanceDn:
4631N/A STAFCmdParamsList.append('--bindDN1 "%s"' % refInstanceDn)
4631N/A
4631N/A if refInstancePswd:
4631N/A STAFCmdParamsList.append('--bindPassword1 "%s"' % refInstancePswd)
4631N/A
4631N/A if refReplicationPort:
4631N/A STAFCmdParamsList.append('--replicationPort1 %s' % refReplicationPort)
4631N/A
4631N/A if refSecureReplication:
4631N/A STAFCmdParamsList.append('--secureReplication1')
4631N/A
4631N/A if refOnlyLdapServer:
4631N/A STAFCmdParamsList.append('--noReplicationServer1')
4631N/A
4631N/A if refOnlyReplServer:
4631N/A STAFCmdParamsList.append('--onlyReplicationServer1')
4631N/A
2788N/A if dsInstanceHost:
4631N/A STAFCmdParamsList.append('--host2 %s' % dsInstanceHost)
2788N/A
3853N/A if dsInstanceAdminPort:
4631N/A STAFCmdParamsList.append('--port2 %s' % dsInstanceAdminPort)
2788N/A
2788N/A if dsInstanceDn:
4631N/A STAFCmdParamsList.append('--bindDN2 "%s"' % dsInstanceDn)
2788N/A
2788N/A if dsInstancePswd:
4631N/A STAFCmdParamsList.append('--bindPassword2 "%s"' % dsInstancePswd)
2788N/A
2788N/A if dsReplicationPort:
4631N/A STAFCmdParamsList.append('--replicationPort2 %s' % dsReplicationPort)
2879N/A
2879N/A if dsSecureReplication:
4631N/A STAFCmdParamsList.append('--secureReplication2')
2788N/A
4631N/A if dsOnlyLdapServer:
4631N/A STAFCmdParamsList.append('--noReplicationServer2')
2788N/A
4631N/A if dsOnlyReplServer:
4631N/A STAFCmdParamsList.append('--onlyReplicationServer2')
2788N/A
2788N/A if replicationDnList:
2788N/A for dn in replicationDnList:
2788N/A STAFCmdParamsList.append('-b "%s"' % dn)
2788N/A
2788N/A if adminUID:
2788N/A STAFCmdParamsList.append('-I "%s"' % adminUID)
2788N/A
2788N/A if adminPswd:
2788N/A STAFCmdParamsList.append('-w "%s"' % adminPswd)
2879N/A
2879N/A if noSchemaReplication:
2879N/A STAFCmdParamsList.append('--noSchemaReplication')
2879N/A
2879N/A if useSecondServerAsSchemaSource:
2879N/A STAFCmdParamsList.append('--useSecondServerAsSchemaSource')
2788N/A
2788N/A STAFCmdParams=' '.join(STAFCmdParamsList)
2788N/A </script>
2788N/A <call function="'runCommand'">
2788N/A { 'name' : 'Enable Replication',
2788N/A 'location' : location,
2788N/A 'command' : STAFCmd,
3194N/A 'arguments' : STAFCmdParams,
3194N/A 'expectedRC': expectedRC
2788N/A }
2788N/A </call>
2788N/A <return>
3194N/A STAXResult
2788N/A </return>
2788N/A </sequence>
2788N/A </function>
2788N/A
2788N/A
2788N/A
3071N/A <!-- Initialize replicated suffix with the contents of a source server using
3071N/A dsreplication -->
2788N/A <function name="initializeReplication">
2788N/A <function-prolog>
2788N/A This function initializes replicated suffixes with the contents
2788N/A of a source server using dsreplication.
2788N/A </function-prolog>
2788N/A <function-map-args>
2788N/A <function-arg-def name="location"
2788N/A type="optional"
2788N/A default="STAF_REMOTE_HOSTNAME">
2788N/A <function-arg-description>
2788N/A Location of target host
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="hostname" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="dsPath"
2788N/A type="optional"
4153N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
2788N/A <function-arg-description>
2788N/A Pathname to installation root
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="filepath" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="dsInstanceHost"
2788N/A type="optional"
2788N/A default="None">
2788N/A <function-arg-description>
2788N/A Directory server hostname or IP address
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="hostname" />
2788N/A </function-arg-def>
2788N/A
3853N/A <function-arg-def name="dsInstanceAdminPort"
2788N/A type="optional"
2788N/A default="None">
2788N/A <function-arg-description>
3853N/A Directory server admin port number
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="Port number" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="sourceInstanceHost"
2788N/A type="optional"
2788N/A default="STAF_REMOTE_HOSTNAME">
2788N/A <function-arg-description>
2788N/A Source Directory server hostname or IP address
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="hostname" />
2788N/A </function-arg-def>
2788N/A
3853N/A <function-arg-def name="sourceInstanceAdminPort" type="required">
2788N/A <function-arg-description>
3853N/A Source Directory server admin port number
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="Port number" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="replicationDnList" type="required">
2788N/A <function-arg-description>
2788N/A DN of the replicated suffix
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="DN list" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="adminUID"
2788N/A type="optional"
2788N/A default="AdminUID">
2788N/A <function-arg-description>
2788N/A Global Administrator UID
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="UID" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="adminPswd"
2788N/A type="optional"
2788N/A default="AdminPswd">
2788N/A <function-arg-description>
2788N/A Global Administrator password
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="string" />
2788N/A </function-arg-def>
2788N/A
2788N/A <function-arg-def name="expectedRC" type="optional" default="0">
2788N/A <function-arg-description>
3194N/A Expected return code value. Default value is 0.
3194N/A Wildcard 'noCheck' to not check the RC
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="string" />
2788N/A </function-arg-def>
2788N/A </function-map-args>
2788N/A <sequence>
2788N/A <!-- Local variables -->
2788N/A <script>
2788N/A STAFCmdParams=''
2788N/A STAFCmd=''
2788N/A
2788N/A if dsPath:
2788N/A dsBinPath='%s/%s' % (dsPath,fileFolder)
2788N/A STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
2788N/A
2788N/A STAFCmdParamsList=[]
2788N/A
2788N/A if dsInstanceHost:
2788N/A STAFCmdParamsList.append('initialize')
2788N/A else:
2788N/A STAFCmdParamsList.append('initialize-all')
2788N/A STAFCmdParamsList.append('-n')
2788N/A STAFCmdParamsList.append('-Q')
3853N/A STAFCmdParamsList.append('-X')
3853N/A
2788N/A if dsInstanceHost:
2788N/A STAFCmdParamsList.append('-O %s' % dsInstanceHost)
2788N/A
3853N/A if dsInstanceAdminPort:
3853N/A STAFCmdParamsList.append('--portDestination %s' % dsInstanceAdminPort)
2788N/A
2788N/A if sourceInstanceHost:
2788N/A STAFCmdParamsList.append('-h %s' % sourceInstanceHost)
2788N/A
3853N/A if sourceInstanceAdminPort:
3853N/A STAFCmdParamsList.append('-p %s' % sourceInstanceAdminPort)
2788N/A
2788N/A if replicationDnList:
2788N/A for dn in replicationDnList:
2788N/A STAFCmdParamsList.append('-b "%s"' % dn)
2788N/A
2788N/A if adminUID:
2788N/A STAFCmdParamsList.append('-I "%s"' % adminUID)
2788N/A
2788N/A if adminPswd:
2788N/A STAFCmdParamsList.append('-w "%s"' % adminPswd)
2788N/A
2788N/A STAFCmdParams=' '.join(STAFCmdParamsList)
2788N/A </script>
2788N/A <call function="'runCommand'">
5061N/A { 'name' : 'Initialize Replication',
5061N/A 'location' : location,
5061N/A 'command' : STAFCmd,
5061N/A 'arguments' : STAFCmdParams,
6184N/A 'expectedRC' : expectedRC
2788N/A }
2788N/A </call>
2788N/A <return>
3194N/A STAXResult
2788N/A </return>
2788N/A </sequence>
2788N/A </function>
2788N/A
2788N/A
2879N/A
2879N/A <!-- Disable replication for given baseDN on server using dsreplication -->
2879N/A <function name="disableReplication">
2879N/A <function-prolog>
3071N/A This function disables replication for a given baseDN on a server using
3071N/A dsreplication.
2879N/A </function-prolog>
2879N/A <function-map-args>
2879N/A <function-arg-def name="location"
2879N/A type="optional"
2879N/A default="STAF_REMOTE_HOSTNAME">
2879N/A <function-arg-description>
2879N/A Location of target host
2879N/A </function-arg-description>
2879N/A <function-arg-property name="type" value="hostname" />
2879N/A </function-arg-def>
2879N/A
2879N/A <function-arg-def name="dsPath"
2879N/A type="optional"
4153N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
2879N/A <function-arg-description>
2879N/A Pathname to installation root
2879N/A </function-arg-description>
2879N/A <function-arg-property name="type" value="filepath" />
2879N/A </function-arg-def>
2879N/A
2879N/A <function-arg-def name="dsInstanceHost"
2879N/A type="optional"
2879N/A default="STAF_REMOTE_HOSTNAME">
2879N/A <function-arg-description>
2879N/A Directory server hostname or IP address
2879N/A </function-arg-description>
2879N/A <function-arg-property name="type" value="hostname" />
2879N/A </function-arg-def>
2879N/A
3853N/A <function-arg-def name="dsInstanceAdminPort" type="required">
2879N/A <function-arg-description>
2879N/A Directory server port number
2879N/A </function-arg-description>
2879N/A <function-arg-property name="type" value="Port number" />
2879N/A </function-arg-def>
2879N/A
4648N/A <function-arg-def name="replicationDnList"
4648N/A type="optional"
4648N/A default="None">
2879N/A <function-arg-description>
2879N/A DN of the replicated suffix
2879N/A </function-arg-description>
2879N/A <function-arg-property name="type" value="DN list" />
4648N/A </function-arg-def>
4648N/A
4648N/A <function-arg-def name="disableReplServer"
4648N/A type="optional"
4648N/A default="None">
4648N/A <function-arg-description>
4648N/A Disable replication server (remove configuration, changelot and port)
4648N/A </function-arg-description>
4648N/A <function-arg-property name="type" value="boolean" />
4648N/A </function-arg-def>
4648N/A
4648N/A <function-arg-def name="disableAll"
4648N/A type="optional"
4648N/A default="None">
4648N/A <function-arg-description>
4648N/A Disable replication completely (domain, repl-server, changelog and
4648N/A admin data).
4648N/A </function-arg-description>
4648N/A <function-arg-property name="type" value="boolean" />
4648N/A </function-arg-def>
2879N/A
2879N/A <function-arg-def name="adminUID"
2879N/A type="optional"
2879N/A default="AdminUID">
2879N/A <function-arg-description>
2879N/A Global Administrator UID
2879N/A </function-arg-description>
2879N/A <function-arg-property name="type" value="UID" />
2879N/A </function-arg-def>
2879N/A
2879N/A <function-arg-def name="adminPswd"
2879N/A type="optional"
2879N/A default="AdminPswd">
2879N/A <function-arg-description>
2879N/A Global Administrator password
2879N/A </function-arg-description>
2879N/A <function-arg-property name="type" value="string" />
2879N/A </function-arg-def>
2879N/A
2879N/A <function-arg-def name="expectedRC" type="optional" default="0">
2879N/A <function-arg-description>
3194N/A Expected return code value. Default value is 0.
3194N/A Wildcard 'noCheck' to not check the RC
2879N/A </function-arg-description>
2879N/A <function-arg-property name="type" value="string" />
2879N/A </function-arg-def>
2879N/A </function-map-args>
2879N/A <sequence>
2879N/A <!-- Local variables -->
2879N/A <script>
2879N/A STAFCmdParams=''
2879N/A STAFCmd=''
2879N/A
2879N/A if dsPath:
2879N/A dsBinPath='%s/%s' % (dsPath,fileFolder)
2879N/A STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
2879N/A
2879N/A STAFCmdParamsList=[]
2879N/A STAFCmdParamsList.append('disable')
2879N/A STAFCmdParamsList.append('-n')
2879N/A STAFCmdParamsList.append('-Q')
3853N/A STAFCmdParamsList.append('-X')
3853N/A
2879N/A if dsInstanceHost:
2879N/A STAFCmdParamsList.append('-h %s' % dsInstanceHost)
2879N/A
3853N/A if dsInstanceAdminPort:
3853N/A STAFCmdParamsList.append('-p %s' % dsInstanceAdminPort)
2879N/A
2879N/A if replicationDnList:
2879N/A for dn in replicationDnList:
2879N/A STAFCmdParamsList.append('-b "%s"' % dn)
4648N/A
4648N/A if disableReplServer:
4648N/A STAFCmdParamsList.append('--disableReplicationServer')
4648N/A
4648N/A if disableAll:
4648N/A STAFCmdParamsList.append('--disableAll')
2879N/A
2879N/A if adminUID:
2879N/A STAFCmdParamsList.append('-I "%s"' % adminUID)
2879N/A
2879N/A if adminPswd:
2879N/A STAFCmdParamsList.append('-w "%s"' % adminPswd)
2879N/A
2879N/A STAFCmdParams=' '.join(STAFCmdParamsList)
2879N/A </script>
2879N/A <call function="'runCommand'">
2879N/A { 'name' : 'Disable Replication',
2879N/A 'location' : location,
2879N/A 'command' : STAFCmd,
3194N/A 'arguments' : STAFCmdParams,
3194N/A 'expectedRC': expectedRC
2879N/A }
2879N/A </call>
2879N/A <return>
3194N/A STAXResult
2879N/A </return>
2879N/A </sequence>
2879N/A </function>
2879N/A
2879N/A
2788N/A
2788N/A
2788N/A <function name="readTopology">
2788N/A <function-prolog>
2788N/A This function reads the topology from a given file.
3071N/A It parses the topology description file and sets _topologyServerList, a
3071N/A list of the servers that form the topology.
2788N/A </function-prolog>
2788N/A
2788N/A <function-map-args>
2788N/A <function-arg-def name="file" type="required">
2788N/A <function-arg-description>
2788N/A File containing the topology description.
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="filePath"/>
2788N/A </function-arg-def>
2788N/A </function-map-args>
2788N/A
2788N/A <sequence>
2788N/A <message>
2788N/A 'Parse file %s for topology parameters' % file
2788N/A </message>
2788N/A
2788N/A <script>
2788N/A _topologyServerList = []
2788N/A
2788N/A f = open(file, 'r')
2788N/A
2788N/A hostname = None
2788N/A dir = None
2788N/A port = None
3853N/A adminport = None
2788N/A sslport = None
2788N/A jmxport = None
2788N/A rootDn = None
2788N/A rootPwd = None
2788N/A baseDn = None
2788N/A changelogport = None
2788N/A suffixList = []
2788N/A changelogList = []
2788N/A serverId = 1
2788N/A
2788N/A fileLines = f.readlines()
2788N/A for line in fileLines:
2788N/A
2788N/A if line.startswith('#'):
2788N/A continue
2788N/A elif line.find('Hostname') != -1:
2788N/A hostname = line[line.find('Hostname') + 9:].strip()
2788N/A elif line.find('Directory') !=-1:
2788N/A dir = line[line.find('Directory') + 10:].strip()
2788N/A elif line.find('Port') != -1:
2788N/A port = line[line.find('Port') + 5:].strip()
3853N/A elif line.find('Adminport') != -1:
3853N/A adminport = line[line.find('Adminport') + 10:].strip()
2788N/A elif line.find('Sslport') != -1:
2788N/A sslport = line[line.find('Sslport') + 8:].strip()
2788N/A elif line.find('Jmxport') != -1:
2788N/A jmxport = line[line.find('Jmxport') + 8:].strip()
2788N/A elif line.find('RootDn') != -1:
2788N/A rootDn = line[line.find('RootDn') + 7:].strip()
2788N/A elif line.find('RootPwd') != -1:
2788N/A rootPwd = line[line.find('RootPwd') + 8:].strip()
2788N/A elif line.find('BaseDn') != -1:
2788N/A baseDn = line[line.find('BaseDn') + 7:].strip()
2788N/A elif line.find('Changelogport') != -1:
2788N/A changelogport = line[line.find('Changelogport') + 14:].strip()
2788N/A elif line.find('SynchronizedSuffix') != -1:
2788N/A suffixList.append( line[line.find('SynchronizedSuffix') + 19:].strip() )
2788N/A elif line.find('ChangelogServer') != -1:
2788N/A changelogList.append( line[line.find('ChangelogServer') + 16:].strip() )
2788N/A elif (line.isspace()) or (len(line) == 0):
3853N/A server = Server(hostname, dir, port, adminport, sslport, jmxport,
5540N/A rootDn, rootPwd, baseDn, remote.data)
2788N/A
2788N/A if changelogport != None:
2788N/A changelogServer = ChangelogServer(changelogport, serverId)
2788N/A for item in changelogList:
2788N/A srv = item[:item.find(':')]
2788N/A prt = item[item.find(':') + 1:]
2788N/A changelogServer.addChangelogServer(srv, prt)
2788N/A server.addChangelogServer(changelogServer)
2788N/A
2788N/A for suffix in suffixList:
2788N/A synchroSuffix = SynchronizedSuffix(suffix, serverId)
2788N/A for item in changelogList:
2788N/A srv = item[:item.find(':')]
2788N/A prt = item[item.find(':') + 1:]
2788N/A synchroSuffix.addChangelogServer(srv, prt)
2788N/A server.addSynchronizedSuffix(synchroSuffix)
2788N/A
2788N/A _topologyServerList.append(server)
2788N/A
2788N/A hostname = None
2788N/A dir = None
2788N/A port = None
3853N/A adminport = None
2788N/A sslport = None
2788N/A jmxport = None
2788N/A rootDn = None
2788N/A rootPwd = None
2788N/A baseDn = None
2788N/A changelogport = None
2788N/A suffixList = []
2788N/A changelogList = []
2788N/A serverId += 1
2788N/A
2788N/A if hostname != None:
3853N/A server = Server(hostname, dir, port, adminport, sslport, jmxport,
5540N/A rootDn, rootPwd, baseDn, remote.data)
2788N/A
2788N/A if changelogport != None:
2788N/A changelogServer = ChangelogServer(changelogport, serverId)
2788N/A for item in changelogList:
2788N/A srv = item[:item.find(':')]
2788N/A prt = item[item.find(':') + 1:]
2788N/A changelogServer.addChangelogServer(srv, prt)
2788N/A server.addChangelogServer(changelogServer)
2788N/A
2788N/A for suffix in suffixList:
2788N/A synchroSuffix = SynchronizedSuffix(suffix, serverId)
2788N/A for item in changelogList:
2788N/A srv = item[:item.find(':')]
2788N/A prt = item[item.find(':') + 1:]
2788N/A synchroSuffix.addChangelogServer(srv, prt)
2788N/A server.addSynchronizedSuffix(synchroSuffix)
2788N/A
2788N/A _topologyServerList.append(server)
2788N/A
2788N/A f.close()
2788N/A </script>
2788N/A </sequence>
2788N/A </function>
2788N/A
2788N/A
2788N/A
2788N/A <function name="removeInstance">
2788N/A <function-prolog>
2788N/A This function removes an instance on a given host.
2788N/A </function-prolog>
2788N/A
2788N/A <function-map-args>
3071N/A <function-arg-def name="dsHost"
3071N/A type="optional"
3071N/A default="DIRECTORY_INSTANCE_HOST">
2788N/A <function-arg-description>
2788N/A Hostname where the instance is to be created
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="hostname"/>
2788N/A </function-arg-def>
3071N/A <function-arg-def name="dsDir"
3071N/A type="optional"
3071N/A default="DIRECTORY_INSTANCE_DIR">
2788N/A <function-arg-description>
2788N/A Directory where OpenDS will be installed
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="filepath"/>
2788N/A </function-arg-def>
2788N/A </function-map-args>
2788N/A
2788N/A <sequence>
2788N/A <message>
2788N/A 'Removing instance %s/%s on host %s' % (dsDir,OPENDSNAME,dsHost)
2788N/A </message>
2788N/A
2788N/A <!-- ON REMOTE HOST: remove files and folders -->
2788N/A <!--- Delete staging data file on remote host-->
2788N/A <message>
2788N/A 'Delete staging data file %s/testdata.zip' % dsDir
2788N/A </message>
2788N/A <call function="'deleteFile'">
2788N/A { 'location' : dsHost,
2788N/A 'filename' : '%s/testdata.zip' % dsDir
2788N/A }
2788N/A </call>
2788N/A </sequence>
2788N/A </function>
2788N/A
2788N/A
2788N/A
2788N/A <function name="removeTopology">
2788N/A <function-prolog>
2788N/A This function removes the topology created for the Test Group/Suite.
2788N/A </function-prolog>
2788N/A <function-map-args>
3071N/A <function-arg-def name="multipleInstanceTopology"
3071N/A type="optional"
3071N/A default="False">
2788N/A <function-arg-description>
2788N/A Tells whether it is a single (i.e. parameters read from config.py) or
3071N/A a multiple-instance topology (i.e. parameters read from topology desc
3071N/A file).
2788N/A </function-arg-description>
2788N/A <function-arg-property name="type" value="boolean"/>
2788N/A </function-arg-def>
2788N/A </function-map-args>
2788N/A <sequence>
2788N/A <if expr="multipleInstanceTopology == False">
3071N/A <!-- SINGLE instance deployment: parameters read from config.py (done by
3071N/A default) -->
2788N/A <call function="'removeInstance'" />
2788N/A <else>
3071N/A <!-- MULTIPLE instance deployment: parameters read from
3071N/A topologyDescFile -->
4631N/A <iterate var="server" in="_splitServerList">
2788N/A <call function="'removeInstance'">
2788N/A { 'dsHost' : server.getHostname(),
2788N/A 'dsDir' : server.getDir()
2788N/A }
2788N/A </call>
2788N/A </iterate>
2788N/A </else>
2788N/A </if>
2788N/A </sequence>
2788N/A </function>
3071N/A
3071N/A
3071N/A
3071N/A <!-- Prepare instance(s) for external re-initialisation of replicated suffix
3071N/A using dsreplication -->
3071N/A <function name="preInitializeReplication">
3071N/A <function-prolog>
3071N/A This function prepares one or all instances in a topology for the external
3071N/A re-initialisation of replicated suffixes using dsreplication.
3071N/A </function-prolog>
3071N/A <function-map-args>
3071N/A <function-arg-def name="location"
3071N/A type="optional"
3071N/A default="STAF_REMOTE_HOSTNAME">
3071N/A <function-arg-description>
3071N/A Location of target host
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="hostname" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="dsPath"
3071N/A type="optional"
4153N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
3071N/A <function-arg-description>
3071N/A Pathname to installation root
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="filepath" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="dsInstanceHost"
3071N/A type="optional"
3071N/A default="None">
3071N/A <function-arg-description>
3071N/A Directory server hostname or IP address
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="hostname" />
3071N/A </function-arg-def>
3071N/A
3853N/A <function-arg-def name="dsInstanceAdminPort"
3071N/A type="optional"
3071N/A default="None">
3071N/A <function-arg-description>
3853N/A Directory server admin port number
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="Port number" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="localOnly"
3071N/A type="optional"
3071N/A default="None">
3071N/A <function-arg-description>
3071N/A Only the contents of the specified server will be initialised.
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="boolean" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="replicationDnList" type="required">
3071N/A <function-arg-description>
3071N/A DN of the replicated suffix
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="DN list" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="adminUID"
3071N/A type="optional"
3071N/A default="AdminUID">
3071N/A <function-arg-description>
3071N/A Global Administrator UID
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="UID" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="adminPswd"
3071N/A type="optional"
3071N/A default="AdminPswd">
3071N/A <function-arg-description>
3071N/A Global Administrator password
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="string" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="expectedRC" type="optional" default="0">
3071N/A <function-arg-description>
3071N/A Expected return code value. Default value is 0
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="string" />
3071N/A </function-arg-def>
3071N/A </function-map-args>
3071N/A <sequence>
3071N/A <message>
3071N/A 'Preparing instance %s:%s for external initialization' \
3853N/A % (dsInstanceHost,dsInstanceAdminPort)
3071N/A </message>
3071N/A
3071N/A <!-- Local variables -->
3071N/A <script>
3071N/A STAFCmdParams=''
3071N/A STAFCmd=''
3071N/A
3071N/A if dsPath:
3071N/A dsBinPath='%s/%s' % (dsPath,fileFolder)
3071N/A STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
3071N/A
3071N/A STAFCmdParamsList=[]
3071N/A
3071N/A STAFCmdParamsList.append('pre-external-initialization')
3071N/A STAFCmdParamsList.append('-n')
3071N/A STAFCmdParamsList.append('-Q')
3853N/A STAFCmdParamsList.append('-X')
3071N/A
3071N/A if dsInstanceHost:
3071N/A STAFCmdParamsList.append('-h %s' % dsInstanceHost)
3071N/A
3853N/A if dsInstanceAdminPort:
3853N/A STAFCmdParamsList.append('-p %s' % dsInstanceAdminPort)
3071N/A
3071N/A if localOnly:
3071N/A STAFCmdParamsList.append('-l')
3071N/A
3071N/A if replicationDnList:
3071N/A for dn in replicationDnList:
3071N/A STAFCmdParamsList.append('-b "%s"' % dn)
3071N/A
3071N/A if adminUID:
3071N/A STAFCmdParamsList.append('-I "%s"' % adminUID)
3071N/A
3071N/A if adminPswd:
3071N/A STAFCmdParamsList.append('-w "%s"' % adminPswd)
3071N/A
3071N/A STAFCmdParams=' '.join(STAFCmdParamsList)
3071N/A </script>
3071N/A <call function="'runCommand'">
5061N/A { 'name' : 'Pre-Initialize Replication',
5061N/A 'location' : location,
5061N/A 'command' : STAFCmd,
6184N/A 'arguments' : STAFCmdParams
3071N/A }
3071N/A </call>
3071N/A <script>
3071N/A STAXCode=RC
3071N/A STAXReason=STAXResult
3071N/A </script>
3071N/A <call function="'checktestRC'">
3071N/A { 'returncode' : STAXCode,
3071N/A 'result' : STAXReason,
3071N/A 'expected' : expectedRC
3071N/A }
3071N/A </call>
3071N/A <return>
3071N/A STAXReason
3071N/A </return>
3071N/A </sequence>
3071N/A </function>
3071N/A
3071N/A
3071N/A
3071N/A
3071N/A <!-- End process of instance(s) external re-initialisation of replicated
3071N/A suffix using dsreplication -->
3071N/A <function name="postInitializeReplication">
3071N/A <function-prolog>
3071N/A This function ends the process of the external re-initialisation of
3071N/A replicated suffixes in one or all instances in a topology using
3071N/A dsreplication.
3071N/A </function-prolog>
3071N/A <function-map-args>
3071N/A <function-arg-def name="location"
3071N/A type="optional"
3071N/A default="STAF_REMOTE_HOSTNAME">
3071N/A <function-arg-description>
3071N/A Location of target host
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="hostname" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="dsPath"
3071N/A type="optional"
4153N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
3071N/A <function-arg-description>
3071N/A Pathname to installation root
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="filepath" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="dsInstanceHost"
3071N/A type="optional"
3071N/A default="None">
3071N/A <function-arg-description>
3071N/A Directory server hostname or IP address
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="hostname" />
3071N/A </function-arg-def>
3071N/A
3853N/A <function-arg-def name="dsInstanceAdminPort"
3071N/A type="optional"
3071N/A default="None">
3071N/A <function-arg-description>
3853N/A Directory server admin port number
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="Port number" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="replicationDnList" type="required">
3071N/A <function-arg-description>
3071N/A DN of the replicated suffix
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="DN list" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="adminUID"
3071N/A type="optional"
3071N/A default="AdminUID">
3071N/A <function-arg-description>
3071N/A Global Administrator UID
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="UID" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="adminPswd"
3071N/A type="optional"
3071N/A default="AdminPswd">
3071N/A <function-arg-description>
3071N/A Global Administrator password
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="string" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="expectedRC" type="optional" default="0">
3071N/A <function-arg-description>
3071N/A Expected return code value. Default value is 0
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="string" />
3071N/A </function-arg-def>
3071N/A </function-map-args>
3071N/A <sequence>
3071N/A <message>
3071N/A 'Post-processing external initialization of instance %s:%s' \
3853N/A % (dsInstanceHost,dsInstanceAdminPort)
3071N/A </message>
3071N/A
3071N/A <!-- Local variables -->
3071N/A <script>
3071N/A STAFCmdParams=''
3071N/A STAFCmd=''
3071N/A
3071N/A if dsPath:
3071N/A dsBinPath='%s/%s' % (dsPath,fileFolder)
3071N/A STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
3071N/A
3071N/A STAFCmdParamsList=[]
3071N/A
3071N/A STAFCmdParamsList.append('post-external-initialization')
3071N/A STAFCmdParamsList.append('-n')
3071N/A STAFCmdParamsList.append('-Q')
3853N/A STAFCmdParamsList.append('-X')
3853N/A
3071N/A if dsInstanceHost:
3071N/A STAFCmdParamsList.append('-h %s' % dsInstanceHost)
3071N/A
3853N/A if dsInstanceAdminPort:
3853N/A STAFCmdParamsList.append('-p %s' % dsInstanceAdminPort)
3071N/A
3071N/A if replicationDnList:
3071N/A for dn in replicationDnList:
3071N/A STAFCmdParamsList.append('-b "%s"' % dn)
3071N/A
3071N/A if adminUID:
3071N/A STAFCmdParamsList.append('-I "%s"' % adminUID)
3071N/A
3071N/A if adminPswd:
3071N/A STAFCmdParamsList.append('-w "%s"' % adminPswd)
3071N/A
3071N/A STAFCmdParams=' '.join(STAFCmdParamsList)
3071N/A </script>
3071N/A <call function="'runCommand'">
5061N/A { 'name' : 'Post-Initialize Replication',
5061N/A 'location' : location,
5061N/A 'command' : STAFCmd,
6184N/A 'arguments' : STAFCmdParams
3071N/A }
3071N/A </call>
3071N/A <script>
3071N/A STAXCode=RC
3071N/A STAXReason=STAXResult
3071N/A </script>
3071N/A <call function="'checktestRC'">
3071N/A { 'returncode' : STAXCode,
3071N/A 'result' : STAXReason,
3071N/A 'expected' : expectedRC
3071N/A }
3071N/A </call>
3071N/A <return>
3071N/A STAXReason
3071N/A </return>
3071N/A </sequence>
3071N/A </function>
3071N/A
3071N/A
3071N/A
3071N/A <!-- Reset replicated suffix with the backup of a source server using
3071N/A dsreplication -->
3071N/A <function name="resetReplicationData">
3071N/A <function-prolog>
3071N/A This function resets the data in a replicated suffix with the backup
3071N/A of a source server and re-initialises the topology using dsreplication.
3071N/A </function-prolog>
3071N/A <function-map-args>
3071N/A <function-arg-def name="location"
3071N/A type="optional"
3071N/A default="STAF_REMOTE_HOSTNAME">
3071N/A <function-arg-description>
3071N/A Location of target host
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="hostname" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="dsPath"
3071N/A type="optional"
4153N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
3071N/A <function-arg-description>
3071N/A Pathname to installation root
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="filepath" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="sourceInstanceHost"
3071N/A type="optional"
3071N/A default="None">
3071N/A <function-arg-description>
3071N/A Directory server hostname or IP address
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="hostname" />
3071N/A </function-arg-def>
3853N/A
3071N/A <function-arg-def name="sourceInstancePort"
3071N/A type="optional"
3071N/A default="None">
3071N/A <function-arg-description>
3071N/A Directory server port number
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="Port number" />
3071N/A </function-arg-def>
3853N/A
3853N/A <function-arg-def name="sourceInstanceAdminPort"
3853N/A type="optional"
3853N/A default="None">
3853N/A <function-arg-description>
3853N/A Directory server admin port number
3853N/A </function-arg-description>
3853N/A <function-arg-property name="type" value="Port number" />
3853N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="sourceInstanceDn" type="required">
3071N/A <function-arg-description>
3071N/A Bind DN
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="DN" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="sourceInstancePswd" type="required">
3071N/A <function-arg-description>
3071N/A Bind password
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="string" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="backupDir" type="required">
3071N/A <function-arg-description>
3071N/A The name of the backup directory
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="pathname"/>
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="suffixDn" type="required">
3071N/A <function-arg-description>
3071N/A DN of the replicated suffix
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="DN" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="adminUID"
3071N/A type="optional"
3071N/A default="AdminUID">
3071N/A <function-arg-description>
3071N/A Global Administrator UID
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="UID" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="adminPswd"
3071N/A type="optional"
3071N/A default="AdminPswd">
3071N/A <function-arg-description>
3071N/A Global Administrator password
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="string" />
3071N/A </function-arg-def>
3071N/A
3071N/A <function-arg-def name="expectedRC"
3071N/A type="optional"
3071N/A default="0">
3071N/A <function-arg-description>
3071N/A Expected return code value. Default value is 0
3071N/A </function-arg-description>
3071N/A <function-arg-property name="type" value="string" />
3071N/A </function-arg-def>
3071N/A </function-map-args>
3071N/A <sequence>
3071N/A <message>
3071N/A 'Resetting %s data in replication topology using backup %s on instance \
3853N/A %s:%s' % (suffixDn,backupDir,sourceInstanceHost,sourceInstanceAdminPort)
3071N/A </message>
3071N/A
3071N/A
3071N/A <!-- Pre-initialise the servers in the topology -->
3071N/A <call function="'preInitializeReplication'">
3853N/A { 'location' : location,
3853N/A 'dsPath' : dsPath,
3853N/A 'dsInstanceHost' : sourceInstanceHost,
3853N/A 'dsInstanceAdminPort' : sourceInstanceAdminPort,
3853N/A 'localOnly' : False,
3853N/A 'replicationDnList' : [suffixDn],
3853N/A 'adminUID' : adminUID,
3853N/A 'adminPswd' : adminPswd
3071N/A }
3071N/A </call>
3071N/A
3071N/A <script>
3071N/A import random
3071N/A import java.util.Date
3071N/A random.seed(java.util.Date().getTime())
3071N/A resetCounter = '%s#%d' \
3071N/A % (strftime('%Y-%m-%d %H:%M:%S',localtime()),random.randint(0,999))
3071N/A </script>
3071N/A <!-- Restore the data in the server -->
3071N/A <call function="'restoreTask'">
3071N/A { 'location' : location,
3071N/A 'dsPath' : dsPath,
3071N/A 'dsInstanceHost' : sourceInstanceHost,
3071N/A 'dsInstancePort' : sourceInstancePort,
3071N/A 'dsInstanceDn' : sourceInstanceDn,
3071N/A 'dsInstancePswd' : sourceInstancePswd,
3071N/A 'taskID' : 'restore task - %s' % resetCounter,
3071N/A 'backupDir' : backupDir
3071N/A }
3071N/A </call>
3071N/A
3071N/A <!-- Post-initialise the servers in the topology -->
3071N/A <call function="'postInitializeReplication'">
3853N/A { 'location' : location,
3853N/A 'dsPath' : dsPath,
3853N/A 'dsInstanceHost' : sourceInstanceHost,
3853N/A 'dsInstanceAdminPort' : sourceInstanceAdminPort,
3853N/A 'replicationDnList' : [suffixDn],
3853N/A 'adminUID' : adminUID,
3853N/A 'adminPswd' : adminPswd
3071N/A }
3071N/A </call>
3071N/A
3071N/A
3071N/A <!-- Initialise the servers in the topology -->
3071N/A <call function="'initializeReplication'">
3853N/A { 'location' : location,
3853N/A 'dsPath' : dsPath,
3853N/A 'sourceInstanceHost' : sourceInstanceHost,
3853N/A 'sourceInstanceAdminPort' : sourceInstanceAdminPort,
3853N/A 'replicationDnList' : [suffixDn],
3853N/A 'adminUID' : adminUID,
3853N/A 'adminPswd' : adminPswd
3071N/A }
3071N/A </call>
3071N/A
3071N/A <script>
3071N/A STAXCode=RC
3071N/A STAXReason=STAXResult
3071N/A </script>
3071N/A <call function="'checktestRC'">
3071N/A { 'returncode' : STAXCode,
3071N/A 'result' : STAXReason,
3071N/A 'expected' : expectedRC
3071N/A }
3071N/A </call>
3071N/A <return>
3071N/A STAXReason
3071N/A </return>
3071N/A </sequence>
3071N/A </function>
3071N/A
4495N/A <function name="common_setup" scope="local">
4495N/A <function-prolog>
4495N/A This function helps to perform a common setup and data load of directory server.
4495N/A </function-prolog>
4495N/A <function-map-args>
4495N/A <function-arg-def name="directoryServer" type="optional" default="server">
4495N/A <function-arg-description>
4495N/A The directory server object instance
4495N/A </function-arg-description>
4495N/A <function-arg-property name="type" value="boolean"/>
4495N/A </function-arg-def>
4495N/A <function-arg-def name="quickStart" type="optional" default="True">
4495N/A <function-arg-description>
4495N/A Perform a quick start of the server with preloaded data
4495N/A </function-arg-description>
4495N/A <function-arg-property name="type" value="boolean"/>
4495N/A </function-arg-def>
4495N/A <function-arg-def name="loadData" type="optional" default="True">
4495N/A <function-arg-description>
4495N/A Load data into the server
4495N/A </function-arg-description>
4495N/A <function-arg-property name="type" value="boolean"/>
4495N/A </function-arg-def>
4495N/A <function-arg-def name="startServer" type="optional" default="True">
4495N/A <function-arg-description>
4495N/A Start the server
4495N/A </function-arg-description>
4495N/A <function-arg-property name="type" value="boolean"/>
4495N/A </function-arg-def>
4495N/A <function-arg-def name="stopServer" type="optional" default="True">
4495N/A <function-arg-description>
4495N/A Stop the server
4495N/A </function-arg-description>
4495N/A <function-arg-property name="type" value="boolean"/>
4495N/A </function-arg-def>
4495N/A <function-arg-def name="ldifFile" type="optional" default="''">
4495N/A <function-arg-description>
4495N/A Path and name of the ldif file to be used to add entries
4495N/A </function-arg-description>
4495N/A <function-arg-property name="type" value="structure"/>
4495N/A </function-arg-def>
4495N/A <function-arg-def name="allowPreEncodePassword" type="optional" default="False">
4495N/A <function-arg-description>
4495N/A Allow pre-encoded passwords to be added
4495N/A </function-arg-description>
4495N/A <function-arg-property name="boolean" value="True|False"/>
4495N/A </function-arg-def>
5688N/A <function-arg-def name="generateLDIF" type="optional" default="False">
5688N/A <function-arg-description>
5688N/A Generate with makeldif the ldif file to be imported
5688N/A </function-arg-description>
5688N/A <function-arg-property name="boolean" value="True|False"/>
5688N/A </function-arg-def>
5688N/A <function-arg-def name="ldifTemplate" type="optional" default="''">
5688N/A <function-arg-description>
5688N/A Path and name of the ldif template to be used to generate entries
5688N/A </function-arg-description>
5688N/A <function-arg-property name="type" value="structure"/>
5688N/A </function-arg-def>
5784N/A <function-arg-def name="friendlyName" type="optional" default="'Common'">
5784N/A <function-arg-description>
5784N/A Friendly name for the common setup launcher
5784N/A </function-arg-description>
5784N/A <function-arg-property name="type" value="structure"/>
5784N/A </function-arg-def>
4495N/A </function-map-args>
5688N/A
4495N/A <sequence>
4495N/A
4495N/A <block name="'common-setup'">
4495N/A
5784N/A <testcase name="getTestCaseName('%s Setup' % friendlyName)">
4495N/A
4495N/A <try>
4495N/A
4495N/A <sequence>
4495N/A
4495N/A <call function="'testCase_Preamble'"/>
4495N/A
4495N/A <!-- Create the topology necessary to the test group/suite -->
4495N/A <call function="'runFunction'">
4495N/A { 'functionName' : 'createTopology' ,
4495N/A 'functionMessage' : 'Create DS topology' ,
4495N/A 'functionException' : 'Server.CreateTopologyException' ,
4495N/A 'functionArguments' : { 'initialiseInstance' : quickStart }
4495N/A }
4495N/A </call>
4495N/A
4495N/A <if expr="startServer == True">
4495N/A <sequence>
4495N/A <!-- Start the OpenDS Server -->
4495N/A <call function="'runFunction'">
4495N/A { 'functionName' : 'StartDsWithScript' ,
4495N/A 'functionMessage' : 'Start the Directory Server.' ,
4495N/A 'functionException' : 'Server.StartException' ,
4495N/A 'functionArguments' : { 'location' : directoryServer.location }
4495N/A }
4495N/A </call>
4495N/A
4495N/A <!--- Check that DS started -->
4495N/A <call function="'runFunction'">
4495N/A { 'functionName' : 'isAlive' ,
4495N/A 'functionMessage' : 'Start the Directory Server.' ,
4495N/A 'functionException' : 'Server.StartException' ,
4495N/A 'functionArguments' : { 'noOfLoops' : 100 ,
4495N/A 'noOfMilliSeconds' : 3000 }
4495N/A }
4495N/A </call>
4495N/A </sequence>
4495N/A </if>
4495N/A
5688N/A <!-- TODO: generate ldif file -->
5688N/A <if expr="generateLDIF == True and ldifTemplate and ldifFile">
5688N/A <sequence>
5688N/A <message>
5688N/A 'Generating ldif file (%s) from template (%s)' % (ldifFile,ldifTemplate)
5688N/A </message>
5688N/A </sequence>
5688N/A </if>
5688N/A
5688N/A <if expr="loadData == True and ldifFile and startServer == True">
4495N/A <sequence>
4495N/A
5688N/A <message>
5688N/A 'On-line import.'
5688N/A </message>
5688N/A
4495N/A <if expr="allowPreEncodePassword == True">
4495N/A <call function="'dsconfigSet'">
4495N/A {
4495N/A 'dsInstanceHost' : directoryServer.host,
4495N/A 'dsInstanceAdminPort' : directoryServer.adminport,
4495N/A 'dsInstanceDn' : directoryServer.dn,
4495N/A 'dsInstancePswd' : directoryServer.password,
4495N/A 'objectName' : 'password-policy',
4495N/A 'propertyType' : 'policy',
4495N/A 'propertyName' : 'Default Password Policy',
4495N/A 'attributeName' : 'allow-pre-encoded-passwords',
4495N/A 'attributeValue' : 'true'
4495N/A }
4495N/A </call>
4495N/A </if>
4495N/A
4495N/A <!-- Load the data needed by the test suite -->
4495N/A <call function="'runFunction'">
4495N/A { 'functionName' : 'ldapModifyWithScript' ,
4495N/A 'functionMessage' : 'Adding Initial Entries' ,
4495N/A 'functionException' : 'LDAP.ModifyException' ,
4495N/A 'functionArguments' : { 'dsAdd' : 'TRUE' ,
4495N/A 'dsInstanceHost' : directoryServer.host ,
4495N/A 'dsInstancePort' : directoryServer.port ,
4495N/A 'dsInstanceDn' : directoryServer.dn ,
4495N/A 'dsInstancePswd' : directoryServer.password ,
4495N/A 'dsFilename' : ldifFile }
4495N/A }
4495N/A </call>
4495N/A </sequence>
4495N/A </if>
4495N/A
5688N/A <if expr="loadData == True and ldifFile and startServer == False">
5688N/A <sequence>
5688N/A <message>
5688N/A 'Off-line import.'
5688N/A </message>
5688N/A
5688N/A <call function="'runFunction'">
5688N/A { 'functionName' : 'ImportLdifWithScript' ,
5688N/A 'functionMessage' : 'Off-line Import LDIF.' ,
5688N/A 'functionException' : 'Server.ImportException' ,
5688N/A 'functionArguments' : { 'location' : directoryServer.location ,
5688N/A 'ldifFile' : ldifFile ,
5688N/A 'backEnd' : directoryServer.backend }
5688N/A }
5688N/A </call>
5688N/A
5688N/A <call function="'runFunction'">
5688N/A { 'functionName' : 'StartDsWithScript' ,
5688N/A 'functionMessage' : 'Start the Directory Server.' ,
5688N/A 'functionException' : 'Server.ImportException' ,
5688N/A 'functionArguments' : { 'location' : directoryServer.location }
5688N/A }
5688N/A </call>
5688N/A
5688N/A <call function="'runFunction'">
5688N/A { 'functionName' : 'isAlive' ,
5688N/A 'functionMessage' : 'Check the Directory Server has started.' ,
5688N/A 'functionException' : 'Server.ImportException' ,
5688N/A 'functionArguments' : { 'location' : directoryServer.location ,
5688N/A 'noOfLoops' : 10 ,
5688N/A 'noOfMilliSeconds' : 2000 }
5688N/A }
5688N/A </call>
5688N/A
5688N/A </sequence>
5688N/A </if>
5688N/A
4495N/A <if expr="stopServer == True">
4495N/A <sequence>
4495N/A <!-- Stop the OpenDS Server -->
4495N/A <call function="'runFunction'">
5688N/A { 'functionName' : 'StartDsWithScript' ,
5688N/A 'functionMessage' : 'Stop the Directory Server.' ,
4495N/A 'functionException' : 'Server.StopException' ,
4495N/A 'functionArguments' : { 'location' : directoryServer.location }
4495N/A }
4495N/A </call>
4495N/A </sequence>
4495N/A </if>
4495N/A
4495N/A </sequence>
4495N/A
4495N/A <catch exception="'STAXException.Server.CreateTopologyException'" typevar="eType" var="eInfo">
4495N/A <sequence>
4495N/A <message log="1" level="'fatal'">
4495N/A '%s: Create topology failed. eInfo(%s)' % (eType,eInfo)
4495N/A </message>
4495N/A <throw exception="'STAFException.TestSuite.SetupException'" />
4495N/A </sequence>
4495N/A </catch>
4495N/A
4495N/A <catch exception="'STAXException.Server.StartException'" typevar="eType" var="eInfo">
4495N/A <sequence>
4495N/A <message log="1" level="'fatal'">
4495N/A '%s: Failed to start Directory Server. eInfo(%s)' % (eType,eInfo)
4495N/A </message>
4495N/A <throw exception="'STAFException.TestSuite.SetupException'" />
4495N/A </sequence>
4495N/A </catch>
4495N/A
5688N/A <catch exception="'STAXException.Server.ImportException'" typevar="eType" var="eInfo">
5688N/A <sequence>
5688N/A <message log="1" level="'fatal'">
5688N/A '%s: Failed to import ldif file. eInfo(%s)' % (eType,eInfo)
5688N/A </message>
5688N/A <throw exception="'STAFException.TestSuite.SetupException'" />
5688N/A </sequence>
5688N/A </catch>
5688N/A
4495N/A <catch exception="'STAXException.Server.StopException'" typevar="eType" var="eInfo">
4495N/A <sequence>
4495N/A <message log="1" level="'fatal'">
4495N/A '%s: Failed to stop Directory Server. eInfo(%s)' % (eType,eInfo)
4495N/A </message>
4495N/A <throw exception="'STAFException.TestSuite.SetupException'" />
4495N/A </sequence>
4495N/A </catch>
4495N/A
4495N/A <catch exception="'STAXException.LDAP.ModifyException'" typevar="eType" var="eInfo">
4495N/A <sequence>
4495N/A <message log="1" level="'fatal'">
4495N/A '%s: LDAPModify failed. eInfo(%s)' % (eType,eInfo)
4495N/A </message>
4495N/A <throw exception="'STAFException.TestSuite.SetupException'" />
4495N/A </sequence>
4495N/A </catch>
4495N/A
4495N/A <finally>
4495N/A <!-- Test Group postamble -->
4495N/A <sequence>
4495N/A <call function="'testCase_Postamble'"/>
4495N/A </sequence>
4495N/A </finally>
4495N/A
4495N/A </try>
4495N/A
4495N/A </testcase>
4495N/A
4495N/A </block>
4495N/A
4495N/A </sequence>
4495N/A
4495N/A </function>
4495N/A
4495N/A <function name="common_cleanup" scope="local">
4495N/A <function-prolog>
4495N/A This function helps to perform a common cleanup of directory server and its data.
4495N/A </function-prolog>
4495N/A <function-map-args>
4495N/A <function-arg-def name="directoryServer" type="optional" default="server">
4495N/A <function-arg-description>
4495N/A The directory server object instance
4495N/A </function-arg-description>
4495N/A <function-arg-property name="type" value="boolean"/>
4495N/A </function-arg-def>
4495N/A <function-arg-def name="deleteSuffix" type="optional" default="True">
4495N/A <function-arg-description>
4495N/A Delete the suffix that holds the directory data
4495N/A </function-arg-description>
4495N/A <function-arg-property name="type" value="boolean"/>
4495N/A </function-arg-def>
5784N/A <function-arg-def name="friendlyName" type="optional" default="'Common'">
5784N/A <function-arg-description>
5784N/A Friendly name for the common cleanup launcher
5784N/A </function-arg-description>
5784N/A <function-arg-property name="type" value="structure"/>
5784N/A </function-arg-def>
4495N/A </function-map-args>
4495N/A <sequence>
4495N/A
4495N/A <block name="'common-cleanup'">
4495N/A
5784N/A <testcase name="getTestCaseName('%s Cleanup' % friendlyName)">
4495N/A
4495N/A <try>
4495N/A
4495N/A <sequence>
4495N/A <call function="'testCase_Preamble'"/>
4495N/A
4495N/A <call function="'runFunction'">
4495N/A { 'functionName' : 'ldapSearchWithScript' ,
4495N/A 'functionMessage' : 'Check Server is Alive.' ,
4495N/A 'functionArguments' : { 'dsInstanceHost' : directoryServer.host ,
4495N/A 'dsInstancePort' : directoryServer.port ,
4495N/A 'dsBaseDN' : 'cn=config' ,
4495N/A 'dsInstanceDn' : directoryServer.dn ,
4495N/A 'dsInstancePswd' : directoryServer.password ,
4495N/A 'dsFilter' : 'objectclass=*' ,
4495N/A 'dsScope' : 'base' ,
4495N/A 'expectedRC' : 'noCheck'
4495N/A }
4495N/A }
4495N/A </call>
4495N/A
4495N/A <script>
4495N/A _returncode=int(STAXResult[0])
4495N/A </script>
4495N/A
4495N/A <if expr="deleteSuffix == True">
4495N/A <sequence>
4495N/A <!-- If directoryServer is not running we have to restart it -->
4495N/A <if expr="_returncode == 91">
4495N/A
4495N/A <call function="'runFunction'">
4495N/A { 'functionName' : 'StartDsWithScript' ,
4495N/A 'functionMessage' : 'Start the Directory Server.' ,
4495N/A 'functionArguments' : { 'expectedRC' : 'noCheck' }
4495N/A }
4495N/A </call>
4495N/A </if>
4495N/A
4495N/A <call function="'runFunction'">
4495N/A { 'functionName' : 'ldapDeleteWithScript' ,
4495N/A 'functionMessage' : 'Recursive delete of suffix.' ,
4495N/A 'functionArguments' : { 'dsDeleteSubtree' : 'TRUE' ,
4495N/A 'dsInstanceHost' : directoryServer.host ,
4495N/A 'dsInstancePort' : directoryServer.port ,
4495N/A 'dsInstanceDn' : directoryServer.dn ,
4495N/A 'dsInstancePswd' : directoryServer.password ,
4495N/A 'dsDn' : ['%s' % server.suffix] ,
6184N/A 'expectedRC' : 'noCheck' }
4495N/A }
4495N/A </call>
4495N/A </sequence>
4495N/A </if>
4495N/A
4495N/A <call function="'runFunction'">
4495N/A { 'functionName' : 'StopDsWithScript' ,
4495N/A 'functionMessage' : 'Stop the Directory Server.' ,
4495N/A 'functionArguments' : { 'dsHost' : directoryServer.host ,
4495N/A 'dsAdminPort' : directoryServer.adminport ,
4495N/A 'dsBindDN' : directoryServer.dn ,
4495N/A 'dsBindPwd' : directoryServer.password ,
4495N/A 'expectedRC' : 'noCheck' }
4495N/A }
4495N/A </call>
4495N/A
4495N/A <call function="'runFunction'">
4495N/A { 'functionName' : 'removeTopology' ,
4495N/A 'functionMessage' : 'Remove DS topology.' ,
4495N/A }
4495N/A </call>
4495N/A
4495N/A <tcstatus result="'pass'"></tcstatus>
4495N/A
4495N/A </sequence>
4495N/A
4495N/A <catch exception="'STAXException.LDAP.DeleteException'" typevar="eType" var="eInfo">
4495N/A <sequence>
4495N/A <message log="1" level="'fatal'">
4495N/A '%s: LDAPDelete failed. eInfo(%s)' % (eType,eInfo)
4495N/A </message>
4495N/A <throw exception="'STAFException.TestSuite.CleanupException'" />
4495N/A </sequence>
4495N/A </catch>
4495N/A
4495N/A <catch exception="'STAXException'" typevar="eType" var="eInfo">
4495N/A <sequence>
4495N/A <message log="1" level="'fatal'">
4495N/A '%s: Failed to cleanup. eInfo(%s)' % (eType,eInfo)
4495N/A </message>
4495N/A <throw exception="'STAFException.TestSuite.CleanupException'" />
4495N/A </sequence>
4495N/A </catch>
4495N/A <finally>
4495N/A <!-- Test Group postamble -->
4495N/A <call function="'testCase_Postamble'"/>
4495N/A </finally>
4495N/A
4495N/A </try>
4495N/A
4495N/A </testcase>
4495N/A
4495N/A </block>
4495N/A
4495N/A </sequence>
4495N/A
4495N/A </function>
4616N/A
4616N/A
4616N/A <!-- Get replication status using dsreplication, and check for missing changes
4616N/A or inconsistencies in the number of entries across the topology -->
4616N/A <function name="getReplicationStatus">
4616N/A <function-prolog>
4616N/A This function gets the replication status of a topology using
4616N/A dsreplication.
4616N/A </function-prolog>
4616N/A <function-map-args>
4616N/A <function-arg-def name="location"
4616N/A type="optional"
4616N/A default="STAF_REMOTE_HOSTNAME">
4616N/A <function-arg-description>
4616N/A Location of target host
4616N/A </function-arg-description>
4616N/A <function-arg-property name="type" value="hostname" />
4616N/A </function-arg-def>
4616N/A
4616N/A <function-arg-def name="dsPath"
4616N/A type="optional"
4616N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
4616N/A <function-arg-description>
4616N/A Pathname to installation root
4616N/A </function-arg-description>
4616N/A <function-arg-property name="type" value="filepath" />
4616N/A </function-arg-def>
4616N/A
4616N/A <function-arg-def name="dsInstanceHost"
4616N/A type="optional"
4616N/A default="None">
4616N/A <function-arg-description>
4616N/A Directory server hostname or IP address
4616N/A </function-arg-description>
4616N/A <function-arg-property name="type" value="hostname" />
4616N/A </function-arg-def>
4616N/A
4616N/A <function-arg-def name="dsInstanceAdminPort"
4616N/A type="optional"
4616N/A default="None">
4616N/A <function-arg-description>
4616N/A Directory server admin port number
4616N/A </function-arg-description>
4616N/A <function-arg-property name="type" value="Port number" />
4616N/A </function-arg-def>
4616N/A
4616N/A
4616N/A
4616N/A <function-arg-def name="replicationDnList" type="required">
4616N/A <function-arg-description>
4616N/A DN of the replicated suffix
4616N/A </function-arg-description>
4616N/A <function-arg-property name="type" value="DN list" />
4616N/A </function-arg-def>
4616N/A
4616N/A <function-arg-def name="adminUID"
4648N/A type="optional"
4648N/A default="AdminUID">
4616N/A <function-arg-description>
4616N/A Global Administrator UID
4616N/A </function-arg-description>
4616N/A <function-arg-property name="type" value="UID" />
4616N/A </function-arg-def>
4616N/A
4616N/A <function-arg-def name="adminPswd"
4648N/A type="optional"
4648N/A default="AdminPswd">
4616N/A <function-arg-description>
4616N/A Global Administrator password
4616N/A </function-arg-description>
4616N/A <function-arg-property name="type" value="string" />
4648N/A </function-arg-def>
4648N/A
4648N/A <function-arg-def name="noOfLoops"
4648N/A type="optional"
4648N/A default="1">
4648N/A <function-arg-description>
4648N/A Number of iterations
4648N/A </function-arg-description>
4648N/A <function-arg-property name="type" value="integer"/>
4648N/A </function-arg-def>
4648N/A
4648N/A <function-arg-def name="noOfMilliSeconds"
4648N/A type="optional"
4648N/A default="0">
4648N/A <function-arg-description>
4648N/A Number of milliseconds to wait between iterations
4648N/A </function-arg-description>
4648N/A <function-arg-property name="type" value="seconds"/>
4648N/A </function-arg-def>
4616N/A
4616N/A <function-arg-def name="expectedRC" type="optional" default="0">
4616N/A <function-arg-description>
4616N/A Expected return code value. Default value is 0
4616N/A </function-arg-description>
4616N/A <function-arg-property name="type" value="string" />
4616N/A </function-arg-def>
4616N/A </function-map-args>
4616N/A <sequence>
4616N/A <message>
4616N/A 'Getting replication status from server %s:%s' \
4616N/A % (dsInstanceHost,dsInstanceAdminPort)
4616N/A </message>
4616N/A
4616N/A <!-- Local variables -->
4616N/A <script>
4616N/A STAFCmdParams=''
4616N/A STAFCmd=''
4616N/A
4616N/A if dsPath:
4616N/A dsBinPath='%s/%s' % (dsPath,fileFolder)
4616N/A STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
4616N/A
4616N/A STAFCmdParamsList=[]
4616N/A
4616N/A STAFCmdParamsList.append('status')
4616N/A STAFCmdParamsList.append('-n')
4616N/A STAFCmdParamsList.append('-X')
4616N/A # option for getting status in script-friendly format
4616N/A STAFCmdParamsList.append('-s')
4616N/A
4616N/A if dsInstanceHost:
4616N/A STAFCmdParamsList.append('-h %s' % dsInstanceHost)
4616N/A
4616N/A if dsInstanceAdminPort:
4616N/A STAFCmdParamsList.append('-p %s' % dsInstanceAdminPort)
4616N/A
4616N/A if replicationDnList:
4616N/A for dn in replicationDnList:
4616N/A STAFCmdParamsList.append('-b "%s"' % dn)
4616N/A
4616N/A if adminUID:
4616N/A STAFCmdParamsList.append('-I "%s"' % adminUID)
4616N/A
4616N/A if adminPswd:
4616N/A STAFCmdParamsList.append('-w "%s"' % adminPswd)
4616N/A
4616N/A STAFCmdParams=' '.join(STAFCmdParamsList)
4616N/A </script>
4648N/A
4648N/A <script>
4648N/A servernameList = []
4648N/A entriesList = []
4648N/A missingChangesList = []
4648N/A ageList = []
4648N/A replStatusRC = 0
4648N/A resultLength = 0
4648N/A refNbOfEntries = 'Unknown'
4648N/A refServername = 'Unknown'
4648N/A
4648N/A myLoop = 0
4648N/A missingRC = True
4616N/A </script>
4648N/A <loop from="1" to="noOfLoops" while="missingRC == True">
4648N/A <sequence>
4648N/A <script>
4648N/A myLoop = myLoop + 1
4648N/A missingRC = False
4648N/A </script>
4648N/A
4648N/A <call function="'runCommand'">
4648N/A { 'name' : 'Get Replication Status',
4648N/A 'location' : location,
4648N/A 'command' : STAFCmd,
4648N/A 'arguments' : STAFCmdParams
4648N/A }
4648N/A </call>
4648N/A
4648N/A <script>
4648N/A commandRC = RC
4648N/A commandResult = STAXResult
4648N/A </script>
4648N/A <call function="'checktestRC'">
4648N/A { 'returncode' : commandRC,
4648N/A 'result' : commandResult,
4648N/A 'expected' : expectedRC
4648N/A }
4648N/A </call>
4648N/A <if expr="commandRC != expectedRC">
4648N/A <return> commandResult </return>
4648N/A </if>
4648N/A
4648N/A <script>
4648N/A replStatusRC = commandResult[0][0]
4648N/A replStatusResult = commandResult[0][1]
4648N/A resultLength = len(replStatusResult) > 0
4648N/A </script>
4648N/A
4648N/A <if expr="(replStatusRC == 0) and (resultLength != 0)">
4648N/A <sequence>
4648N/A <script>
4648N/A servernameList = []
4648N/A entriesList = []
4648N/A missingChangesList = []
4648N/A ageList = []
4648N/A
4648N/A for line in replStatusResult.splitlines():
4648N/A if line.startswith('Server:'):
4648N/A server = line[line.find('Server:') + 7:].strip()
4648N/A servernameList.append(server)
4648N/A elif line.startswith('Entries:'):
4648N/A entries = line[line.find('Entries:') + 8:].strip()
4648N/A entriesList.append(entries)
4648N/A elif line.startswith('Missing Changes:'):
4648N/A missingChanges = line[line.find('Missing') + 16:].strip()
4648N/A missingChangesList.append(missingChanges)
4648N/A elif line.startswith('Age of oldest missing change:'):
4648N/A age = line[line.find('Age of') + 29:].strip()
4648N/A ageList.append(age)
4648N/A </script>
4648N/A
4648N/A <iterate var="missing" in="missingChangesList">
4648N/A <if expr="(missing != '0') and (missing != '--')">
4648N/A <sequence>
4648N/A <script>
4648N/A missingRC = True
4648N/A </script>
4648N/A <break/>
4648N/A </sequence>
4648N/A </if>
4648N/A </iterate>
4648N/A
4648N/A <message>
4648N/A 'getReplicationStatus LOOP %s => missingChanges? \
4648N/A (True=1/False=0) : %s' % (myLoop, missingRC)
4648N/A </message>
4648N/A
4648N/A <if expr="missingRC == True">
4648N/A <!-- If there are still missing changes, wait for some more time and
4648N/A ! give the servers a chance to synchronise -->
4648N/A <call function="'Sleep'">
4648N/A { 'sleepForMilliSeconds' : noOfMilliSeconds }
4648N/A </call>
4648N/A </if>
4648N/A </sequence>
4648N/A </if>
4648N/A
4648N/A </sequence>
4648N/A </loop>
4648N/A
4648N/A
4616N/A <if expr="(replStatusRC == 0) and (resultLength != 0)">
4616N/A <sequence>
4616N/A <message>
4616N/A 'getReplicationStatus: Replication status retrieved from server \
4616N/A %s:%s : \n%s ' % \
4616N/A (dsInstanceHost, dsInstanceAdminPort, replStatusResult)
4616N/A </message>
4648N/A
4648N/A <iterate var="entries" in="entriesList" indexvar="i">
4648N/A <if expr="entries.startswith('Server') == False">
4648N/A <sequence>
4648N/A <script>
4648N/A refNbOfEntries = entries
4648N/A refServername = servernameList[i]
4648N/A </script>
4648N/A <break/>
4648N/A </sequence>
4648N/A </if>
4648N/A </iterate>
4616N/A
4648N/A <iterate var="server" in="servernameList" indexvar="i">
4616N/A <sequence>
4616N/A <script>
4648N/A entries = entriesList[i]
4616N/A missingChanges = missingChangesList[i]
4648N/A age = ageList[i]
4648N/A
4648N/A anyMissChg = (missingChanges != '0' and missingChanges != '--')
4648N/A anyOldAge = (age != 'N/A' and age != '--')
4648N/A anyEntries = (entries.startswith('Server') == False)
4648N/A entriesDiff = (entries != refNbOfEntries)
4616N/A </script>
4648N/A <if expr="anyMissChg or anyOldAge">
4616N/A <sequence>
4616N/A <message log="1" level="'Error'">
4616N/A 'getReplicationStatus: Server %s is missing %s changes. \
4616N/A Entries: %s - Age of the oldest missing change: %s ' % \
4616N/A (server, missingChanges, entries, age)
4616N/A </message>
4616N/A <tcstatus result="'fail'"/>
4616N/A </sequence>
4616N/A </if>
4648N/A <if expr="anyEntries and entriesDiff">
4616N/A <sequence>
4616N/A <message log="1" level="'Error'">
4616N/A 'getReplicationStatus: Different number of entries.\n\
4616N/A Server %s : %s entries\n\
4616N/A Reference server %s : %s entries\n' % \
4648N/A (server, entries, refServername, refNbOfEntries)
4616N/A </message>
4616N/A <tcstatus result="'fail'"/>
4616N/A </sequence>
4616N/A </if>
4616N/A </sequence>
4616N/A </iterate>
4616N/A
4616N/A </sequence>
4616N/A </if>
4616N/A
4616N/A <return>
4616N/A commandResult
4616N/A </return>
4616N/A </sequence>
4616N/A </function>
4616N/A
5507N/A <function name="stageStaticDataFiles">
5504N/A <function-prolog>
5504N/A This function stages locally the static data files
5504N/A </function-prolog>
5504N/A <function-map-args>
5504N/A <function-arg-def name="customFileExtensions"
5504N/A type="optional"
5504N/A default="''">
5504N/A <function-arg-description>
5504N/A Non default file extensions for specific tests
5504N/A </function-arg-description>
5504N/A <function-arg-property name="type" value="string"/>
5504N/A </function-arg-def>
5540N/A <function-arg-def name="testGroupDirName"
5540N/A type="optional"
5540N/A default="''">
5540N/A <function-arg-description>
5540N/A Name of the test group directory that holds the
5540N/A static data files
5540N/A </function-arg-description>
5540N/A <function-arg-property name="type" value="string"/>
5540N/A </function-arg-def>
5504N/A
5504N/A </function-map-args>
5504N/A <sequence>
5507N/A
5540N/A <!-- If remote host is local loopback then no need to stage static data files -->
5540N/A <script>
5540N/A from socket import gethostbyname
5540N/A </script>
5540N/A
5540N/A <if expr="host_is_localhost(STAF_REMOTE_HOSTNAME)">
5540N/A <sequence>
5540N/A <message>
5540N/A 'Not staging static data files as remote host %s (%s) is local.' % (STAF_REMOTE_HOSTNAME,gethostbyname(STAF_REMOTE_HOSTNAME))
5540N/A </message>
5540N/A <message>'Will creating stub folder in testdata.'</message>
5540N/A <call function="'createStubFolders'"/>
5540N/A <return>0</return>
5540N/A </sequence>
5540N/A <else>
5540N/A <message>
5540N/A 'Remote host %s (%s) is not local.' % (STAF_REMOTE_HOSTNAME,gethostbyname(STAF_REMOTE_HOSTNAME))
5540N/A </message>
5540N/A </else>
5540N/A </if>
5540N/A
5507N/A <!-- Check to see if local tests static data directory is already created-->
5507N/A <call function="'GetEntry'">
5507N/A { 'location' : STAXServiceMachine,
5507N/A 'entry' : localTestsGroupDir,
5507N/A 'attribute' : 'TYPE'
5507N/A }
5507N/A </call>
5507N/A
5507N/A <!-- If the static test data is already created then don't redo it -->
5507N/A <if expr="RC != 48">
5507N/A <sequence>
5507N/A <message>'Not staging static data files as they already exist.'</message>
5507N/A <return>0</return>
5507N/A </sequence>
5507N/A </if>
5504N/A
5504N/A <!-- Locally copy static data files to temporary staging area -->
5507N/A <message>
5507N/A 'Staging static data files on local machine.'
5507N/A </message>
5504N/A
5504N/A <!-- All LDIF (.ldif) files for quickinstall are needed for each suite -->
5504N/A <script>
5504N/A quickStartGroupDir='%s/quickstart' % (source.data)
5504N/A quickStartLocalTestsGroupDir='%s/quickstart' % local.data
5504N/A </script>
5504N/A <message>
5504N/A 'Copy quickstart ldif data files locally from %s to %s.' % \
5504N/A (quickStartGroupDir,quickStartLocalTestsGroupDir)
5504N/A </message>
5504N/A <call function="'CopyFolderByExtension'">
5504N/A { 'location' : STAXServiceMachine,
5504N/A 'srcfolder' : quickStartGroupDir,
5504N/A 'destfolder' : quickStartLocalTestsGroupDir,
5504N/A 'extension' : 'ldif'
5504N/A }
5504N/A </call>
5504N/A
5504N/A <!-- Default static data files -->
5504N/A <script>
5504N/A defaultFileExtensions=["ldif","pwd","gz","ref","security"]
5504N/A </script>
5504N/A
5507N/A <iterate var="fExt" in="defaultFileExtensions + customFileExtensions">
5504N/A <sequence>
5504N/A <message>
5504N/A 'Copy %s data files locally from %s to %s.' % \
5507N/A (fExt,sourceTestsGroupDir,localTestsGroupDir)
5504N/A </message>
5504N/A <call function="'CopyFolderByExtension'">
5504N/A { 'location' : STAXServiceMachine,
5504N/A 'srcfolder' : sourceTestsGroupDir,
5504N/A 'destfolder' : localTestsGroupDir,
5507N/A 'extension' : '%s' % fExt
5504N/A }
5504N/A </call>
5504N/A </sequence>
5504N/A </iterate>
5504N/A
5504N/A </sequence>
5504N/A </function>
5504N/A
5507N/A <function name="stageJavaFiles">
5507N/A <function-prolog>
5507N/A This function stages locally and builds the java class files
5507N/A </function-prolog>
5507N/A <function-map-args>
5507N/A <function-arg-def name="customJavaProjects"
5507N/A type="optional"
5507N/A default="''">
5507N/A <function-arg-description>
5507N/A Name of the custom java based project (should be folder name)
5507N/A </function-arg-description>
5507N/A <function-arg-property name="type" value="string"/>
5507N/A </function-arg-def>
5507N/A
5507N/A </function-map-args>
5507N/A <sequence>
5507N/A
5507N/A <script>
5507N/A defaultJavaProjects=["ldapjndi","ldapjdk"]
5507N/A </script>
5507N/A
5507N/A <!-- Archive (*/.java) files -->
5507N/A <iterate var="javaProject" in="defaultJavaProjects + customJavaProjects">
5507N/A <sequence>
5507N/A <script>
5507N/A javaSharedDir='%s/%s' % (source.java,javaProject)
5507N/A javaLocalDir ='%s/%s' % (local.java,javaProject)
5507N/A </script>
5507N/A <!-- Check to see if local java data directory is already created-->
5507N/A <call function="'GetEntry'">
5507N/A { 'location' : STAXServiceMachine,
5507N/A 'entry' : javaLocalDir,
5507N/A 'attribute' : 'TYPE'
5507N/A }
5507N/A </call>
5507N/A <if expr="RC == 48">
5507N/A <sequence>
5507N/A
5507N/A <message>
5507N/A 'Staging %s java files on local machine.' % javaProject
5507N/A </message>
5507N/A
5507N/A <message>
5507N/A 'Copy %s java files locally from %s to %s.' % \
5507N/A (javaProject,javaSharedDir,javaLocalDir)
5507N/A </message>
5507N/A <call function="'CopyFolderByExtension'">
5507N/A {
5507N/A 'location' : STAXServiceMachine,
5507N/A 'srcfolder' : javaSharedDir,
5507N/A 'destfolder' : javaLocalDir,
5507N/A 'extension' : 'java'
5507N/A }
5507N/A </call>
5507N/A
5507N/A <message>
5507N/A 'Copy any jar files locally from %s to %s.' % \
5507N/A (javaSharedDir,javaLocalDir)
5507N/A </message>
5507N/A <call function="'CopyFolderByExtension'">
5507N/A {
5507N/A 'location' : STAXServiceMachine,
5507N/A 'srcfolder' : javaSharedDir,
5507N/A 'destfolder' : javaLocalDir,
5507N/A 'extension' : 'jar'
5507N/A }
5507N/A </call>
5507N/A
5507N/A <!--- Check if these java files are already compiled -->
5507N/A <call function="'listFolderByExtension'" >
5507N/A {
5507N/A 'location' : STAXServiceMachine,
5507N/A 'foldername' : javaLocalDir,
5507N/A 'extension' : 'class'
5507N/A }
5507N/A </call>
5507N/A <if expr="len(STAXResult) == 0">
5507N/A <sequence>
5507N/A <!-- Build Java CLASSPATH if needed-->
5507N/A <script>
5507N/A java_classpath = '.'
5507N/A </script>
5507N/A <!-- Build CLASSPATH for ldapjdk-->
5507N/A <if expr="javaProject == 'ldapjdk'">
5507N/A <script>
5507N/A if is_windows_platform(STAXServiceMachine):
5507N/A separator=';'
5507N/A jstaf_jarfile='%s\\bin\\JSTAF.jar' % LOCAL_STAF_ROOT
5507N/A else:
5507N/A separator=':'
5507N/A jstaf_jarfile='%s/lib/JSTAF.jar' % LOCAL_STAF_ROOT
5507N/A
5507N/A ldapjdk_jarfile='%s/ldapjdk.jar' % javaLocalDir
5507N/A
5507N/A java_classpath ='%s%s%s' \
5507N/A % (ldapjdk_jarfile,separator,jstaf_jarfile)
5507N/A </script>
5507N/A </if>
5507N/A <!-- Compile these java files on controler host -->
5507N/A <message>
5507N/A 'Compile Java files under %s on %s' \
5507N/A % (javaLocalDir, STAXServiceMachine)
5507N/A </message>
5507N/A <call function="'compileJava'" >
5507N/A {
5507N/A 'location' : STAXServiceMachine,
5507N/A 'foldername' : '%s' % javaLocalDir,
5507N/A 'classpath' : java_classpath
5507N/A }
5507N/A </call>
5507N/A </sequence>
5507N/A </if>
5507N/A </sequence>
5507N/A <else>
5507N/A <message>
5507N/A 'Not Staging %s java files as they already exist.' % javaProject
5507N/A </message>
5507N/A </else>
5507N/A </if>
5507N/A </sequence>
5507N/A </iterate>
5507N/A </sequence>
5507N/A </function>
5507N/A
5507N/A <function name="stageSNMPFiles">
5507N/A <function-prolog>
5507N/A This function stages locally and builds the java class files
5507N/A </function-prolog>
5507N/A <function-map-args>
5507N/A <function-arg-def name="customSNMPProjects"
5507N/A type="optional"
5507N/A default="''">
5507N/A <function-arg-description>
5507N/A Name of the custom SNMP based project (should be folder name)
5507N/A </function-arg-description>
5507N/A <function-arg-property name="type" value="string"/>
5507N/A </function-arg-def>
5507N/A
5507N/A </function-map-args>
5507N/A <sequence>
5507N/A
5507N/A <!-- Archive (snmp/.java) files -->
5507N/A <script>
5507N/A javaSharedDir = '%s/snmp' % source.java
5507N/A javaLocalDir = '%s/snmp' % local.java
5507N/A </script>
5507N/A
5507N/A <!-- Check to see if local java data directory is already created-->
5507N/A <call function="'GetEntry'">
5507N/A { 'location' : STAXServiceMachine,
5507N/A 'entry' : javaLocalDir,
5507N/A 'attribute' : 'TYPE'
5507N/A }
5507N/A </call>
5507N/A
5507N/A <if expr="RC != 48">
5507N/A <sequence>
5507N/A <message>'Not Staging SNMP files as they already exist.'</message>
5507N/A <return>0</return>
5507N/A </sequence>
5507N/A </if>
5507N/A
5507N/A <message>
5507N/A 'Staging SNMP files on local machine.'
5507N/A </message>
5507N/A
5507N/A <message>
5507N/A 'Copy java files locally from %s to %s.' % \
5507N/A (javaSharedDir,javaLocalDir)
5507N/A </message>
5507N/A <call function="'CopyFolderByExtension'">
5507N/A {
5507N/A 'location' : STAXServiceMachine,
5507N/A 'srcfolder' : javaSharedDir,
5507N/A 'destfolder' : javaLocalDir,
5507N/A 'extension' : 'java'
5507N/A }
5507N/A </call>
5507N/A
5507N/A <!-- Check if 'SNMP_OPENDMK_JARFILE' exists -->
5507N/A <call function="'GetEntry'">
5507N/A {
5507N/A 'location' : STAXServiceMachine,
5507N/A 'entry' : SNMP_OPENDMK_JARFILE,
5507N/A 'attribute' : 'TYPE'
5507N/A }
5507N/A </call>
5507N/A
5507N/A <if expr="RC == 48">
5507N/A <message>
5507N/A 'OpenDMK jar %s not found.' % SNMP_OPENDMK_JARFILE
5507N/A </message>
5507N/A </if>
5507N/A
5507N/A <!-- 'SNMP_OPENDMK_JARFILE' exists so we can continue with SNMP -->
5507N/A <if expr="RC != 48 or not PRODUCTNAME.startswith('OpenDJ')">
5507N/A <sequence>
5507N/A <!--- Check if snmp java files are already compiled -->
5507N/A <call function="'listFolderByExtension'" >
5507N/A {
5507N/A 'location' : STAXServiceMachine,
5507N/A 'foldername' : javaLocalDir,
5507N/A 'extension' : 'class'
5507N/A }
5507N/A </call>
5507N/A <if expr="len(STAXResult) == 0">
5507N/A <sequence>
5507N/A <!--- Install DS Copy zip file -->
5507N/A <message>
5507N/A 'Copy DS zip archive locally from %s to %s.' % \
5507N/A (ZIPPATH,local.temp)
5507N/A </message>
5507N/A <call function="'copyFile'">
5507N/A {
5507N/A 'srcfile' : '%s/%s' % (ZIPPATH, ZIPNAME),
5507N/A 'destfile' : '%s/%s' % (local.temp, ZIPNAME),
5507N/A 'remotehost' : STAXServiceMachine
5507N/A }
5507N/A </call>
5507N/A
5507N/A <!--- Install DS Extract zip file -->
5507N/A <message>
5507N/A 'Extract locally DS zip archive to %s' % local.temp
5507N/A </message>
5507N/A <call function="'unZipFile'">
5507N/A {
5507N/A 'location' : STAXServiceMachine,
5507N/A 'zipfile' : '%s/%s' % (local.temp, ZIPNAME),
5507N/A 'unzipdir' : local.temp
5507N/A }
5507N/A </call>
5507N/A
5507N/A <!-- The jdmkrt.jar can be included in the OpenDS archive -->
5507N/A <script>
5507N/A if not PRODUCTNAME.startswith('OpenDJ'):
5507N/A SNMP_OPENDMK_JARFILE='%s/%s/addons/jdmkrt.jar' % (local.temp,OPENDSNAME)
5507N/A </script>
5507N/A
5507N/A <script>
5507N/A if is_windows_platform(STAXServiceMachine):
5507N/A jstaf_jarfile='%s\\bin\\JSTAF.jar' % LOCAL_STAF_ROOT
5507N/A else:
5507N/A jstaf_jarfile='%s/lib/JSTAF.jar' % LOCAL_STAF_ROOT
5507N/A </script>
5507N/A
5507N/A <!--- In IPS mode, get snmp-mib2605.jar from remote machine-->
5507N/A <if expr="IPS_PKG == True">
5507N/A <call function="'copyFile'">
5507N/A {
5507N/A 'location' : STAF_REMOTE_HOSTNAME,
5507N/A 'srcfile' : '%s/%s' % (DIRECTORY_INSTANCE_BIN,SNMP_OPENDS_JARFILE),
5507N/A 'destfile' : '%s/%s' % (local.temp,SNMP_OPENDS_JARFILE),
5507N/A 'remotehost' : STAXServiceMachine
5507N/A }
5507N/A </call>
5507N/A </if>
5507N/A
5507N/A <!--- Compile snmp java files on controler host -->
5507N/A <message>
5507N/A 'Compile Java files under %s on %s' \
5507N/A % (javaLocalDir, STAXServiceMachine)
5507N/A </message>
5507N/A <script>
5507N/A opends_jarfile='%s/%s' % (local.temp,SNMP_OPENDS_JARFILE)
5507N/A
5507N/A if is_windows_platform(STAXServiceMachine):
5507N/A separator=';'
5507N/A else:
5507N/A separator=':'
5507N/A </script>
5507N/A <call function="'compileJava'" >
5507N/A {
5507N/A 'location' : STAXServiceMachine,
5507N/A 'foldername' : javaLocalDir,
5507N/A 'classpath' : '%s%s%s%s%s' \
5507N/A % (opends_jarfile,separator,SNMP_OPENDMK_JARFILE,separator,jstaf_jarfile)
5507N/A }
5507N/A </call>
5507N/A
5507N/A <!-- Archive SNMP_OPENDMK_JARFILE file -->
5507N/A <message>
5507N/A 'Copy OpenDMK jar file %s locally to %s.' \
5507N/A % (SNMP_OPENDMK_JARFILE,javaLocalDir)
5507N/A </message>
5507N/A <call function="'copyFile'">
5507N/A {
5507N/A 'remotehost' : STAXServiceMachine,
5507N/A 'srcfile' : SNMP_OPENDMK_JARFILE,
5507N/A 'destfile' : '%s/jdmkrt.jar' % javaLocalDir,
5507N/A 'remotehost' : STAXServiceMachine
5507N/A }
5507N/A </call>
5507N/A
5507N/A <!-- Delete the DS zip archive -->
5507N/A <message>
5507N/A 'Delete %s/%s' % (local.temp, ZIPNAME)
5507N/A </message>
5507N/A <call function="'deleteFile'">
5507N/A {
5507N/A 'location' : STAXServiceMachine,
5507N/A 'filename' : '%s/%s' % (local.temp, ZIPNAME)
5507N/A }
5507N/A </call>
5507N/A
5507N/A <!-- Delete the DS install dir -->
5507N/A <message>
5507N/A 'Delete %s/%s' % (local.temp, OPENDSNAME)
5507N/A </message>
5507N/A <call function="'deleteFolder'">
5507N/A {
5507N/A 'location' : STAXServiceMachine,
5507N/A 'foldername' : '%s/%s' % (local.temp, OPENDSNAME)
5507N/A }
5507N/A </call>
5507N/A </sequence>
5507N/A </if>
5507N/A </sequence>
5507N/A </if>
5507N/A </sequence>
5540N/A </function>
5540N/A
5540N/A <function name="createStubFolders">
5540N/A <function-prolog>
5540N/A This function creates some stub folders in testdata
5540N/A </function-prolog>
5540N/A <function-no-args/>
5540N/A <sequence>
5540N/A
5540N/A <message>
5540N/A 'Create folder %s/data on host %s' % (local.directory,STAF_LOCAL_HOSTNAME)
5540N/A </message>
5540N/A <call function="'createFolder'">
5540N/A { 'location' : STAF_LOCAL_HOSTNAME,
5540N/A 'foldername' : '%s/data' % local.directory
5540N/A }
5540N/A </call>
5540N/A </sequence>
5540N/A </function>
5507N/A
2788N/A</stax>