stafcmd.xml revision d81978a0815d5b8a75633c35e3e1f8708d36f017
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "/stax.dtd">
<!--
! CDDL HEADER START
!
! The contents of this file are subject to the terms of the
! Common Development and Distribution License, Version 1.0 only
! (the "License"). You may not use this file except in compliance
! with the License.
!
! You can obtain a copy of the license at
! trunk/opends/resource/legal-notices/OpenDS.LICENSE
! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
! See the License for the specific language governing permissions
! and limitations under the License.
!
! When distributing Covered Code, include this CDDL HEADER in each
! file and include the License file at
! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
! add the following below this CDDL HEADER, with the fields enclosed
! by brackets "[]" replaced with your own identifying information:
! Portions Copyright [yyyy] [name of copyright owner]
!
! CDDL HEADER END
!
! Copyright 2007-2008 Sun Microsystems, Inc.
! -->
<stax>
<function name="copyFile">
<function-prolog>
This function copies a source file to destination file to host
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="remotehost" type="optional" default="STAXServiceMachine">
<function-arg-description>
The name of remote host (default localhost)
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="srcfile" type="required">
<function-arg-description>
The name of the source fule
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="destfile" type="required">
<function-arg-description>
The name of the destination fule
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
</function-map-args>
<sequence>
<stafcmd name="'STAF Command: Copy File'">
<location>'%s' % location</location>
<service>'fs'</service>
<request>'COPY FILE %s TOFILE %s TOMACHINE %s' % (srcfile,destfile,remotehost) </request>
</stafcmd>
<script>
cmdRC=RC
cmdResult=STAFResult
</script>
<call function="'checkRC'">
{ 'returncode' : cmdRC ,
'result' : cmdResult }
</call>
<return>[cmdRC,cmdResult]</return>
</sequence>
</function>
<function name="CopyFolderByExtension">
<function-prolog>
Copies files by extension from a source to destination folder on host
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="remotehost" type="optional" default="location">
<function-arg-description>
The name of remote host (default same as location)
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="srcfolder" type="required">
<function-arg-description>
The name of the source folder
</function-arg-description>
<function-arg-property name="type" value="foldername"/>
</function-arg-def>
<function-arg-def name="destfolder" type="required">
<function-arg-description>
The name of the destination file
</function-arg-description>
<function-arg-property name="type" value="foldername"/>
</function-arg-def>
<function-arg-def name="extension" type="optional" default="'txt'">
<function-arg-description>
The name of the file extension (default txt)
</function-arg-description>
<function-arg-property name="type" value="file extension"/>
</function-arg-def>
</function-map-args>
<sequence>
<stafcmd name="'STAF Command: Copy all %s Files.' % (extension)">
<location>'%s' % location</location>
<service>'fs'</service>
<request>'COPY DIRECTORY %s TODIRECTORY %s TOMACHINE %s EXT %s RECURSE' % (srcfolder,destfolder,remotehost,extension) </request>
</stafcmd>
<script>
cmdRC=RC
cmdResult=STAFResult
</script>
<call function="'checkRC'">
{ 'returncode' : cmdRC ,
'result' : cmdResult }
</call>
<return>cmdRC</return>
</sequence>
</function>
<function name="zipUpFile">
<function-prolog>
This function zips up a folder
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="zipfile" type="required">
<function-arg-description>
Name of the file to place zip file contents
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="folder" type="required">
<function-arg-description>
Name of destination folder to place zip file contents
</function-arg-description>
<function-arg-property name="type" value="filepath"/>
</function-arg-def>
<function-arg-def name="relativeto" type="required">
<function-arg-description>
Folder that the zip archive is relative to
</function-arg-description>
<function-arg-property name="type" value="filepath"/>
</function-arg-def>
</function-map-args>
<sequence>
<stafcmd name="'STAF Command: Zip Up Folder'">
<location>'%s' % location</location>
<service>'zip'</service>
<request>
'ADD ZIPFILE %s DIRECTORY %s RECURSE RELATIVETO %s' % (zipfile,folder,relativeto)
</request>
</stafcmd>
<script>
cmdRC=RC
cmdResult=STAFResult
</script>
<call function="'checkRC'">
{ 'returncode' : cmdRC ,
'result' : cmdResult }
</call>
<return>cmdRC</return>
</sequence>
</function>
<function name="unZipFile">
<function-prolog>
This function unzips a compressed zip archive
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="zipfile" type="required">
<function-arg-description>
Name of the file to place zip file contents
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="unzipdir" type="required">
<function-arg-description>
Name of destination folder to place zip file contents
</function-arg-description>
<function-arg-property name="type" value="filepath"/>
</function-arg-def>
</function-map-args>
<sequence>
<stafcmd name="'STAF Command: Unzip File'">
<location>'%s' % location</location>
<service>'zip'</service>
<request>
'UNZIP ZIPFILE %s TODIRECTORY %s RESTOREPERMISSION REPLACE' % (zipfile,unzipdir)
</request>
</stafcmd>
<script>
cmdRC=RC
cmdResult=STAFResult
</script>
<call function="'checkRC'">
{ 'returncode' : cmdRC ,
'result' : cmdResult }
</call>
<return>cmdRC</return>
</sequence>
</function>
<function name="deleteFile">
<function-prolog>
This function deletes a file
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="filename" type="required">
<function-arg-description>
Name of file to be deleted
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
</function-map-args>
<sequence>
<stafcmd name="'STAF Command: Delete Existing File'">
<location>'%s' % location</location>
<service>'fs'</service>
<request>
'GET ENTRY %s TYPE' % (filename)
</request>
</stafcmd>
<if expr="RC == 48">
<sequence>
<message log="1">
'Success: File does not exist, dont delete it.'
</message>
<return>0</return>
</sequence>
<else>
<sequence>
<message log="1">
'Success: File does exists, will delete it'
</message>
</sequence>
</else>
</if>
<stafcmd name="'STAF Command: Delete Existing File'">
<location>'%s' % location</location>
<service>'fs'</service>
<request>
'DELETE ENTRY %s CONFIRM' % filename
</request>
</stafcmd>
<script>
cmdRC=RC
cmdResult=STAFResult
</script>
<call function="'checkRC'">
{ 'returncode' : cmdRC ,
'result' : cmdResult }
</call>
<return>cmdRC</return>
</sequence>
</function>
<function name="deleteFolder">
<function-prolog>
This function recursively deletes a folder
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="foldername" type="required">
<function-arg-description>
Name of folder to be deleted
</function-arg-description>
<function-arg-property name="type" value="filepath"/>
</function-arg-def>
</function-map-args>
<sequence>
<stafcmd name="'STAF Command: Get Folder Attributes'">
<location>'%s' % location</location>
<service>'fs'</service>
<request>'GET ENTRY %s TYPE' % foldername</request>
</stafcmd>
<if expr="RC == 48">
<sequence>
<message log="1">
'Folder does not exist, do not delete it.'
</message>
<return>0</return>
</sequence>
<else>
<sequence>
<message log="1">
'Folder exists, will delete it'
</message>
</sequence>
</else>
</if>
<stafcmd name="'STAF Command: Recursively Delete Folder'">
<location>'%s' % location</location>
<service>'fs'</service>
<request>
'DELETE ENTRY %s RECURSE IGNOREERRORS CONFIRM' % (foldername)
</request>
</stafcmd>
<script>
cmdRC=RC
cmdResult=STAFResult
</script>
<call function="'checkRC'">
{ 'returncode' : cmdRC ,
'result' : cmdResult }
</call>
<return>cmdRC</return>
</sequence>
</function>
<function name="createFolder">
<function-prolog>
This function creates a folder
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="foldername" type="required">
<function-arg-description>
Name of file to be deleted
</function-arg-description>
<function-arg-property name="type" value="filepath"/>
</function-arg-def>
</function-map-args>
<sequence>
<stafcmd name="'STAF Command: Create Folder'">
<location>'%s' % location</location>
<service>'fs'</service>
<request>
'CREATE DIRECTORY %s FULLPATH' % foldername
</request>
</stafcmd>
<script>
cmdRC=RC
cmdResult=STAFResult
</script>
<call function="'checkRC'">
{ 'returncode' : cmdRC ,
'result' : cmdResult }
</call>
<return>cmdRC</return>
</sequence>
</function>
<function name="queryLogs">
<function-prolog>
Queries the staf logs from startfrom point
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="logname" type="required">
<function-arg-description>
Name of file to be deleted
</function-arg-description>
<function-arg-property name="type" value="filepath"/>
</function-arg-def>
<function-arg-def name="startfrom" type="required">
<function-arg-description>
Name of file to be deleted
</function-arg-description>
<function-arg-property name="type" value="timestamp"/>
</function-arg-def>
<function-arg-def name="endat" type="required">
<function-arg-description>
Name of file to be deleted
</function-arg-description>
<function-arg-property name="type" value="timestamp"/>
</function-arg-def>
</function-map-args>
<sequence>
<block name="'Query Logs'">
<timer duration="'60s'">
<stafcmd name="'STAF Command: Log Query for Test Case Log.'">
<location>'%s' % location</location>
<service>'log'</service>
<request>'QUERY ALL MACHINE %s LOGNAME %s FROM %s TO %s' % (location,logname,startfrom,endat)</request>
</stafcmd>
</timer>
</block>
</sequence>
</function>
<function name="SetVar">
<function-prolog>
Sets a variable in the staf var service
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="type" type="required">
<function-arg-description>
Name of file to be deleted
</function-arg-description>
<function-arg-property name="type" value="variable"/>
</function-arg-def>
<function-arg-def name="variable" type="required">
<function-arg-description>
Name of file to be deleted
</function-arg-description>
<function-arg-property name="type" value="variable"/>
</function-arg-def>
</function-map-args>
<sequence>
<message>'Set %s Variable %s' % (type,variable)</message>
<stafcmd name="'STAF Command: Set Var.'">
<location>'%s' % location</location>
<service>'var'</service>
<request>'SET %s VAR %s' % (type,variable)</request>
</stafcmd>
</sequence>
</function>
<function name="GetVar">
<function-prolog>
Gets a variable in the staf var service
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="type" type="required">
<function-arg-description>
Type of variable
</function-arg-description>
<function-arg-property name="type" value="variable"/>
</function-arg-def>
<function-arg-def name="variable" type="required">
<function-arg-description>
Name of variable
</function-arg-description>
<function-arg-property name="type" value="variable"/>
</function-arg-def>
</function-map-args>
<sequence>
<message>'Get %s Variable %s' % (type,variable)</message>
<stafcmd name="'STAF Command: Get Var.'">
<location>'%s' % location</location>
<service>'var'</service>
<request>'GET %s VAR %s' % (type,variable)</request>
</stafcmd>
</sequence>
</function>
<function name="ResolveVar">
<function-prolog>
Resolve a variable in the staf var service
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="type" type="required">
<function-arg-description>
Type of string to be resolved
</function-arg-description>
<function-arg-property name="type" value="variable"/>
</function-arg-def>
<function-arg-def name="name" type="required">
<function-arg-description>
Name of string to be resolved
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<message>'Resolve %s Variable %s' % (type, name)</message>
<stafcmd name="'STAF Command: Resolve Var.'">
<location>'%s' % location</location>
<service>'var'</service>
<request>'RESOLVE %s {%s}' % (type, name)</request>
</stafcmd>
</sequence>
</function>
<function name="GetEntry">
<function-prolog>
Retrieves an attribute of a file system entry
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="entry" type="required">
<function-arg-description>
Name of entry to retrieve attributes
</function-arg-description>
<function-arg-property name="type" value="variable"/>
</function-arg-def>
<function-arg-def name="attribute" type="required">
<function-arg-description>
Type of attributes to be retrieved
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<message>'Retrieve attribute %s for %s.' % (attribute,entry)</message>
<stafcmd name="'STAF Command: Get Entries Attributes'">
<location>'%s' % location</location>
<service>'fs'</service>
<request>'GET ENTRY %s %s' % (entry,attribute)</request>
</stafcmd>
</sequence>
</function>
<!-- List a folder -->
<function name="listFolder">
<function-prolog>
This function lists a folder
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="foldername" type="required">
<function-arg-description>
Name of folder to be list
</function-arg-description>
<function-arg-property name="type" value="filepath"/>
</function-arg-def>
<function-arg-def name="filename" type="required">
<function-arg-description>
Name of file to be list
</function-arg-description>
<function-arg-property name="type" value="filepath"/>
</function-arg-def>
</function-map-args>
<sequence>
<stafcmd name="'STAF Command: list Folder Attributes'">
<location>'%s' % location</location>
<service>'fs'</service>
<request>' LIST DIRECTORY %s NAME %s LONG ' % (foldername,filename)</request>
</stafcmd>
<if expr="RC != 0">
<sequence>
<message log="1">
'Folder does not exist.'
</message>
<return>0</return>
</sequence>
</if>
<script>
cmdRC=RC
cmdResult=STAFResult
</script>
<call function="'checkRC'">
{ 'returncode' : cmdRC ,
'result' : cmdResult }
</call>
<return>cmdRC</return>
</sequence>
</function>
<!-- List a folder by extension -->
<function name="listFolderByExtension" scope="local">
<function-prolog>
This function lists a folder by extension
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="foldername" type="required">
<function-arg-description>
Name of folder to be list
</function-arg-description>
<function-arg-property name="type" value="filepath"/>
</function-arg-def>
<function-arg-def name="extension" type="required">
<function-arg-description>
he name of the file extension (default txt)
</function-arg-description>
<function-arg-property name="type" value="file extension"/>
</function-arg-def>
</function-map-args>
<sequence>
<stafcmd name="'STAF Command: list folder by extension'">
<location>'%s' % location</location>
<service>'fs'</service>
<request>' LIST DIRECTORY %s EXT %s ' % (foldername,extension)</request>
</stafcmd>
<script>
cmdRC=RC
cmdResult=STAFResult
</script>
<if expr="cmdRC != 0">
<sequence>
<script>
cmdResult = 'Folder does not exist.'
</script>
</sequence>
</if>
<call function="'checkRC'">
{
'returncode' : cmdRC ,
'result' : cmdResult
}
</call>
<return>cmdResult</return>
</sequence>
</function>
<function name="getFile">
<function-prolog>
This function get the contents of a file
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="filename" type="required">
<function-arg-description>
The name of the file
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
<function-arg-def name="type" type="optional" default="'text'">
<function-arg-description>
The type of the file
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
<function-arg-def name="format" type="optional" default="'native'">
<function-arg-description>
The format of the file
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<stafcmd name="'STAF Command: Get File'">
<location>'%s' % location</location>
<service>'fs'</service>
<request>
'GET FILE %s %s FORMAT %s' % (filename,type,format)
</request>
</stafcmd>
<script>
cmdRC=RC
cmdResult=STAFResult
</script>
<return>[cmdRC,cmdResult]</return>
</sequence>
</function>
<!-- Send event -->
<function name="SendEvent" scope="local">
<function-prolog>
Send event.
</function-prolog>
<function-map-args>
<function-arg-def name="location"
type="optional"
default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="name" type="required">
<function-arg-description>
Name of event to send
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<message>'Send Event %s on %s' % (name, location)</message>
<stafcmd name="'STAF Command: Send Event.'">
<location>'%s' % location</location>
<service>'sem'</service>
<request>'PULSE EVENT %s' % name</request>
</stafcmd>
</sequence>
</function>
<!-- Wait event -->
<function name="WaitEvent" scope="local">
<function-prolog>
Wait event.
</function-prolog>
<function-map-args>
<function-arg-def name="location"
type="optional"
default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="name" type="required">
<function-arg-description>
Name of event to wait
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<message>'Wait Event %s on %s' % (name, location)</message>
<stafcmd name="'STAF Command: Wait Event.'">
<location>'%s' % location</location>
<service>'sem'</service>
<request>'WAIT EVENT %s' % name</request>
</stafcmd>
</sequence>
</function>
<!-- Delete event -->
<function name="DeleteEvent" scope="local">
<function-prolog>
Delete event.
</function-prolog>
<function-map-args>
<function-arg-def name="location"
type="optional"
default="STAXServiceMachine">
<function-arg-description>
Location of target host
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
<function-arg-def name="name" type="required">
<function-arg-description>
Name of event to delete
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
</function-map-args>
<sequence>
<message>'Delete Event %s on %s' % (name, location)</message>
<stafcmd name="'STAF Command: Delete Event.'">
<location>'%s' % location</location>
<service>'sem'</service>
<request>'DELETE EVENT %s' % name</request>
</stafcmd>
</sequence>
</function>
</stax>