Delphix Self-Service administrators can use this CLI cookbook recipe to refresh a container on Delphix Self-Service using the Delphix Engine CLI.
The following script is for educational and demonstration purposes only and is not supported by Delphix.
This script can be downloaded by selecting refreshContainer.sh.
Refreshing a container in Delphix Self-Service
#!/bin/bash # A sample script for calls to the CLI. This one refresh Jet Stream container. # # VERY IMPORTANT: In order for this to work, you need to go through the steps here: # https://docs.delphix.com/display/DOCS43/CLI+Cookbook%3A+Configuring+Key-Based+SSH+Authentication+for+Automation # After this you will not need to use a username and password to log into the delphix engine. If you do not # setup the SSH authentication you will have to manually enter the password. # ##### Constants # Describes a Delphix software revision. VERSION="1.10.4" ##### Default Values. These can be overwriten with optional arguments. engine="de-6041-doc-938-vn.dlpxdc.co" username="admin" ##examples## # Refresh container from latest point in time of Template #./refreshContainer.sh -T JS_DATA_TEMPLATE-13 JS_DATA_CONTAINER-20 # Refresh container from specific bookmark #./refreshContainer.sh -b JS_BOOKMARK-76 JS_DATA_CONTAINER-20 # Refresh container from specific point in time of branch #./refreshContainer.sh -t "2016-08-08T10:00:00.000Z" -B JS_BRANCH-4 JS_DATA_CONTAINER-20 ##### Functions # Help Menu function usage { echo "Usage: refreshContainer.sh [[-h] | options...] <containername>" echo "Create a Jet Stream Bookmark on the given branch." echo "" echo " You need to specify either -T, -B, -b or -t to refresh container. With -t option you also need to specify -B also" echo "Positional arguments" echo " <containerName>" echo "" echo "Optional Arguments:" echo " -h Show this message and exit" echo " -d Delphix engine IP address or host name, otherwise revert to default" echo " -u Server user. Password needs to manually provide at run time, otherwise revert to default" echo " -T template reference from which need to refresh from latest point in time" echo " -B Branch reference from which we need to pick up time from where the container should be refreshed. Type: string. Format JS_BRANCH-<n> (Optional)" echo " -b Bookmark name from which need to refresh container. If no bookmark is included, the branch will be created at the latest point in time. Type: string. Format JS_BOOKMARK-<n> (Optional)" echo " -t The time from where the container should be refreshed. This must be accompanied with branch reference from which need to pick up time. Type: date, must be in ISO 8601 extended format [yyyy]-[MM]-[dd]T[HH]:[mm]:[ss].[SSS]Z" } # Create Our Session, including establishing the API version. function create_session { echo "Creating session ..." SSH_CMD="ssh ${username}@${engine}" ${SSH_CMD} "version $VERSION" check_result } # Check the result of the curl. If there are problems, inform the user then exit. function check_result { exitStatus=$? if [ $exitStatus -ne 0 ] then echo "command failed with exit status $exitStatus" echo $result exit 1 fi } function restore_container { paramString="selfservice/container/select ${containerRef}; restore;" # If there is no time input and no bookmark name, we need to use JSTimelinePointLatestTimeInput from template. if [[ -n $template && -z $inputTime && -z $bookmark ]] then pointParams="edit timelinePointParameters; set type=JSTimelinePointLatestTimeInput; set sourceDataLayout=\"${template}\";" # If there is a timeInput and no bookmark name, we need to use Input Time. elif [[ -n $inputTime && -n $branch && -z $bookmark && -z $template ]] then pointParams="edit timelinePointParameters; set type=JSTimelinePointTimeInput; set time=\"${inputTime}\"; set branch=\"${branch}\";" # If there is a bookmark name and no time input, we need to use bookmark elif [[ -n $bookmark && -z $template && -z $inputTime ]] then pointParams="edit timelinePointParameters; set type=JSTimelinePointBookmarkInput; set bookmark=\"${bookmark}\";" else usage exit 1 fi paramString="$paramString $pointParams commit;" echo "Executing the command on CLI ..." echo $paramString result=$(${SSH_CMD} $paramString) check_result echo "Verifying job status ..." # Get everything in the result that comes after job. temp=${result#*job} # Get rid of everything after resultArray=($temp) jobRef=($resultArray) jobString="job;select $jobRef;ls" result=$(${SSH_CMD} $jobString) check_result # Get everything in the result that comes after job. temp=${result#*jobState:} # Get rid of everything after resultArray=($temp) jobState=($resultArray) if [ $jobState = "COMPLETED" ] then echo "Successfully refreshed container- [$containerRef]." else echo "Unable to refresh container- [$containerRef]." echo result fi } ##### Main while getopts "u:d:T:b:t:B:h" flag; do case "$flag" in u ) username=${OPTARG%:*} ;; d ) engine=$OPTARG ;; T ) template=$OPTARG ;; b ) bookmark=$OPTARG ;; t ) inputTime=$OPTARG ;; B ) branch=$OPTARG ;; h ) usage exit ;; * ) usage exit 1 esac done # Shift the parameters so we only have the positional arguments left shift $((OPTIND-1)) # Check that there are 1 positional arguments if [ $# != 1 ] then usage exit 1 fi # Get the one positional arguments containerRef=$1 create_session restore_container