pta_setup.xml revision a031e6d9877cabf432f5e4f9caafec7f5781198a
5541N/A<?xml version="1.0" encoding="UTF-8" standalone="no"?>
5546N/A<!DOCTYPE stax SYSTEM "/shared/stax.dtd">
5541N/A<!--
5541N/A ! CDDL HEADER START
5541N/A !
5541N/A ! The contents of this file are subject to the terms of the
5541N/A ! Common Development and Distribution License, Version 1.0 only
5541N/A ! (the "License"). You may not use this file except in compliance
5541N/A ! with the License.
5541N/A !
5541N/A ! You can obtain a copy of the license at
5541N/A ! trunk/opends/resource/legal-notices/CDDLv1_0.txt
5541N/A ! or http://forgerock.org/license/CDDLv1.0.html.
5541N/A ! See the License for the specific language governing permissions
5541N/A ! and limitations under the License.
5541N/A !
5541N/A ! When distributing Covered Code, include this CDDL HEADER in each
5541N/A ! file and include the License file at
5541N/A ! trunk/opends/resource/legal-notices/CDDLv1_0.txt. If applicable,
5541N/A ! add the following below this CDDL HEADER, with the fields enclosed
5541N/A ! by brackets "[]" replaced with your own identifying information:
5541N/A ! Portions Copyright [yyyy] [name of copyright owner]
5541N/A !
5541N/A ! CDDL HEADER END
5541N/A !
5541N/A ! Copyright 2011 ForgeRock AS.
5541N/A ! -->
5541N/A<stax>
5541N/A
5541N/A <defaultcall function="pta_setup"/>
5541N/A
5541N/A <function name="pta_setup">
5541N/A <function-map-args>
5541N/A <function-arg-def name="topologyFile"
5541N/A type="optional"
5541N/A default="'%s/basic_topology.txt' % REPLICATION_CONFIG_DIR">
5541N/A <function-arg-description>
5541N/A Pathname to file describing the topology.
5541N/A </function-arg-description>
5541N/A <function-arg-property name="type" value="filepath"/>
5541N/A </function-arg-def>
5541N/A </function-map-args>
5541N/A
5541N/A <sequence>
5541N/A
5541N/A <block name="'pta-setup'">
5541N/A
5541N/A <testcase name="getTestCaseName('PTA Setup')">
5541N/A
5541N/A <try>
5541N/A
5541N/A <sequence>
5541N/A
5541N/A <call function="'testCase_Preamble'"/>
5541N/A
5541N/A <message>
5541N/A 'Create DS topology as described in %s' % topologyFile
5541N/A </message>
5541N/A
5560N/A <call function="'createTopology'">
5562N/A { 'topologyDescFile' : topologyFile,
5541N/A 'sharedDataFolder' : 'pta'
5541N/A }
5541N/A </call>
5541N/A
5541N/A <!-- Start the servers in the topology -->
5541N/A <call function="'startServers'">
5541N/A [_splitServerList ]
5541N/A </call>
5541N/A
5541N/A <script>
5541N/A ldapPtaPolicyName = 'LDAP PTA'
5541N/A ldapPtaPolicyDn = 'cn=%s,cn=Password Policies,cn=config' % ldapPtaPolicyName
5541N/A
5541N/A local_ldap = 0
5541N/A primary_remote_ldap = 1
5541N/A secondary_remote_ldap = 2
5541N/A
5541N/A local_ldap_server = _topologyServerList[local_ldap]
5541N/A primary_remote_ldap_server = _topologyServerList[primary_remote_ldap]
5541N/A secondary_remote_ldap_server = _topologyServerList[secondary_remote_ldap]
5541N/A
5548N/A primaryHost = primary_remote_ldap_server.getHostname()
5546N/A primaryPort = primary_remote_ldap_server.getPort()
5541N/A primarySslPort = primary_remote_ldap_server.getSslPort()
5548N/A secondaryHost = secondary_remote_ldap_server.getHostname()
5551N/A secondaryPort = secondary_remote_ldap_server.getPort()
5551N/A secondarySslPort = secondary_remote_ldap_server.getSslPort()
5560N/A </script>
5560N/A
5562N/A <!-- Get the local server store password from keystore.pin -->
5562N/A <call function="'getFile'">
5562N/A { 'location' : local_ldap_server.getHostname(),
5562N/A 'filename' : '%s/%s/config/keystore.pin' \
5571N/A % (local_ldap_server.getDir(),OPENDSNAME)
5541N/A }
5541N/A </call>
5541N/A <script>
5541N/A LocalKeyStorePin = STAXResult[1].replace('\n','')
5541N/A print "Local store password = %s" % LocalKeyStorePin
5541N/A </script>
5541N/A
5541N/A <!-- On all servers create suffixes -->
5541N/A <iterate var="server"
5541N/A in="_topologyServerList"
5541N/A indexvar="whoami">
5541N/A <sequence>
5541N/A <if expr="whoami == local_ldap">
5541N/A <sequence>
5541N/A <message>
5541N/A 'local-ldap-server %s:%s' % \
5541N/A (server.getHostname(),server.getPort())
5541N/A </message>
5541N/A <script>
5541N/A dataFile = 'Example.ldif'
5541N/A serverDataFile = '%s/pta/%s' \
5541N/A % (server.getDataDir(), dataFile)
5541N/A serverSkipFile = '%s/pta/skipped%s.ldif' \
5541N/A % (server.getTmpDir(),whoami)
5541N/A serverRejectFile = '%s/pta/rejects%s.ldif' \
5541N/A % (server.getTmpDir(),whoami)
5541N/A </script>
5541N/A <message>
5541N/A 'Import data from %s into local-ldap-server %s:%s' \
5541N/A % (serverDataFile, server.getHostname(), server.getPort())
5541N/A </message>
5541N/A
5541N/A <!-- Import data into "local-ldap-server" -->
5541N/A <call function="'ImportLdifWithScript'">
5541N/A { 'location' : server.getHostname(),
5541N/A 'dsPath' : '%s/%s' \
5541N/A % (server.getDir(),OPENDSNAME),
5541N/A 'dsInstanceHost' : server.getHostname(),
5541N/A 'dsInstanceAdminPort' : server.getAdminPort(),
5541N/A 'dsInstanceDn' : server.getRootDn(),
5541N/A 'dsInstancePswd' : server.getRootPwd(),
5541N/A 'backEnd' : 'userRoot',
5541N/A 'ldifFile' : serverDataFile ,
5541N/A 'skipFile' : serverSkipFile ,
5541N/A 'rejectFile' : serverRejectFile
5541N/A }
5541N/A </call>
5541N/A
5541N/A <script>
5541N/A options=[]
5541N/A options.append('--backend-name "AD"')
5541N/A options.append('--set base-dn:"dc=AD,dc=com"')
5541N/A options.append('--set enabled:true')
5541N/A options.append('--set writability-mode:enabled')
5541N/A options.append('--type local-db')
5541N/A dsconfigOptions=' '.join(options)
</script>
<call function="'dsconfig'">
{ 'location' : local_ldap_server.getHostname(),
'dsPath' : '%s/%s' \
% (local_ldap_server.getDir(),OPENDSNAME),
'dsInstanceHost' : local_ldap_server.getHostname(),
'dsInstanceAdminPort' : local_ldap_server.getAdminPort(),
'dsInstanceDn' : local_ldap_server.getRootDn(),
'dsInstancePswd' : local_ldap_server.getRootPwd(),
'subcommand' : 'create-backend',
'optionsString' : dsconfigOptions
}
</call>
<script>
dataFile = 'AD10.ldif'
serverDataFile = '%s/pta/%s' \
% (local_ldap_server.getDataDir(), dataFile)
serverSkipFile = '%s/pta/skippedAD10.ldif' \
% local_ldap_server.getTmpDir()
serverRejectFile = '%s/pta/rejectsAD10.ldif' \
% local_ldap_server.getTmpDir()
</script>
<call function="'ImportLdifWithScript'">
{ 'location' : local_ldap_server.getHostname(),
'dsPath' : '%s/%s' \
% (local_ldap_server.getDir(),OPENDSNAME),
'dsInstanceHost' : local_ldap_server.getHostname(),
'dsInstanceAdminPort' : local_ldap_server.getAdminPort(),
'dsInstanceDn' : local_ldap_server.getRootDn(),
'dsInstancePswd' : local_ldap_server.getRootPwd(),
'backEnd' : 'AD',
'ldifFile' : serverDataFile,
'skipFile' : serverSkipFile ,
'rejectFile' : serverRejectFile
}
</call>
<script>
options=[]
options.append('--backend-name "AD"')
options.append('--set enabled:false')
dsconfigOptions=' '.join(options)
</script>
<call function="'dsconfig'">
{ 'location' : local_ldap_server.getHostname(),
'dsPath' : '%s/%s' \
% (local_ldap_server.getDir(),OPENDSNAME),
'dsInstanceHost' : local_ldap_server.getHostname(),
'dsInstanceAdminPort' : local_ldap_server.getAdminPort(),
'dsInstanceDn' : local_ldap_server.getRootDn(),
'dsInstancePswd' : local_ldap_server.getRootPwd(),
'subcommand' : 'set-backend-prop',
'optionsString' : dsconfigOptions
}
</call>
</sequence>
<else>
<sequence>
<message>
'remote-ldap-server %s:%s' \
% (server.getHostname(),server.getPort())
</message>
<!-- Create different backend on remote-ldap-servers -->
<script>
options=[]
options.append('--backend-name "AD"')
options.append('--set base-dn:"dc=AD,dc=com"')
options.append('--set enabled:true')
options.append('--set writability-mode:enabled')
options.append('--type local-db')
createBackendOptions=' '.join(options)
</script>
<call function="'dsconfig'">
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(),OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstanceAdminPort' : server.getAdminPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'subcommand' : 'create-backend',
'optionsString' : createBackendOptions
}
</call>
<script>
dataFile = 'AD.ldif'
serverDataFile = '%s/pta/%s' \
% (server.getDataDir(), dataFile)
serverSkipFile = '%s/pta/skipped%s.ldif' \
% (server.getTmpDir(),whoami)
serverRejectFile = '%s/pta/rejects%s.ldif' \
% (server.getTmpDir(),whoami)
</script>
<message>
'Import data from %s into remote-ldap-server %s:%s' \
% (serverDataFile, server.getHostname(), server.getPort())
</message>
<!-- Import data into "remote-ldap-servers" -->
<call function="'ImportLdifWithScript'">
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(),OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstanceAdminPort' : server.getAdminPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'backEnd' : 'AD',
'ldifFile' : serverDataFile,
'skipFile' : serverSkipFile ,
'rejectFile' : serverRejectFile
}
</call>
<!-- Get the store password from keystore.pin -->
<call function="'getFile'">
{ 'location' : server.getHostname(),
'filename' : '%s/%s/config/keystore.pin' \
% (server.getDir(),OPENDSNAME)
}
</call>
<script>
keyStorePin = STAXResult[1].replace('\n','')
serverCertPEM = '%s/%s/config/server-cert%s.pem' \
% (server.getDir(),OPENDSNAME,whoami)
print "Remote store password = %s" % keyStorePin
</script>
<!-- Show the certificate details for remote servers -->
<call function="'ListCertificate'">
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(),OPENDSNAME),
'certAlias' : 'server-cert' ,
'keystore' : 'truststore' ,
'storepass' : keyStorePin,
}
</call>
<!-- Export certificates from remote servers -->
<call function="'ExportCertificate'">
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(),OPENDSNAME),
'certAlias' : 'server-cert' ,
'outputfile' : serverCertPEM,
'storepass' : keyStorePin,
'storetype' : 'JKS',
'format' : 'rfc'
}
</call>
<!-- Copy the certificates to local server -->
<script>
LocalServerCertPEM = '%s/%s/config/server-cert%s.pem' \
% (local_ldap_server.getDir(),OPENDSNAME,whoami)
</script>
<call function="'copyFile'">
{ 'location' : server.getHostname(),
'srcfile' : serverCertPEM,
'destfile' : LocalServerCertPEM,
'remotehost' : local_ldap_server.getHostname() }
</call>
<!-- Import Certificates into local server -->
<call function="'ImportCertificate'">
{ 'location' : local_ldap_server.getHostname(),
'dsPath' : '%s/%s' \
% (local_ldap_server.getDir(),OPENDSNAME),
'certAlias' : 'server-cert%s' % whoami,
'inputfile' : LocalServerCertPEM,
'keystore' : 'truststore' ,
'storepass' : LocalKeyStorePin,
'storetype' : 'JKS'
}
</call>
<!-- Show the certificate details for local server -->
<call function="'ListCertificate'">
{ 'location' : local_ldap_server.getHostname(),
'dsPath' : '%s/%s' \
% (local_ldap_server.getDir(),OPENDSNAME),
'certAlias' : 'server-cert%s' % whoami ,
'keystore' : 'truststore' ,
'storepass' : LocalKeyStorePin
}
</call>
</sequence>
</else>
</if>
</sequence>
</iterate>
</sequence>
<finally>
<!-- Test Group postamble -->
<sequence>
<call function="'testCase_Postamble'"/>
</sequence>
</finally>
</try>
</testcase>
</block>
</sequence>
</function>
</stax>