SAP HANA hook operations
Shell operations
RunCommand operation
The RunCommand operation runs a shell command on a Unix environment using whatever binary is available at /bin/sh. The environment user runs this shell command from their home directory. The Delphix Engine captures and logs all output from this command. If the script fails, the output is displayed in the Delphix Admin application and command-line interface (CLI) to aid in debugging.
If successful, the shell command must exit with an exit code of 0. All other exit codes will be treated as an operation failure.
Examples of RunCommand operations
You can input the full command contents into the RunCommand operation.
remove_dir="$DIRECTORY_TO_REMOVE_ENVIRONMENT_VARIABLE"
if test -d "$remove_dir"; then
rm -rf "$remove_dir" || exit 1
fi
exit 0
If a script already exists on the remote environment and is executable by the environment user, the RunCommand operation can execute this script directly.
/opt/app/oracle/product/10.2.0.5/db_1/dbs/myscript.sh "$ARG_ENVIRONMENT_VARIABLE" "second argument in double quotes" 'third argument in single quotes'
RunBash operation
The RunBash operation runs a Bash command on a Unix environment using a bash binary provided by the Delphix Engine. The environment user runs this Bash command from their home directory. The Delphix Engine captures and logs all output from this command. If the script fails, the output is displayed in the Delphix Admin application and command-line interface (CLI) to aid in debugging.
If successful, the Bash command must exit with an exit code of 0. All other exit codes will be treated as an operation failure.
Example of RunBash operations
You can input the full command contents into the RunBash operation.
remove_dir="$DIRECTORY_TO_REMOVE_ENVIRONMENT_VARIABLE"
# Bashisms are safe here!
if [[ -d "$remove_dir" ]]; then
rm -rf "$remove_dir" || exit 1
fi
exit 0
Shell operation tips
Using nohup
You can use the nohup command and process backgrounding from the resource in order to "detach" a process from the Delphix Engine. However, if you use nohup and process backgrounding, you MUST redirect stdout and stderr.
Unless you explicitly tell the shell to redirect stdout and stderr in your command or script, the Delphix Engine will keep its connection to the remote environment open while the process is writing to either stdout or stderr. Redirection ensures that the Delphix Engine will see no more output and thus not block waiting for the process to finish.
For example, imagine having your RunCommand operation background a long-running Python process. Below are the bad and good ways to do this.
Bad examples |
|
Good examples |
|
Other operations
RunExpect operation
The RunExpect operation executes an Expect script on a Unix environment. The Expect utility provides a scripting language that makes it easy to automate interactions with programs that normally can only be used interactively, such as ssh. The Delphix Engine includes a platform-independent implementation of a subset of the full Expect functionality.
The script is run on the remote environment as the environment user from their home directory. The Delphix Engine captures and logs all output of the script. If the operation fails, the output is displayed in the Delphix Admin application and CLI to aid in debugging.
If successful, the script must exit with an exit code of 0. All other exit codes will be treated as an operation failure.
Example of a RunExpect operation
Start an ssh session while interactively providing the user's password.
spawn ssh user@delphix.com
expect {
-re {Password: } {
send "${env(PASSWORD_ENVIRONMENT_VARIABLE)}\n"
}
timeout {
puts "Timed out waiting for password prompt."
exit 1
}
}
exit 0
HANA environment variables
Operations that run user-provided scripts have access to environment variables. For operations associated with specific dSources or virtual databases (VDBs), the Delphix Engine will always set certain environment variables so that the user-provided script can use them to access the dSource or VDB.
dSource environment variables
Environment Variable | Description |
---|---|
| The primary mount path provided by the user on the UI. The first one, in case multiple mount specifications are provided. |
| The OS user used to link the dSource |
VDB environment variables
Environment Variable | Description |
---|---|
| The primary mount path provided by the user on the UI. The first one, in case multiple mount specifications are provided. |
| The OS user used to provision the VDB |
Shell operations
RunCommand operation
The RunCommand operation runs a shell command on a Unix environment using whatever binary is available at /bin/sh. The environment user runs this shell command from their home directory. The Delphix Engine captures and logs all output from this command. If the script fails, the output is displayed in the Delphix Admin application and command-line interface (CLI) to aid in debugging.
If successful, the shell command must exit with an exit code of 0. All other exit codes will be treated as an operation failure.
Examples of RunCommand operations
You can input the full command contents into the RunCommand operation.
remove_dir="$DIRECTORY_TO_REMOVE_ENVIRONMENT_VARIABLE"
if test -d "$remove_dir"; then
rm -rf "$remove_dir" || exit 1
fi
exit 0
If a script already exists on the remote environment and is executable by the environment user, the RunCommand operation can execute this script directly.
/opt/app/oracle/product/10.2.0.5/db_1/dbs/myscript.sh "$ARG_ENVIRONMENT_VARIABLE" "second argument in double quotes" 'third argument in single quotes'
RunBash operation
The RunBash operation runs a Bash command on a Unix environment using a bash binary provided by the Delphix Engine. The environment user runs this Bash command from their home directory. The Delphix Engine captures and logs all output from this command. If the script fails, the output is displayed in the Delphix Admin application and command-line interface (CLI) to aid in debugging.
If successful, the Bash command must exit with an exit code of 0. All other exit codes will be treated as an operation failure.
Example of RunBash operations
You can input the full command contents into the RunBash operation.
remove_dir="$DIRECTORY_TO_REMOVE_ENVIRONMENT_VARIABLE"
# Bashisms are safe here!
if [[ -d "$remove_dir" ]]; then
rm -rf "$remove_dir" || exit 1
fi
exit 0
Shell operation tips
Using nohup
You can use the nohup command and process backgrounding from the resource in order to "detach" a process from the Delphix Engine. However, if you use nohup and process backgrounding, you MUST redirect stdout and stderr.
Unless you explicitly tell the shell to redirect stdout and stderr in your command or script, the Delphix Engine will keep its connection to the remote environment open while the process is writing to either stdout or stderr. Redirection ensures that the Delphix Engine will see no more output and thus not block waiting for the process to finish.
For example, imagine having your RunCommand operation background a long-running Python process. Below are the bad and good ways to do this.
Bad examples |
|
Good examples |
---|
|
Other operations
RunExpect operation
The RunExpect operation executes an Expect script on a Unix environment. The Expect utility provides a scripting language that makes it easy to automate interactions with programs that normally can only be used interactively, such as ssh. The Delphix Engine includes a platform-independent implementation of a subset of the full Expect functionality.
The script is run on the remote environment as the environment user from their home directory. The Delphix Engine captures and logs all output of the script. If the operation fails, the output is displayed in the Delphix Admin application and CLI to aid in debugging.
If successful, the script must exit with an exit code of 0. All other exit codes will be treated as an operation failure.
Example of a RunExpect operation
Start an ssh session while interactively providing the user's password.
spawn ssh user@delphix.com
expect {
-re {Password: } {
send "${env(PASSWORD_ENVIRONMENT_VARIABLE)}\n"
}
timeout {
puts "Timed out waiting for password prompt."
exit 1
}
}
exit 0
HANA environment variables
Operations that run user-provided scripts have access to environment variables. For operations associated with specific dSources or virtual databases (VDBs), the Delphix Engine will always set certain environment variables so that the user-provided script can use them to access the dSource or VDB.
dSource environment variables
Environment Variable | Description |
---|---|
| The primary mount path provided by the user on the UI. The first one, in case multiple mount specifications are provided. |
| The OS user used to link the dSource |
VDB environment variables
Environment Variable | Description |
---|---|
| The primary mount path provided by the user on the UI. The first one, in case multiple mount specifications are provided. |
| The OS user used to provision the VDB |