Importing/ exporting Data in TDM using a script

Chris ColosimoChris Colosimo Posts: 67 admin
edited December 2016 in Continuous Testing Platform

TDM allows us to manage and manipulate data in CTP. There are many cases where we would want to store snapshots of our data in source control. The following scripts utilize the TDM apis to accomplish this.

Comments

  • Chris ColosimoChris Colosimo Posts: 67 admin
    edited April 2017

    Export From TDM to check into Source Control

    #Set these
    
    #EM host
    EM_HOST="192.168.9.132"
    
    #EM PORT
    EM_PORT=8080
    
    #ID of dataRepository Server that has the repository to be exported
    DR_ID=4
    
    #name of repository to be exported.  You can see all repositories with http://<EM host and port>/em/tdm/api/v1/servers
    DR_NAME=Parabank
    
    #name of export a unique Data will be appended to this name
    EXPORT_NAME=Parabank
    
    #Description Of Export (optional)
    EXPORT_DESCRIPTION="This is a description"
    
    #File path where the downlaoded export will appear
    FILEPATH='/home/parasoft/drExports'
    
    
    #---------------------------------------------------------------------------
    #Export the Data Repository into TDM
    UNIQUE_EXPORT_ID=$EXPORT_NAME$(date +%s)
    curl -vs -u admin:admin -H "Content-Type: application/json" -X POST -d '{ "name": "'"$UNIQUE_EXPORT_ID"'",  "description": "'"$EXPORT_DESCRIPTION"'" }' http://$EM_HOST:$EM_PORT/em/tdm/api/v1/servers/$DR_ID/repositories/$DR_NAME/export
    
    #Using the export Name get information on the export
    results=$(curl -vs -u admin:admin -H "Content-Type: application/json" -X GET http://localhost:8080/em/tdm/api/v1/exports?name=$UNIQUE_EXPORT_ID)
        echo $results
    
    #Get the ID of the export
    EXPORT_ID=$(echo $results | awk -F "<id>" '{print $2}' | awk -F "\</id\>" '{print $1}')
    echo "The file was successfully exported and the Export ID is " $EXPORT_ID
    sleep 5
    #Download the export from TDM
    curl -vs -u admin:admin -H "Content-Type: application/json" -X GET http://$EM_HOST:$EM_PORT/em/tdm/api/v1/exports/$EXPORT_ID/download > $FILEPATH/$EXPORT_NAME.json
    
    #Delete the export from TDM(Optional)
    curl -vs -u admin:admin -H "Content-Type: application/json" -X DELETE http://$EM_HOST:$EM_PORT/em/tdm/api/v1/exports/$EXPORT_ID
    
    #Now check the file into GIT Here
    echo checking $FILEPATH/$EXPORT_NAME.json into GIT
    
  • Chris ColosimoChris Colosimo Posts: 67 admin
    edited April 2017

    `##Import data from Source Control to TDM

    Set these

    File path where the DR was checked out to

    FILEPATH='/home/parasoft/drExports'

    File name of the DR to be imported

    FILE_NAME=Parabank.json

    EM host

    EM_HOST="192.168.9.132"

    EM PORT

    EM_PORT=8080

    name of import

    IMPORT_NAME=ParabankImport

    Description Of import (optional)

    IMPORT_DESCRIPTION="This is a description"

    ID of dataRepository Server to recieve the import You can see all repositories with http:///em/tdm/api/v1/servers

    DR_ID=4
    
    #name of repository to be once imported.  
    DR_NAME=Parabank2
    
    
    #---------------------------------------------------------------------------
    #check out the file from GIT Here
    echo checking out DR to $FILEPATH/$EXPORT_NAME.json 
    
    #write the data file
    echo '<?xml version="1.0" encoding="UTF-8"?><exportUploadRequest  xmlns="http://www.parasoft.com/api/tdm/v1/exports/messages"> <name>'$IMPORT_NAME'</name>    <serverID>'$DR_ID'</serverID></exportUploadRequest>' > /home/parasoft/data.txt
    
    #Upload the DR into TDM
    results=$(curl -vs -u admin:admin -F "data=@/home/parasoft/data.txt" -F "file=@/home/parasoft/drExports/Parabank.json" http://$EM_HOST:$EM_PORT/em/tdm/api/v1/exports/upload)
    echo $results
    
    #Get the ID of the import
    IMPORT_ID=$(echo $results | awk -F "<job><id>" '{print $2}' | awk -F "</id><name>" '{print $1}')
    echo "the import ID is "$IMPORT_ID
    
    sleep 5
    
    #Create the repository.  If the repository already exists then it will not be affected
    curl -vs -u admin:admin -H "Content-Type: application/json" -X POST -d '{"name": "'"$DR_NAME"'"}' http://$EM_HOST:$EM_PORT/em/tdm/api//v1/servers/$DR_ID/repositories
    
    #import the upload into TDM
    curl -vs -u admin:admin -H "Content-Type: application/json" -X POST -d '{ "name": "'"$IMPORT_NAME"'", "description": "'"$IMPORT_DESCRIPTION"'", "export": '"$IMPORT_ID"'}' http://$EM_HOST:$EM_PORT/em/tdm/api/v1/servers/$DR_ID/repositories/$DR_NAME/import
    
    #Delete the import from TDM(Optional)
    curl -vs -u admin:admin -H "Content-Type: application/json" -X DELETE http://$EM_HOST:$EM_PORT/em/tdm/api/v1/exports/$IMPORT_ID`
    
Sign In or Register to comment.