dsadm.xml revision b26e36d8a08a1c775531659c04abc3d4ed504139
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk<?xml version="1.0" encoding="UTF-8" standalone="no"?>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk<!DOCTYPE stax SYSTEM "/stax.dtd">
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk<!--
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! CDDL HEADER START
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk !
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! The contents of this file are subject to the terms of the
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! Common Development and Distribution License, Version 1.0 only
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! (the "License"). You may not use this file except in compliance
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! with the License.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk !
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! You can obtain a copy of the license at
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! See the License for the specific language governing permissions
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! and limitations under the License.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk !
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! When distributing Covered Code, include this CDDL HEADER in each
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! file and include the License file at
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! add the following below this CDDL HEADER, with the fields enclosed
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! by brackets "[]" replaced with your own identifying information:
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! Portions Copyright [yyyy] [name of copyright owner]
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk !
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! CDDL HEADER END
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk !
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ! -->
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk<stax>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <!-- This function sets up DS using the setup script -->
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function name="SetUpDsWithScript">
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-prolog>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk This function sets up a Directory Server using a script
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-prolog>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-map-args>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk Location of target host
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-property name="type" value="hostname"/>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-def>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk Pathname to installation root
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-property name="type" value="filepath"/>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-def>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-def name="dsPort" type="optional">
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk Directory server port number
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-property name="type" value="Port number"/>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-def>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-def name="dsJmxPort" type="optional">
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk Directory server JMX port number
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-property name="type" value="Port number"/>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-def>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-def name="dsBaseDN" type="optional">
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk Base DN (only single base DN supported).
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-property name="type" value="DN"/>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-def>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-def name="dsBindDN" type="optional">
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk Bind DN
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-property name="type" value="DN"/>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-def>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-def name="dsBindPwd" type="optional">
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk Bind password
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-property name="type" value="string"/>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-def>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-def name="dsBindPwdFile" type="optional">
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk Bind password file
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-property name="type" value="filename"/>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-def>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-def name="dsEnableWindowsService" type="optional">
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk Enable as a Windows Service
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-property name="type" value="boolean"/>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-def>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-def name="dsDoNotStart" type="optional">
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk Do not start server after setup
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-property name="type" value="boolean"/>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-def>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-def name="dsHelp" type="optional">
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk Help option
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-description>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <function-arg-property name="help" value="option"/>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-arg-def>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk </function-map-args>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <sequence>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <!-- Build the Command -->
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk <script>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk STAFCmdParamsList=[]
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk STAFCmdParams=''
if dsPath:
STAFCmd='%s/setup%s' % (dsPath,fileExt)
STAFCmdParamsList.append('--cli')
STAFCmdParamsList.append('-n')
if dsPort:
STAFCmdParamsList.append('-p %s' % dsPort)
if dsJmxPort:
STAFCmdParamsList.append('-x %s' % dsJmxPort)
if dsBaseDN:
STAFCmdParamsList.append('-b "%s"' % dsBaseDN)
if dsBindDN:
STAFCmdParamsList.append('-D "%s"' % dsBindDN)
if dsBindPwd:
STAFCmdParamsList.append('-w "%s"' % dsBindPwd)
if dsBindPwdFile:
STAFCmdParamsList.append('-j "%s"' % dsBindPwdFile)
if dsEnableWindowsService:
STAFCmdParamsList.append('-e')
if dsDoNotStart:
STAFCmdParamsList.append('-O')
if dsHelp:
STAFCmdParamsList.append('-H')
STAFCmdParams=' '.join(STAFCmdParamsList)
</script>
<message>
'%s %s' % (STAFCmd, STAFCmdParams)
</message>
<call function="'runCommand'">
{ 'location' : location,
'name' : 'Setup DS Script',
'command' : STAFCmd,
'arguments' : STAFCmdParams,
'path' : dsPath
}
</call>
<call function="'checkRC'">
{ 'returncode' : RC ,
'result' : STAXResult }
</call>
</sequence>
</function>
<!-- This function configures DS using the configure-ds script -->
<function name="ConfigureDsWithScript">
<function-prolog>
This function configures a Directory Server using a script
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="filepath"/>
</function-arg-def>
<function-arg-def name="dsVersion" type="optional">
<function-arg-description>
Display Directory Server version information
</function-arg-description>
<function-arg-property name="type" value="Port number"/>
</function-arg-def>
<function-arg-def name="dsLdapPort" type="optional">
<function-arg-description>
Directory server LDAP port number
</function-arg-description>
<function-arg-property name="type" value="Port number"/>
</function-arg-def>
<function-arg-def name="dsLdapsPort" type="optional">
<function-arg-description>
Directory server LDAPS port number
</function-arg-description>
<function-arg-property name="type" value="Port number"/>
</function-arg-def>
<function-arg-def name="dsEnableStartTLS" type="optional">
<function-arg-description>
Specifies whether to enable or not StartTLS
</function-arg-description>
<function-arg-property name="type" value="Port number"/>
</function-arg-def>
<function-arg-def name="dsJmxPort" type="optional">
<function-arg-description>
Directory server JMX port number
</function-arg-description>
<function-arg-property name="type" value="Port number"/>
</function-arg-def>
<function-arg-def name="dsKeyManagerProviderDN" type="optional">
<function-arg-description>
DN of the key manager provider to use for SSL and/or StartTLS
</function-arg-description>
<function-arg-property name="type" value="Port number"/>
</function-arg-def>
<function-arg-def name="dsTrustManagerProviderDN" type="optional">
<function-arg-description>
DN of the trust manager provider to use for SSL and/or StartTLS
</function-arg-description>
<function-arg-property name="type" value="Port number"/>
</function-arg-def>
<function-arg-def name="dsKeyManagerPath" type="optional">
<function-arg-description>
Path of the keystore to be used by the key manager provider
</function-arg-description>
<function-arg-property name="type" value="Port number"/>
</function-arg-def>
<function-arg-def name="dsCertNickName" type="optional">
<function-arg-description>
Nickname of the certificate
</function-arg-description>
<function-arg-property name="type" value="Port number"/>
</function-arg-def>
<function-arg-def name="dsBaseDN" type="optional">
<function-arg-description>
Base DN (only single base DN supported).
</function-arg-description>
<function-arg-property name="type" value="DN"/>
</function-arg-def>
<function-arg-def name="dsRootUserDN" type="optional">
<function-arg-description>
Root User Bind DN
</function-arg-description>
<function-arg-property name="type" value="DN"/>
</function-arg-def>
<function-arg-def name="dsRootPassword" type="optional">
<function-arg-description>
Root User Bind password
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="dsRootPasswordFile" type="optional">
<function-arg-description>
Root User password file
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="dsHelp" type="optional">
<function-arg-description>
Help option
</function-arg-description>
<function-arg-property name="help" value="option"/>
</function-arg-def>
</function-map-args>
<sequence>
<!-- Build the Command -->
<script>
STAFCmdParamsList=[]
STAFCmdParams=''
if dsPath:
dsBinPath='%s/%s' % (dsPath,fileFolder)
STAFCmd='%s/configure-ds%s' % (dsBinPath,fileExt)
if dsVersion:
STAFCmdParamsList.append('-V %s' % dsVersion)
if dsLdapPort:
STAFCmdParamsList.append('-p %s' % dsLdapPort)
if dsLdapsPort:
STAFCmdParamsList.append('-P %s' % dsLdapsPort)
if dsEnableStartTLS:
STAFCmdParamsList.append('-q %s' % dsEnableStartTLS)
if dsJmxPort:
STAFCmdParamsList.append('-x %s' % dsJmxPort)
if dsKeyManagerProviderDN:
STAFCmdParamsList.append('-k "%s"' % dsKeyManagerProviderDN)
if dsTrustManagerProviderDN:
STAFCmdParamsList.append('-t "%s"' % dsTrustManagerProviderDN)
if dsKeyManagerPath:
STAFCmdParamsList.append('-m "%s"' % dsKeyManagerPath)
if dsCertNickName:
STAFCmdParamsList.append('-a "%s"' % dsCertNickName)
if dsBaseDN:
STAFCmdParamsList.append('-b "%s"' % dsBaseDN)
if dsRootUserDN:
STAFCmdParamsList.append('-D "%s"' % dsRootUserDN)
if dsRootPassword:
STAFCmdParamsList.append('-w "%s"' % dsRootPassword)
if dsRootPasswordFile:
STAFCmdParamsList.append('-j "%s"' % dsRootPasswordFile)
if dsHelp:
STAFCmdParamsList.append('-H')
STAFCmdParams=' '.join(STAFCmdParamsList)
</script>
<message>
'%s %s' % (STAFCmd, STAFCmdParams)
</message>
<call function="'runCommand'">
{ 'location' : location,
'name' : 'Setup DS Script',
'command' : STAFCmd,
'arguments' : STAFCmdParams
}
</call>
<call function="'checkRC'">
{ 'returncode' : RC ,
'result' : STAXResult }
</call>
</sequence>
</function>
<!-- This function starts DS using the start-ds script -->
<function name="StartDsWithScript">
<function-prolog>
This function starts a Directory Server
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsVersion" type="optional">
<function-arg-description>
Directory server version
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsSystemInfo" type="optional">
<function-arg-description>
Directory server system info
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsNoDetach" type="optional">
<function-arg-description>
Do not detach directory server from process
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsHelp" type="optional">
<function-arg-description>
Help option
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsBuildInfo" type="optional">
<function-arg-description>
Directory server build information
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
</function-map-args>
<sequence>
<!-- Build the Command -->
<script>
STAFCmdParamsList=[]
STAFCmdParams=''
if dsPath:
dsBinPath='%s/%s' % (dsPath,fileFolder)
STAFCmd='%s/start-ds%s' % (dsBinPath,fileExt)
if dsVersion:
STAFCmdParamsList.append('-V')
if dsSystemInfo:
STAFCmdParamsList.append('-s')
if dsNoDetach:
STAFCmdParamsList.append('-N')
if dsHelp:
STAFCmdParamsList.append('-H')
if dsBuildInfo:
STAFCmdParamsList.append('-F')
STAFCmdParams=' '.join(STAFCmdParamsList)
</script>
<message>
'%s %s' % (STAFCmd, STAFCmdParams)
</message>
<call function="'runCommand'">
{ 'location' : location,
'command' : STAFCmd,
'arguments' : STAFCmdParams,
'location' : location
}
</call>
<script>
startRC=RC
startResult=STAXResult
</script>
<call function="'checkRC'">
{ 'returncode' : startRC ,
'result' : startResult }
</call>
<return>startResult</return>
</sequence>
</function>
<!-- This function stops DS using the stop-ds script -->
<function name="StopDsWithScript">
<function-prolog>
This function starts a Directory Server using the script
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsHost" type="optional">
<function-arg-description>
Directory server hostname or IP address
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPort" type="optional">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsUseSSL" type="optional">
<function-arg-description>
Use SSL for secure communication with the server
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsUseStartTLS" type="optional">
<function-arg-description>
Use StartTLS for secure communication with the server
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsBindDN" type="optional">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="DN"/>
</function-arg-def>
<function-arg-def name="dsBindPwd" type="optional">
<function-arg-description>
Bind password
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="dsBindPwdFile" type="optional">
<function-arg-description>
Bind password file
</function-arg-description>
<function-arg-property name="type" value="filepath"/>
</function-arg-def>
<function-arg-def name="dsSaslOption" type="optional">
<function-arg-description>
SASL bind options
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsProxyAuthZID" type="optional">
<function-arg-description>
Use the proxied authorization control with the given authorization ID
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsStopReason" type="optional">
<function-arg-description>
Reason the server is being stopped or restarted
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="dsRestart" type="optional">
<function-arg-description>
Attempt to automatically restart the server once it has stopped
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsStopTime" type="optional">
<function-arg-description>
Time to begin the shutdown in YYYYMMDDhhmmss format (local time)
</function-arg-description>
<function-arg-property name="type" value="timestamp"/>
</function-arg-def>
<function-arg-def name="dsTrustAll" type="optional">
<function-arg-description>
Trust all server SSL certificates
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsKeyStoreFile" type="optional">
<function-arg-description>
Certificate keystore path
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="dsKeyStorePwd" type="optional">
<function-arg-description>
Certificate keystore PIN
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="dsKeyStorePwdFile" type="optional">
<function-arg-description>
Certificate keystore PIN file
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="dsTrustStoreFile" type="optional">
<function-arg-description>
Certificate trust store path
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="dsTrustStorePwd" type="optional">
<function-arg-description>
Certificate trust store PIN
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="dsTrustStorePwdFile" type="optional">
<function-arg-description>
Certificate trust store PIN file
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="dsHelp" type="optional">
<function-arg-description>
Help option
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
</function-map-args>
<sequence>
<!-- Build the Command -->
<script>
STAFCmdParamsList=[]
STAFCmdParams=''
if dsPath:
dsBinPath='%s/%s' % (dsPath,fileFolder)
STAFCmd='%s/stop-ds%s' % (dsBinPath,fileExt)
if dsHost:
STAFCmdParamsList.append('-h %s' % dsHost)
if dsPort:
STAFCmdParamsList.append('-p %s' % dsPort)
if dsUseSSL:
STAFCmdParamsList.append('-Z')
if dsUseStartTLS:
STAFCmdParamsList.append('-q')
if dsBindDN:
STAFCmdParamsList.append('-D "%s"' % dsBindDN)
if dsBindPwd:
STAFCmdParamsList.append('-w "%s"' % dsBindPwd)
if dsBindPwdFile:
STAFCmdParamsList.append('-j "%s"' % dsBindPwdFile)
if dsSaslOption:
STAFCmdParamsList.append('-o "%s"' % dsSaslOption)
if dsProxyAuthZID:
STAFCmdParamsList.append('-Y "%s"' % dsProxyAuthZID)
if dsStopReason:
STAFCmdParamsList.append('-r "%s"' % dsStopReason)
if dsRestart:
STAFCmdParamsList.append('-R')
if dsStopTime:
STAFCmdParamsList.append('-t "%s"' % dsStopTime)
if dsTrustAll:
STAFCmdParamsList.append('-X')
if dsKeyStoreFile:
STAFCmdParamsList.append('-K "%s"' % dsKeyStoreFile)
if dsKeyStorePwd:
STAFCmdParamsList.append('-W "%s"' % dsKeyStorePwd)
if dsKeyStorePwdFile:
STAFCmdParamsList.append('-u "%s"' % dsKeyStorePwdFile)
if dsTrustStoreFile:
STAFCmdParamsList.append('-P "%s"' % dsTrustStoreFile)
if dsTrustStorePwd:
STAFCmdParamsList.append('-T "%s"' % dsTrustStorePwd)
if dsTrustStorePwdFile:
STAFCmdParamsList.append('-U "%s"' % dsTrustStorePwdFile)
if dsHelp:
STAFCmdParamsList.append('-H')
STAFCmdParams=' '.join(STAFCmdParamsList)
</script>
<message>
'%s %s' % (STAFCmd, STAFCmdParams)
</message>
<call function="'runCommand'">
{ 'location' : location,
'name' : 'Stop DS Script',
'command' : STAFCmd,
'arguments' : STAFCmdParams
}
</call>
<call function="'checkRC'">
{ 'returncode' : RC ,
'result' : STAXResult }
</call>
<call function="'Sleep'">
{ 'sleepForMilliSeconds' : 3000 }
</call>
</sequence>
</function>
<!-- This function restart DS using the stop-ds script -->
<function name="RestartDs">
<function-prolog>
This function restarts a Directory Server
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsHost" type="optional" default="'%s' % DIRECTORY_INSTANCE_HOST">
<function-arg-description>
Directory server hostname or IP address
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPort" type="optional" default="'%s' % DIRECTORY_INSTANCE_PORT">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="port"/>
</function-arg-def>
<function-arg-def name="dsBindDN" type="optional" default="'%s' % DIRECTORY_INSTANCE_DN">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="DN"/>
</function-arg-def>
<function-arg-def name="dsBindPwd" type="optional" default="'%s' % DIRECTORY_INSTANCE_PSWD">
<function-arg-description>
Bind password
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="dsBindPwdFile" type="optional">
<function-arg-description>
Bind password file
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="extraParams" type="optional" default="''">
<function-arg-description>
Optional extra parameters for specific test cases
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<!-- Build the Command -->
<script>
STAFCmdParamsList=[]
STAFCmdParams=''
if dsPath:
dsBinPath='%s/%s' % (dsPath,fileFolder)
STAFCmd='%s/stop-ds%s' % (dsBinPath,fileExt)
if dsHost:
STAFCmdParamsList.append('-h %s' % dsHost)
if dsPort:
STAFCmdParamsList.append('-p %s' % dsPort)
if dsBindDN:
STAFCmdParamsList.append('-D "%s"' % dsBindDN)
if dsBindPwd:
STAFCmdParamsList.append('-w "%s"' % dsBindPwd)
if dsBindPwdFile:
STAFCmdParamsList.append('-j "%s"' % dsBindPwdFile)
STAFCmdParamsList.append('-R')
STAFCmdParams=' '.join(STAFCmdParamsList)
</script>
<message>
'%s %s' % (STAFCmd, STAFCmdParams)
</message>
<message>'******************************'</message>
<message>'*** Restarting the Server ***'</message>
<message>'******************************'</message>
<process name="'restart DS'">
<location>'%s' % (location)</location>
<command>'%s' % (STAFCmd)</command>
<parms>'%s' % (STAFCmdParams)</parms>
<workdir>'%s' % dsBinPath</workdir>
<envs>
['PATH=/bin:/usr/bin:%s' % dsBinPath, 'JAVA_HOME=%s' % JAVA_HOME]
</envs>
<stderr mode="'stdout'"/>
<returnstdout/>
</process>
<!-- Wait for DS to start -->
<call function="'isAlive'">
{ 'location' : location,
'dsPath' : dsPath,
'dsInstanceHost' : dsHost ,
'dsInstancePort' : dsPort ,
'dsInstanceDn' : dsBindDN ,
'dsInstancePswd' : dsBindPwd ,
'noOfLoops' : 5 ,
'noOfMilliSeconds' : 6000 }
</call>
<message>'*** Restarting the Server is completed ***'</message>
<message>'***************************************'</message>
</sequence>
</function>
<!-- Import LDIF file Function -->
<function name="importLdif">
<function-prolog>
This function performs an offline import of an ldif file
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="ldifFile" type="required">
<function-arg-description>
Path to the LDIF file to be imported
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="backEnd" type="optional" default="DIRECTORY_INSTANCE_BE">
<function-arg-description>
Backend ID for the backend to import
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="extraParams" type="optional" default="''">
<function-arg-description>
Optional extra parameters for specific test cases
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<script>
if dsPath:
dsBinPath='%s/%s' % (dsPath,fileFolder)
</script>
<message>
'%s/import-ldif%s -l %s -n %s %s' % (dsBinPath,fileExt,ldifFile,backEnd,extraParams)
</message>
<call function="'runCommand'">
{ 'location' : location,
'name' : 'Offline Import',
'command' : '%s/import-ldif%s' % (dsBinPath,fileExt),
'arguments' : '-l %s -n %s %s' % (ldifFile,backEnd,extraParams)
}
</call>
<script>
importRC=RC
importResult=STAXResult
</script>
<call function="'checkRC'">
{ 'returncode' : importRC ,
'result' : importResult }
</call>
<return>importRC</return>
</sequence>
</function>
<!-- Import Function With Script-->
<function name="ImportLdifWithScript">
<function-prolog>
This function performs an offline import of an ldif file using the script
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsLdifFile" type="required">
<function-arg-description>
Path to the LDIF file to be imported
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="dsTemplateFile" type="optional">
<function-arg-description>
Path to a MakeLDIF template to use to generate the import data
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="dsAppend" type="optional">
<function-arg-description>
Append to an existing database rather than overwriting it
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsReplaceExisting" type="optional">
<function-arg-description>
Replace existing entries when appending to the database
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsBackEnd" type="optional">
<function-arg-description>
Backend ID for the backend to import
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="dsBranchDN" type="optional">
<function-arg-description>
Base DN of a branch to include in the LDIF import
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="dsIncludeBranch" type="optional">
<function-arg-description>
Base DN of a branch to include in the LDIF import
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="dsExcludeBranch" type="optional">
<function-arg-description>
Base DN of a branch to exclude from the LDIF import
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="dsIncludeAttribute" type="optional">
<function-arg-description>
Attribute to include in the LDIF import
</function-arg-description>
<function-arg-property name="type" value="attribute"/>
</function-arg-def>
<function-arg-def name="dsExcludeAttribute" type="optional">
<function-arg-description>
Attribute to exclude in the LDIF import
</function-arg-description>
<function-arg-property name="type" value="attribute"/>
</function-arg-def>
<function-arg-def name="dsIncludeFilter" type="optional">
<function-arg-description>
Filter to identify entries to include in the LDIF import
</function-arg-description>
<function-arg-property name="type" value="filter"/>
</function-arg-def>
<function-arg-def name="dsExcludeFilter" type="optional">
<function-arg-description>
Filter to identify entries to exclude from the LDIF import
</function-arg-description>
<function-arg-property name="type" value="filter"/>
</function-arg-def>
<function-arg-def name="dsRejectFile" type="optional">
<function-arg-description>
Write rejected entries to the specified file
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="dsOverWriteRejects" type="optional">
<function-arg-description>
Overwrite an existing rejects file rather than appending to it
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsRandomSeed" type="optional">
<function-arg-description>
Seed for the MakeLDIF random number generator
</function-arg-description>
<function-arg-property name="type" value="seed"/>
</function-arg-def>
<function-arg-def name="dsSkipSchemaValidation" type="optional">
<function-arg-description>
Skip schema validation during the LDIF import
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsIsCompressed" type="optional">
<function-arg-description>
LDIF file is compressed
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsIsEncrypted" type="optional">
<function-arg-description>
LDIF file is encrypted
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsQuiet" type="optional">
<function-arg-description>
Use quiet mode (no output)
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="dsHelp" type="optional">
<function-arg-description>
Display usage information
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
</function-map-args>
<sequence>
<!-- Build the Command -->
<script>
STAFCmdParamsList=[]
STAFCmdParams=''
if dsPath:
dsBinPath='%s/%s' % (dsPath,fileFolder)
STAFCmd='%s/import-ldif%s' % (dsBinPath,fileExt)
if dsLdifFile:
STAFCmdParamsList.append('-l %s' % dsLdifFile)
if dsTemplateFile:
STAFCmdParamsList.append('-t %s' % dsTemplateFile)
if dsAppend:
STAFCmdParamsList.append('-a')
if dsReplaceExisting:
STAFCmdParamsList.append('-r')
if dsIncludeBranch:
for InBranch in dsIncludeBranch:
STAFCmdParamsList.append('-b %s ' % InBranch)
if dsExcludeBranch:
for ExBranch in dsExcludeBranch:
STAFCmdParamsList.append('-B %s ' % ExBranch)
if dsIncludeAttribute:
for InAttr in dsIncludeAttribute:
STAFCmdParamsList.append('-i %s ' % InAttr)
if dsExcludeAttribute:
for ExAttr in dsExcludeAttribute:
STAFCmdParamsList.append('-e %s ' % ExAttr)
if dsIncludeFilter:
for InFilter in dsIncludeFilter:
STAFCmdParamsList.append('-I %s ' % InFilter)
if dsExcludeFilter:
for ExFilter in dsExcludeFilter:
STAFCmdParamsList.append('-E %s ' % ExFilter)
if dsRejectFile:
STAFCmdParamsList.append('-R %s' % dsRejectFile)
if dsOverWriteRejects:
STAFCmdParamsList.append('-O')
if dsRandomSeed:
STAFCmdParamsList.append('-s %s' % dsRandomSeed)
if dsSkipSchemaValidation:
STAFCmdParamsList.append('-S')
if dsIsCompressed:
STAFCmdParamsList.append('-c')
if dsIsEncrypted:
STAFCmdParamsList.append('-y')
if dsQuiet:
STAFCmdParamsList.append('-q')
if dsHelp:
STAFCmdParamsList.append('-H')
if dsBackEnd:
STAFCmdParamsList.append('-n %s' % dsBackEnd)
STAFCmdParams=' '.join(STAFCmdParamsList)
</script>
<message>
'%s %s' % (STAFCmd, STAFCmdParams)
</message>
<call function="'runCommand'">
{ 'location' : location,
'name' : 'Offline Import Script',
'command' : STAFCmd,
'arguments' : STAFCmdParams
}
</call>
<call function="'checkRC'">
{ 'returncode' : RC ,
'result' : STAXResult }
</call>
</sequence>
</function>
<!-- Import Task Function -->
<function name="importLdifTask">
<function-prolog>
This function performs an on line import task of an ldif file
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="dsInstanceHost" type="optional">
<function-arg-description>
Directory server host name
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstancePort" type="optional">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstanceDn" type="optional">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="dsInstancePswd" type="optional">
<function-arg-description>
Bind password
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="taskID" type="optional">
<function-arg-description>
The identifier for the task
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="ldifFile" type="optional">
<function-arg-description>
The name of the ldif file
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="backEnd" type="optional" default="DIRECTORY_INSTANCE_BE">
<function-arg-description>
Optional the name of the database backend
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="isCompressed" type="optional" default="'FALSE'">
<function-arg-description>
Optional imported ldif data file compressed
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
<function-arg-def name="isEncrypted" type="optional" default="'FALSE'">
<function-arg-description>
Optional imported ldif data file encrypted
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
<function-arg-def name="rejectsFile" type="optional">
<function-arg-description>
Optional name of rejects file
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="overwriteRejectsFile" type="optional" default="'FALSE'">
<function-arg-description>
Optional name of rejects file
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
<function-arg-def name="append" type="optional" default="'FALSE'">
<function-arg-description>
Optional append imported ldif data
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
<function-arg-def name="skipSchemaValidation" type="optional" default="'FALSE'">
<function-arg-description>
Optional don't do schema validation on import
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
<function-arg-def name="replaceExisting" type="optional" default="'FALSE'">
<function-arg-description>
Optional replace existing data
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
<function-arg-def name="excludeBranches" type="optional" default="''">
<function-arg-description>
Optional exclude branches
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="includeBranches" type="optional" default="''">
<function-arg-description>
Optional include branches
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="excludeAttributes" type="optional" default="''">
<function-arg-description>
Optional exclude attributes
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="includeAttributes" type="optional" default="''">
<function-arg-description>
Optional include attributes
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="excludeFilters" type="optional" default="''">
<function-arg-description>
Optional exclude filters
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="includeFilters" type="optional" default="''">
<function-arg-description>
Optional exclude filters
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
</function-map-args>
<sequence>
<!-- Local variables -->
<script>
myLocation=location
myPath=dsPath
taskLdifFile='import-task.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
</script>
<!-- Build the import task configuration object -->
<script>
ldifLines=[]
ldifLines.append('dn: %s' % taskDN)
ldifLines.append('objectclass: top')
ldifLines.append('objectclass: ds-task')
ldifLines.append('objectclass: ds-task-import')
ldifLines.append('ds-task-class-name: org.opends.server.tasks.ImportTask')
ldifLines.append('ds-task-import-backend-id: %s' % backEnd )
ldifLines.append('ds-task-import-ldif-file: %s' % ldifFile )
ldifLines.append('ds-task-import-is-compressed: %s' % isCompressed )
ldifLines.append('ds-task-import-is-encrypted: %s' % isEncrypted )
if rejectsFile:
ldifLines.append('ds-task-import-reject-file: %s' % rejectsFile )
ldifLines.append('ds-task-import-overwrite-rejects: %s' % overwriteRejectsFile )
ldifLines.append('ds-task-import-append: %s' % append )
ldifLines.append('ds-task-import-skip-schema-validation: %s' % skipSchemaValidation )
ldifLines.append('ds-task-import-replace-existing: %s' % replaceExisting )
</script>
<script>
for branch in excludeBranches:
ldifLines.append('ds-task-import-exclude-branch: %s' % branch )
for branch in includeBranches:
ldifLines.append('ds-task-import-include-branch: %s' % branch )
for attribute in excludeAttributes:
ldifLines.append('ds-task-import-exclude-attribute: %s' % attribute )
for attribute in includeAttributes:
ldifLines.append('ds-task-import-include-attribute: %s' % attribute )
for filter in excludeFilters:
ldifLines.append('ds-task-import-exclude-filter: %s' % filter)
for filter in includeFilters:
ldifLines.append('ds-task-import-include-filter: %s' % filter)
</script>
<!-- Write out the import-task ldif -->
<script>
outfile = open(tmpTaskLdif,"w")
for line in ldifLines:
outfile.write("%s\n" % line)
outfile.close()
</script>
<!-- Copy the import-task ldif to remote host -->
<message>'Copy import task ldif (%s) to %s' % (tmpTaskLdif,taskLdif)</message>
<call function="'copyFile'">
{ 'location' : STAXServiceMachine,
'srcfile' : tmpTaskLdif,
'destfile' : taskLdif,
'remotehost' : myLocation }
</call>
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'taskLabel' : 'Online Import Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd,
'dsTaskLdif' : taskLdif }
</call>
<!-- Check that the ldap task is completed -->
<if expr="STAFCmdRC == 0">
<sequence>
<call function="'CheckLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd }
</call>
</sequence>
</if>
</sequence>
</function>
<!-- Check Import Function -->
<function name="checkImport">
<function-prolog>
This function verifies an import of an ldif file
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="dsHost" type="optional" default="DIRECTORY_INSTANCE_HOST">
<function-arg-description>
Directory server hostname or IP address
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPort" type="optional" default="DIRECTORY_INSTANCE_PORT">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="Port number"/>
</function-arg-def>
<function-arg-def name="dsDn" type="optional" default="DIRECTORY_INSTANCE_DN">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="DN"/>
</function-arg-def>
<function-arg-def name="dsPswd" type="optional" default="DIRECTORY_INSTANCE_PSWD">
<function-arg-description>
Bind password
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="expectedEntries" type="required">
<function-arg-description>
Entries expected to be present after import
</function-arg-description>
<function-arg-property name="type" value="list"/>
</function-arg-def>
<function-arg-def name="missingEntries" type="optional" default="'NULL'">
<function-arg-description>
Optional entries expected to be missing after import
</function-arg-description>
<function-arg-property name="type" value="list"/>
</function-arg-def>
<function-arg-def name="expectedAttributes" type="optional" default="'NULL'">
<function-arg-description>
Optional attributes expected to be present after import
</function-arg-description>
<function-arg-property name="type" value="list"/>
</function-arg-def>
<function-arg-def name="missingAttributes" type="optional" default="'NULL'">
<function-arg-description>
Optional attributes expected to be missing after import
</function-arg-description>
<function-arg-property name="type" value="list"/>
</function-arg-def>
<function-arg-def name="suffix" type="optional" default="DIRECTORY_INSTANCE_SFX">
<function-arg-description>
Optional main suffix for the import
</function-arg-description>
<function-arg-property name="type" value="list"/>
</function-arg-def>
<function-arg-def name="startDS" type="optional" default="'yes'">
<function-arg-description>
Optional start the Directory Server after import
</function-arg-description>
<function-arg-property name="type" value="list"/>
</function-arg-def>
</function-map-args>
<sequence>
<!-- Local variables -->
<script>
myLocation=location
myPath=dsPath
myhost=dsHost
myport=dsPort
mydn=dsDn
mypswd=dsPswd
</script>
<!-- Assume that if DS is not started then there is no need to stop it -->
<script>
if startDS == 'yes':
stopDS='yes'
else:
stopDS='no'
</script>
<!-- Do we need to start the DS -->
<if expr="startDS == 'yes'">
<sequence>
<!-- StartDS -->
<call function="'StartDsWithScript'">
{ 'location' : myLocation,
'dsPath' : myPath }
</call>
<!-- Wait for DS to start -->
<call function="'isAlive'">
{ 'location' : myLocation,
'dsPath' : myPath,
'dsInstanceHost' : myhost ,
'dsInstancePort' : myport ,
'dsInstanceDn' : mydn ,
'dsInstancePswd' : mypswd ,
'noOfLoops' : 5 ,
'noOfMilliSeconds' : 2000 }
</call>
</sequence>
</if>
<!-- Search for expected entries -->
<iterate var="expectedEntry" in="expectedEntries">
<sequence>
<call function="'SearchObject'">
{ 'location' : myLocation ,
'dsPath' : myPath,
'dsInstanceHost' : myhost ,
'dsInstancePort' : myport ,
'dsInstanceDn' : mydn ,
'dsInstancePswd' : mypswd ,
'dsBaseDN' : '%s' % expectedEntry ,
'dsFilter' : 'objectclass=*'
}
</call>
<call function="'checktestRC'">
{ 'returncode' : RC ,
'result' : STAXResult }
</call>
</sequence>
</iterate>
<!-- Search for missing entries -->
<iterate var="missingEntry" in="missingEntries">
<sequence>
<if expr="missingEntry == 'NULL'">
<break/>
</if>
<call function="'SearchObject'">
{ 'location' : myLocation ,
'dsPath' : myPath,
'dsInstanceHost' : myhost ,
'dsInstancePort' : myport ,
'dsInstanceDn' : mydn ,
'dsInstancePswd' : mypswd ,
'dsBaseDN' : '%s' % missingEntry ,
'dsFilter' : 'objectclass=*' ,
'expectedRC' : 32
}
</call>
</sequence>
</iterate>
<!-- Do we need to stop the Directory Server -->
<if expr="stopDS == 'yes'">
<!-- StopDS -->
<call function="'StopDsWithScript'">
{ 'location' : myLocation ,
'dsPath' : myPath,
'dsHost' : myhost ,
'dsPort' : myport ,
'dsBindDN' : mydn ,
'dsBindPwd' : mypswd }
</call>
</if>
</sequence>
</function>
<!-- Export LDIF Function -->
<function name="exportLdif">
<function-prolog>
This function performs an export to an ldif file on or off line
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="ldifFile" type="required">
<function-arg-description>
The name of the ldif file to be written
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="backEnd" type="optional" default="DIRECTORY_INSTANCE_BE">
<function-arg-description>
The name of the database backend
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="extraParams" type="optional" default="''">
<function-arg-description>
Optional extra parameters for specific test cases
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<script>
if dsPath:
dsBinPath='%s/%s' % (dsPath,fileFolder)
</script>
<message>
'%s/export-ldif%s -l %s -n %s %s' % (dsBinPath,fileExt,ldifFile,backEnd,extraParams)
</message>
<call function="'runCommand'">
{ 'location' : location,
'name' : 'Ldif Export',
'command' : '%s/export-ldif%s' % (dsBinPath,fileExt),
'arguments' : '-l %s -n %s %s' % (ldifFile,backEnd,extraParams)
}
</call>
<script>
exportRC=RC
exportResult=STAXResult
</script>
<call function="'checkRC'">
{ 'returncode' : exportRC ,
'result' : exportResult }
</call>
<return>exportRC</return>
</sequence>
</function>
<!-- Export Task Function -->
<function name="exportLdifTask">
<function-prolog>
This function performs an on line export task of an ldif file
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="dsInstanceHost" type="optional">
<function-arg-description>
Directory server host name
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstancePort" type="optional">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstanceDn" type="optional">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="dsInstancePswd" type="optional">
<function-arg-description>
Bind password
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="taskID" type="optional">
<function-arg-description>
The identifier for the task
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="ldifFile" type="optional">
<function-arg-description>
The name of the ldif file
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="backEnd" type="optional" default="DIRECTORY_INSTANCE_BE">
<function-arg-description>
Optional the name of the database backend
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="isCompressed" type="optional" default="'FALSE'">
<function-arg-description>
Optional exported ldif data file compressed
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
<function-arg-def name="isEncrypted" type="optional" default="'FALSE'">
<function-arg-description>
Optional exported ldif data file encrypted
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
<function-arg-def name="append" type="optional" default="'FALSE'">
<function-arg-description>
Optional append exported ldif data
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
<function-arg-def name="excludeBranches" type="optional" default="''">
<function-arg-description>
Optional exclude branches
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="includeBranches" type="optional" default="''">
<function-arg-description>
Optional include branches
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="excludeAttributes" type="optional" default="''">
<function-arg-description>
Optional exclude attributes
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="includeAttributes" type="optional" default="''">
<function-arg-description>
Optional include attributes
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="excludeFilters" type="optional" default="''">
<function-arg-description>
Optional exclude filters
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="includeFilters" type="optional" default="''">
<function-arg-description>
Optional exclude filters
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
<function-arg-def name="isSignedHash" type="optional" default="'FALSE'">
<function-arg-description>
Optional generate a signed hash of the export data
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
</function-map-args>
<sequence>
<!-- Local variables -->
<script>
myLocation=location
taskLdifFile='export-task.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
</script>
<!-- Build the export task configuration object -->
<script>
ldifLines=[]
ldifLines.append('dn: %s' % taskDN)
ldifLines.append('objectclass: top')
ldifLines.append('objectclass: ds-task')
ldifLines.append('objectclass: ds-task-export')
ldifLines.append('ds-task-class-name: org.opends.server.tasks.ExportTask')
ldifLines.append('ds-task-id: %s' % taskID)
ldifLines.append('ds-task-export-backend-id: %s' % backEnd )
ldifLines.append('ds-task-export-ldif-file: %s' % ldifFile )
ldifLines.append('ds-task-export-compress-ldif: %s' % isCompressed )
ldifLines.append('ds-task-export-encrypt-ldif: %s' % isEncrypted )
ldifLines.append('ds-task-export-sign-hash: %s' % isSignedHash )
</script>
<script>
for branch in excludeBranches:
ldifLines.append('ds-task-export-exclude-branch: %s' % branch )
for branch in includeBranches:
ldifLines.append('ds-task-export-include-branch: %s' % branch )
for attribute in excludeAttributes:
ldifLines.append('ds-task-export-exclude-attribute: %s' % attribute )
for attribute in includeAttributes:
ldifLines.append('ds-task-export-include-attribute: %s' % attribute )
for filter in excludeFilters:
ldifLines.append('ds-task-export-exclude-filter: %s' % filter)
for filter in includeFilters:
ldifLines.append('ds-task-export-include-filter: %s' % filter)
</script>
<!-- Write out the export-task ldif -->
<script>
outfile = open(tmpTaskLdif,"w")
for line in ldifLines:
outfile.write("%s\n" % line)
outfile.close()
</script>
<!-- Copy the export-task ldif to remote host -->
<message>'Copy export task ldif (%s) to %s' % (tmpTaskLdif,taskLdif)</message>
<call function="'copyFile'">
{ 'location' : STAXServiceMachine,
'srcfile' : tmpTaskLdif,
'destfile' : taskLdif,
'remotehost' : myLocation }
</call>
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'taskLabel' : 'Online Export Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd,
'dsTaskLdif' : taskLdif }
</call>
<!-- Check that the task is completed -->
<if expr="STAFCmdRC == 0">
<sequence>
<call function="'CheckLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd }
</call>
</sequence>
</if>
</sequence>
</function>
<!-- Backup Function -->
<function name="backup">
<function-prolog>
This function performs an off line backup
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="backEnd" type="optional" default="DIRECTORY_INSTANCE_BE">
<function-arg-description>
Optional the name of the database backend
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="backupDir" type="required">
<function-arg-description>
The directory where the backup files will be placed
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="extraParams" type="optional" default="''">
<function-arg-description>
Optional extra parameters for specific test cases
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<!-- Local variables -->
<script>
myLocation=location
if dsPath:
dsBinPath='%s/%s' % (dsPath,fileFolder)
</script>
<message>
'backup%s -n %s -d %s %s' % (fileExt,backEnd,backupDir,extraParams)
</message>
<call function="'runCommand'">
{ 'name' : 'Offline Backup',
'location' : myLocation,
'command' : '%s/backup%s' % (dsBinPath,fileExt),
'arguments' : '-d %s -n %s %s' % (backupDir,backEnd,extraParams)
}
</call>
<script>
backupRC=RC
backupResult=STAXResult
</script>
<call function="'checkRC'">
{ 'returncode' : backupRC ,
'result' : backupResult }
</call>
<return>backupRC</return>
</sequence>
</function>
<!-- Backup Task Function -->
<function name="backupTask">
<function-prolog>
This function performs an on line backup task
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="dsInstanceHost" type="optional">
<function-arg-description>
Directory server host name
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstancePort" type="optional">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstanceDn" type="optional">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="dsInstancePswd" type="optional">
<function-arg-description>
Bind password
</function-arg-description>
</function-arg-def>
<function-arg-def name="taskID" type="optional">
<function-arg-description>
The identifier for the task
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="backupDir" type="required">
<function-arg-description>
Path to the target directory for the backup file(s)
</function-arg-description>
<function-arg-property name="type" value="filepath"/>
</function-arg-def>
<function-arg-def name="backEnd" type="optional" default="DIRECTORY_INSTANCE_BE">
<function-arg-description>
Optional the name of the database backend
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="backupAll" type="optional" default="'FALSE'">
<function-arg-description>
Optional back up all backends in the server
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
<function-arg-def name="backupIncremental" type="optional">
<function-arg-description>
Optional perform an incremental backup rather than a full backup
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="backupIncrementalId" type="optional">
<function-arg-description>
Optional use the provided identifier for the backup
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="Compress" type="optional" default="'FALSE'">
<function-arg-description>
Optional backup contents compressed
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
<function-arg-def name="Encrypt" type="optional" default="'FALSE'">
<function-arg-description>
Optional backup contents encrypted
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
<function-arg-def name="signHash" type="optional" default="'FALSE'">
<function-arg-description>
Optional generate a signed hash of the backup data
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
<function-arg-def name="hash" type="optional" default="'FALSE'">
<function-arg-description>
Optional generate a hash of the backup data
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
</function-map-args>
<sequence>
<script>
myLocation=location
myPath=dsPath
taskLdifFile='backup-task.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
</script>
<!-- Build the backup task configuration object -->
<script>
ldifLines=[]
ldifLines.append('dn: %s' % taskDN)
ldifLines.append('objectclass: top')
ldifLines.append('objectclass: ds-task')
ldifLines.append('objectclass: ds-task-backup')
ldifLines.append('ds-task-class-name: org.opends.server.tasks.BackupTask')
ldifLines.append('ds-backup-id: %s' % taskID)
ldifLines.append('ds-task-backup-backend-id: %s' % backEnd )
ldifLines.append('ds-backup-directory-path: %s' % backupDir )
ldifLines.append('ds-task-backup-all: %s' % backupAll )
ldifLines.append('ds-task-backup-compress: %s' % Compress )
ldifLines.append('ds-task-backup-encrypt: %s' % Encrypt )
ldifLines.append('ds-task-backup-sign-hash: %s' % signHash )
ldifLines.append('ds-task-backup-hash: %s' % hash )
if backupIncremental:
ldifLines.append('ds-task-backup-incremental: %s' % backupIncremental )
if backupIncrementalId:
ldifLines.append('ds-task-backup-incremental-base-id: %s' % backupIncrementalId )
</script>
<!-- Write out the backup-task ldif -->
<script>
outfile = open(tmpTaskLdif,"w")
for line in ldifLines:
outfile.write("%s\n" % line)
outfile.close()
</script>
<!-- Copy the backup-task ldif to remote host -->
<message>'Copy backup task ldif file.'</message>
<call function="'copyFile'">
{ 'location' : STAXServiceMachine,
'srcfile' : tmpTaskLdif,
'destfile' : taskLdif,
'remotehost' : myLocation }
</call>
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'taskLabel' : 'Online Backup Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd,
'dsTaskLdif' : taskLdif }
</call>
<!-- Check that the ldap task is completed -->
<if expr="STAFCmdRC == 0">
<sequence>
<call function="'CheckLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd }
</call>
</sequence>
</if>
</sequence>
</function>
<!-- Restore Function -->
<function name="restore">
<function-prolog>
This function performs an off line restore
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="backupDir" type="required">
<function-arg-description>
The directory where the backup files will be placed
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="extraParams" type="optional" default="''">
<function-arg-description>
Optional extra parameters for specific test cases
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<!-- Local variables -->
<script>
myLocation=location
if dsPath:
dsBinPath='%s/%s' % (dsPath,fileFolder)
</script>
<message>
'restore%s -d %s %s' % (fileExt,backupDir,extraParams)
</message>
<call function="'runCommand'">
{ 'name' : 'Offline Restore',
'location' : myLocation,
'command' : '%s/restore%s' % (dsBinPath,fileExt),
'arguments' : '-d %s %s' % (backupDir,extraParams)
}
</call>
<script>
restoreRC=RC
restoreResult=STAXResult
</script>
<call function="'checkRC'">
{ 'returncode' : restoreRC ,
'result' : restoreResult }
</call>
<return>restoreRC</return>
</sequence>
</function>
<!-- Restore Task Function -->
<function name="restoreTask">
<function-prolog>
This function performs an on line restore task of a backup file
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="dsInstanceHost" type="optional">
<function-arg-description>
Directory server host name
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstancePort" type="optional">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstanceDn" type="optional">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="dsInstancePswd" type="optional">
<function-arg-description>
Bind password
</function-arg-description>
</function-arg-def>
<function-arg-def name="taskID" type="optional">
<function-arg-description>
The identifier for the task
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="backupDir" type="required">
<function-arg-description>
The name of the backup directory
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="backupId" type="optional">
<function-arg-description>
Optional the name of the backupId
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="verify" type="optional" default="'FALSE'">
<function-arg-description>
Optional verify the contents of the backup but do not restore it
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
</function-arg-def>
</function-map-args>
<sequence>
<script>
myLocation=location
myPath=dsPath
taskLdifFile='restore-task.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
</script>
<!-- Build the restore task configuration object -->
<script>
ldifLines=[]
ldifLines.append('dn: %s' % taskDN)
ldifLines.append('objectclass: top')
ldifLines.append('objectclass: ds-task')
ldifLines.append('objectclass: ds-task-restore')
ldifLines.append('ds-task-class-name: org.opends.server.tasks.RestoreTask')
ldifLines.append('ds-task-id: %s' % taskID)
ldifLines.append('ds-backup-directory-path: %s' % backupDir )
ldifLines.append('ds-task-restore-verify-only: %s' % verify )
if backupId:
ldifLines.append('ds-backup-id: %s' % backupId )
</script>
<!-- Write out the restore-task ldif -->
<script>
outfile = open(tmpTaskLdif,"w")
for line in ldifLines:
outfile.write("%s\n" % line)
outfile.close()
</script>
<!-- Copy the restore-task ldif to remote host -->
<message>'Copy restore task ldif file.'</message>
<call function="'copyFile'">
{ 'location' : STAXServiceMachine,
'srcfile' : tmpTaskLdif,
'destfile' : taskLdif,
'remotehost' : myLocation }
</call>
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'taskLabel' : 'Online Restore Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd,
'dsTaskLdif' : taskLdif }
</call>
<!-- Check that the ldap task is completed -->
<if expr="STAFCmdRC == 0">
<sequence>
<call function="'CheckLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd }
</call>
</sequence>
</if>
</sequence>
</function>
<!-- Shutdown Task Function -->
<function name="shutdownTask">
<function-prolog>
This function performs an on line export task for shutdown of the directory
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="dsInstanceHost" type="optional">
<function-arg-description>
Directory server host name
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstancePort" type="optional">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstanceDn" type="optional">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="dsInstancePswd" type="optional">
<function-arg-description>
Bind password
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="taskID" type="optional">
<function-arg-description>
The identifier for the task
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<!-- Local variables -->
<script>
myLocation=location
myPath=dsPath
taskLdifFile='shutdown-task.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
</script>
<!-- Build the shutdown task configuration object -->
<script>
ldifLines=[]
ldifLines.append('dn: %s' % taskDN)
ldifLines.append('objectclass: top')
ldifLines.append('objectclass: ds-task')
ldifLines.append('objectclass: ds-task-shutdown')
ldifLines.append('ds-task-class-name: org.opends.server.tasks.ShutdownTask')
ldifLines.append('ds-task-id: %s' % taskID)
</script>
<!-- Write out the shutdown-task ldif -->
<script>
outfile = open(tmpTaskLdif,"w")
for line in ldifLines:
outfile.write("%s\n" % line)
outfile.close()
</script>
<!-- Copy the shutdown-task ldif to remote host -->
<message>'Copy shutdown task ldif (%s) to %s' % (tmpTaskLdif,taskLdif)</message>
<call function="'copyFile'">
{ 'location' : STAXServiceMachine,
'srcfile' : tmpTaskLdif,
'destfile' : taskLdif,
'remotehost' : myLocation }
</call>
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'taskLabel' : 'Online Export Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd,
'dsTaskLdif' : taskLdif }
</call>
<return>STAFCmdRC</return>
</sequence>
</function>
<!-- Restart Task Function -->
<function name="restartTask">
<function-prolog>
This function performs an on line export task for restart of the directory
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="dsInstanceHost" type="optional">
<function-arg-description>
Directory server host name
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstancePort" type="optional">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstanceDn" type="optional">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="dsInstancePswd" type="optional">
<function-arg-description>
Bind password
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="taskID" type="optional">
<function-arg-description>
The identifier for the task
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<!-- Local variables -->
<script>
myLocation=location
myPath=dsPath
taskLdifFile='restart-task.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
</script>
<!-- Build the restart task configuration object -->
<script>
ldifLines=[]
ldifLines.append('dn: %s' % taskDN)
ldifLines.append('objectclass: top')
ldifLines.append('objectclass: ds-task')
ldifLines.append('objectclass: ds-task-shutdown')
ldifLines.append('ds-task-class-name: org.opends.server.tasks.ShutdownTask')
ldifLines.append('ds-task-restart-server: true')
ldifLines.append('ds-task-id: %s' % taskID)
</script>
<!-- Write out the restart-task ldif -->
<script>
outfile = open(tmpTaskLdif,"w")
for line in ldifLines:
outfile.write("%s\n" % line)
outfile.close()
</script>
<!-- Copy the restart-task ldif to remote host -->
<message>'Copy restart task ldif (%s) to %s' % (tmpTaskLdif,taskLdif)</message>
<call function="'copyFile'">
{ 'location' : STAXServiceMachine,
'srcfile' : tmpTaskLdif,
'destfile' : taskLdif,
'remotehost' : myLocation }
</call>
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'taskLabel' : 'Online Export Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd,
'dsTaskLdif' : taskLdif }
</call>
<!--- Check that DS started -->
<if expr="STAFCmdRC == 0">
<sequence>
<call function="'isAlive'">
{ 'noOfLoops' : 5 ,
'noOfMilliSeconds' : 2000 }
</call>
</sequence>
</if>
<return>STAFCmdRC</return>
</sequence>
</function>
<!-- Add Schema Task Function -->
<function name="addSchemaTask">
<function-prolog>
This function performs a dynamic schema add task
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="dsInstanceHost" type="optional">
<function-arg-description>
Directory server host name
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstancePort" type="optional">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstanceDn" type="optional">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="dsInstancePswd" type="optional">
<function-arg-description>
Bind password
</function-arg-description>
</function-arg-def>
<function-arg-def name="taskID" type="optional">
<function-arg-description>
The identifier for the task
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="ldifFile" type="required">
<function-arg-description>
The name of the ldif file that contains the schema updates
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<script>
myLocation=location
myPath=dsPath
taskLdifFile='schema.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
</script>
<!-- Build the schema task configuration object -->
<script>
ldifLines=[]
ldifLines.append('dn: %s' % taskDN)
ldifLines.append('objectclass: top')
ldifLines.append('objectclass: ds-task')
ldifLines.append('objectclass: ds-task-add-schema-file')
ldifLines.append('ds-task-class-name: org.opends.server.tasks.AddSchemaFileTask')
ldifLines.append('ds-task-id: %s' % taskID)
ldifLines.append('ds-task-schema-file-name: %s' % ldifFile )
</script>
<!-- Write out the schema-task ldif -->
<script>
outfile = open(tmpTaskLdif,"w")
for line in ldifLines:
outfile.write("%s\n" % line)
outfile.close()
</script>
<!-- Copy the schema-task ldif to remote host -->
<message>'Copy schema task ldif file.'</message>
<call function="'copyFile'">
{ 'location' : STAXServiceMachine,
'srcfile' : tmpTaskLdif,
'destfile' : taskLdif,
'remotehost' : myLocation }
</call>
<!-- Copy the schema update ldif to remote host's config/schema directory -->
<message>'Copy schema update ldif file.'</message>
<call function="'copyFile'">
{ 'location' : myLocation,
'srcfile' : '%s/schema/ldifs/%s' % (logsRemoteDataDir,ldifFile),
'destfile' : '%s/%s/config/schema/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,ldifFile),
'remotehost' : myLocation }
</call>
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'taskLabel' : 'Online Schema Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd,
'dsTaskLdif' : taskLdif }
</call>
<!-- Check that the ldap task is completed -->
<call function="'CheckLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd }
</call>
</sequence>
</function>
<!-- Add Leave Lockdown Task Function -->
<function name="leaveLockdownTask">
<function-prolog>
This function performs a leave lockdown task
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="dsInstanceHost" type="optional">
<function-arg-description>
Directory server host name
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstancePort" type="optional">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstanceDn" type="optional">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="dsInstancePswd" type="optional">
<function-arg-description>
Bind password
</function-arg-description>
</function-arg-def>
<function-arg-def name="taskID" type="optional">
<function-arg-description>
The identifier for the task
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<script>
myLocation=location
myPath=dsPath
taskLdifFile='leaveShutdownTask.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
</script>
<!-- Build the schema task configuration object -->
<script>
ldifLines=[]
ldifLines.append('dn: %s' % taskDN)
ldifLines.append('objectclass: top')
ldifLines.append('objectclass: ds-task')
ldifLines.append('ds-task-class-name: org.opends.server.tasks.LeaveLockdownModeTask')
ldifLines.append('ds-task-id: %s' % taskID)
</script>
<!-- Write out the task ldif -->
<script>
outfile = open(tmpTaskLdif,"w")
for line in ldifLines:
outfile.write("%s\n" % line)
outfile.close()
</script>
<!-- Copy the task ldif to remote host -->
<message>'Copy task ldif file.'</message>
<call function="'copyFile'">
{ 'location' : STAXServiceMachine,
'srcfile' : tmpTaskLdif,
'destfile' : taskLdif,
'remotehost' : myLocation }
</call>
<!-- Copy the schema update ldif to remote host's config/schema directory -->
<!--
<message>'Copy update ldif file.'</message>
<call function="'copyFile'">
{ 'location' : myLocation,
'srcfile' : '%s/schema/ldifs/%s' % (logsRemoteDataDir,ldifFile),
'destfile' : '%s/%s/config/schema/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,ldifFile),
'remotehost' : myLocation }
</call>
-->
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'taskLabel' : 'Online Schema Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd,
'dsTaskLdif' : taskLdif }
</call>
<!-- Check that the ldap task is completed -->
<call function="'CheckLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd }
</call>
</sequence>
</function>
<!-- Total Update Task Function -->
<function name="TotalUpdateTask">
<function-prolog>
This function performs a total update of a replication domain
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="dsInstanceHost" type="optional">
<function-arg-description>
Directory server host name
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstancePort" type="optional">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsInstanceDn" type="optional">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="dsInstancePswd" type="optional">
<function-arg-description>
Bind password
</function-arg-description>
</function-arg-def>
<function-arg-def name="taskID" type="optional">
<function-arg-description>
The identifier for the task
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="domainDN" type="required">
<function-arg-description>
The dn of the domain to be replicated
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="replicaServerID" type="required">
<function-arg-description>
The id of the replica server
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
</function-map-args>
<sequence>
<script>
myLocation=location
myPath=dsPath
taskLdifFile='totalupdate-task.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
</script>
<!-- Build the total update task configuration object -->
<script>
ldifLines=[]
ldifLines.append('dn: %s' % taskDN)
ldifLines.append('objectclass: top')
ldifLines.append('objectclass: ds-task')
ldifLines.append('objectclass: ds-task-initialize-from-remote-replica')
ldifLines.append('ds-task-class-name: org.opends.server.tasks.InitializeTask')
ldifLines.append('ds-task-id: %s' % taskID)
ldifLines.append('ds-task-initialize-domain-dn: %s' % domainDN)
ldifLines.append('ds-task-initialize-replica-server-id: %s' % replicaServerID)
</script>
<!-- Write out the totalupdate-task ldif -->
<script>
outfile = open(tmpTaskLdif,"w")
for line in ldifLines:
outfile.write("%s\n" % line)
outfile.close()
</script>
<!-- Copy the totalupdate-task ldif to remote host -->
<message>'Copy totalupdate task ldif file.'</message>
<call function="'copyFile'">
{ 'location' : STAXServiceMachine,
'srcfile' : tmpTaskLdif,
'destfile' : taskLdif,
'remotehost' : myLocation }
</call>
<script>
STAXCode, STAXReason=STAXResult
</script>
<if expr="STAXCode != 0">
<sequence>
<message level="'error'">
'Copy of totalupdate task failed (STAXCode=%s)' % STAXCode
</message>
<return>[STAXCode, STAXReason]</return>
</sequence>
</if>
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'taskLabel' : 'Online Total Update Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd,
'dsTaskLdif' : taskLdif }
</call>
<script>
STAXCode, STAXReason=STAXResult
</script>
<if expr="STAXCode != 0">
<sequence>
<message>
'Start of totalupdate task failed (Code=%s)' % STAXCode
</message>
<return>[STAXCode, STAXReason]</return>
</sequence>
</if>
<!-- Check that the ldap task is completed -->
<call function="'CheckLdapTask'">
{ 'location' : myLocation,
'dsPath' : myPath,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
'dsBindDn' : dsInstanceDn,
'dsBindPswd' : dsInstancePswd }
</call>
<script>
STAXCode, STAXReason=STAXResult
</script>
<if expr="STAXCode != 0">
<sequence>
<message>
'Check of totalupdate task failed (Code=%s)' % STAXCode
</message>
<return>[STAXCode, STAXReason]</return>
</sequence>
</if>
<script>
STAXCode=0
STAXReason='%s: Success' % STAXCurrentFunction
</script>
<return>[STAXCode, STAXReason]</return>
</sequence>
</function>
<function name="StartLdapTask">
<function-prolog>
This function starts a task using the ldap task interface
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="taskLabel" type="required">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="dsHost" type="optional">
<function-arg-description>
Directory server host name
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsPort" type="optional">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsBindDn" type="optional">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="dsBindPswd" type="optional">
<function-arg-description>
Bind password
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="dsTaskLdif" type="required">
<function-arg-description>
Ldif file for task
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
</function-map-args>
<sequence>
<!-- Local variables -->
<script>
myLocation=location
</script>
<!-- Build the Modify Command -->
<script>
STAFCmdParamsList=[]
STAFCmdParams=''
if dsPath:
dsBinPath='%s/%s' % (dsPath,fileFolder)
STAFCmd='%s/ldapmodify%s' % (dsBinPath,fileExt)
STAFCmdParamsList.append('-a')
if dsHost:
STAFCmdParamsList.append('-h %s' % dsHost)
if dsPort:
STAFCmdParamsList.append('-p %s' % dsPort)
if dsBindDn:
STAFCmdParamsList.append('-D "%s"' % dsBindDn)
if dsBindPswd:
STAFCmdParamsList.append('-w "%s"' % dsBindPswd)
STAFCmdParams=' '.join(STAFCmdParamsList)
</script>
<message>
'%s %s' % (STAFCmd, STAFCmdParams)
</message>
<!-- Perform Task with ldapmodify -->
<process name="taskLabel">
<location>'%s' % myLocation</location>
<command>'%s' % STAFCmd</command>
<parms>'%s' % STAFCmdParams</parms>
<workdir>'%s' % dsBinPath</workdir>
<envs>
['PATH=/bin:/usr/bin:%s' % dsBinPath, 'JAVA_HOME=%s' % JAVA_HOME]
</envs>
<stdin>'%s' % dsTaskLdif</stdin>
<stderr mode="'stdout'"/>
<returnstdout/>
</process>
<script>
STAFCmdRC=RC
STAFCmdResult=STAXResult
</script>
<call function="'checkRC'">
{ 'returncode' : STAFCmdRC ,
'result' : STAFCmdResult }
</call>
<return>[STAFCmdRC, STAFCmdResult[0][1]]</return>
</sequence>
</function>
<function name="CheckLdapTask">
<function-prolog>
This function checks a task using the ldap task interface
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsTaskDn" type="required">
<function-arg-description>
Dn of the task to be performed
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
<function-arg-description>
Pathname to installation root
</function-arg-description>
<function-arg-property name="type" value="pathname"/>
</function-arg-def>
<function-arg-def name="dsHost" type="optional">
<function-arg-description>
Directory server host name
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsPort" type="optional">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
<function-arg-def name="dsBindDn" type="optional">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="dn"/>
</function-arg-def>
<function-arg-def name="dsBindPswd" type="optional">
<function-arg-description>
Bind password
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<!-- Local variables -->
<script>
myLocation=location
</script>
<script>
STAFCmdParamsList=[]
STAFCmdParams=''
if dsPath:
dsBinPath='%s/%s' % (dsPath,fileFolder)
STAFCmd='%s/ldapsearch%s' % (dsBinPath,fileExt)
if dsHost:
STAFCmdParamsList.append('-h %s' % dsHost)
if dsPort:
STAFCmdParamsList.append('-p %s' % dsPort)
if dsBindDn:
STAFCmdParamsList.append('-D "%s"' % dsBindDn)
if dsBindPswd:
STAFCmdParamsList.append('-w "%s"' % dsBindPswd)
if dsTaskDn:
STAFCmdParamsList.append('-b "%s"' % dsTaskDn)
dsScope='base'
STAFCmdParamsList.append('-s %s' % dsScope)
dsFilter='"objectclass=*"'
STAFCmdParamsList.append('%s' % dsFilter)
dsAttribute='ds-task-state'
STAFCmdParamsList.append('%s' % dsAttribute)
dsAttribute='ds-task-log-message'
STAFCmdParamsList.append('%s' % dsAttribute)
STAFCmdParams=' '.join(STAFCmdParamsList)
</script>
<script>
successPattern = re.compile('ds-task-state: COMPLETED_SUCCESSFULLY')
stopErrPattern = re.compile('ds-task-state: STOPPED_BY_ERROR')
</script>
<!-- Wait for the task to be COMPLETED_SUCCESSFULLY -->
<script>taskRC=1</script>
<loop from="1" to="10" while="taskRC != 0">
<sequence>
<message>
'%s %s' % (STAFCmd, STAFCmdParams)
</message>
<!-- Search for task status -->
<call function="'runCommand'">
{ 'name' : 'Search On line Import Task',
'command' : STAFCmd,
'arguments' : STAFCmdParams,
'location' : myLocation
}
</call>
<script>
STAFCmdRC=RC
STAFCmdResult=STAXResult
</script>
<if expr='re.search(successPattern, STAFCmdResult[0][1]) != None'>
<sequence>
<script>taskRC=0</script>
<message>
'%s' % STAFCmdResult
</message>
<return>[taskRC, STAFCmdResult[0][1]]</return>
</sequence>
<elseif expr='re.search(stopErrPattern, STAFCmdResult[0][1]) != None'>
<sequence>
<message level="'error'">
'%s' % STAFCmdResult
</message>
<return>[taskRC, STAFCmdResult[0][1]]</return>
</sequence>
</elseif>
<else>
<message level="'Warning'">
'%s' % STAFCmdResult
</message>
</else>
</if>
<call function="'checkRC'">
{ 'returncode' : STAFCmdRC ,
'result' : STAFCmdResult }
</call>
<call function="'Sleep'">
{ 'sleepForMilliSeconds' : '2000' }
</call>
</sequence>
</loop>
<return>[taskRC, STAFCmdResult[0][1]]</return>
</sequence>
</function>
</stax>