Skip to main content
Skip table of contents

CLI cookbook: how to create a Delphix self-service database template

Delphix Self-Service administrators can use this CLI cookbook recipe to create a database template 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 createDBTemplate.sh

Creating a database template in Delphix Self-Service

CODE
#!/bin/bash

# A sample script for calls to the CLI. This one creates a Jet Stream Template.
#
# 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.11.10"


##### Default Values. These can be overwriten with optional arguments.
engine="ars-6010.dlpxdc.co"
username="admin"


##examples##
# Create template with mandatory params
# Create template with adding optional params, Notes and Description
#./createDBTemplate.sh -n <sourceName> -N "<templateNotes>" -D "<AnyDescription>" <templateName> <containerName>

## NOTE: This script is to add one source per template and it will not add any properties for template, container or source.


##### Functions

# Help Menu
function usage {
    echo "Usage: createDBTemplate.sh [[-h] | options...] <template_name> <source_container>"
    echo "Create a Jet Stream Dat Template."
    echo ""
    echo "Positional arguments"
    echo "  <template_name>"
    echo "  <source_container>"
    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 "  -n                source name to display on JS template screen" 
    echo "  -N                template notes, if any. Type: String"
    echo "  -D                source description, if any. Type: String"
}

# 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 create_template
{  
    paramString="selfservice template create;set name=$templateName;"
    if [[ -n $templatenotes ]]
        then
           paramString="$paramString set notes=\"$templatenotes\";"
    fi
    paramString="$paramString edit dataSources;add;"
    paramString="$paramString set container=$sourceContainer;set source.name=$sourcename;set source.priority=1;"
    if [[ -n $sourcedesc ]]
    then
       paramString="$paramString set source.description=\"$sourcedesc\";"  
    fi
    paramString="$paramString commit;"
    #echo $paramString
    echo "Creating Data Template..."
    result=$(${SSH_CMD}  $paramString)
    check_result
    echo "New JetStream template $templateName successfully created"    
}


##### Main

while getopts "u:d:n:N:D:h" flag; do
    case "$flag" in
        u )             username=${OPTARG%:*}
                        ;;
        d )             engine=$OPTARG
                        ;;
        n )             sourcename=$OPTARG
                        ;;
        N )             templatenotes=$OPTARG
                        ;;                                                              
        D )             sourcedesc=$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 2 positional arguments
if [ $# != 2 ]
then
    usage
    exit 1
fi

# Get the two positional arguments
templateName=$1
shift
sourceContainer=$1


create_session
create_template
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.