mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

ugaston
24.24.2008 4e3a54d26414fec6c1bcbd6b17968ec5b7c48c79
opendj-sdk/opends/tests/shared/functions/dsadm.xml
@@ -3562,5 +3562,202 @@
            
    </sequence>
  </function>
  <!-- Rebuild index Task Function -->
  <function name="rebuildIndexTask">
    <function-prolog>
        This function performs an on line rebuild index 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="baseDN" type="required">
        <function-arg-description>
          The base Dn for which the index will be rebuilt
        </function-arg-description>
        <function-arg-property name="type" value="dn"/>
      </function-arg-def>
      <function-arg-def name="attributes" type="required">
        <function-arg-description>
          List of the attributes to re-index: e.g. ['cn','l']
        </function-arg-description>
        <function-arg-property name="type" value="list"/>
      </function-arg-def>
      <function-arg-def name="maxThreads"
                        type="optional"
                        default="5">
        <function-arg-description>
          Number of threads that should be used for the rebuild operation
        </function-arg-description>
        <function-arg-property name="type" value="integer"/>
      </function-arg-def>
    </function-map-args>
    <sequence>
       <script>
        myLocation=location
        myPath=dsPath
        taskLdifFile='rebuildIndex-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-rebuild')
        ldifLines.append('ds-task-class-name: org.opends.server.tasks.RebuildTask')
        ldifLines.append('ds-task-id: %s' % taskID)
        ldifLines.append('ds-task-rebuild-base-dn: %s' % baseDN )
        ldifLines.append('ds-task-rebuild-max-threads: %s' % maxThreads )
        for indexType in attributes:
          ldifLines.append('ds-task-rebuild-index: %s' % indexType )
      </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 rebuildIndex-task ldif to remote host -->
      <message>'Copy rebuildIndex 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 Rebuild Index 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 rebuild index task failed (Code=%s)' % STAXCode
          </message>
          <return>[STAXCode, STAXReason]</return>
        </sequence>
      </if>
      <!-- Check that the ldap task is completed -->
      <sequence>
        <call function="'CheckLdapTask'">
          { 'location'   : myLocation,
            'dsPath'     :  myPath,
            'dsTaskDn'   : taskDN,
            'dsHost'     : dsInstanceHost,
            'dsPort'     : dsInstancePort,
            'dsBindDn'   : dsInstanceDn,
            'dsBindPswd' : dsInstancePswd
          }
        </call>
      </sequence>
      <script>
        STAXCode, STAXReason=STAXResult
      </script>
      <if expr="STAXCode != 0">
        <sequence>
          <message>
            'Check of rebuild index 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>
                                                   
</stax>