#!/bin/bash


###Define parametrs
REMOTE_USER="root"
#remote server ip address
REMOTE_SERVER="10.10.99.100"
SSH_LOGIN=$REMOTE_USER@$REMOTE_SERVER
##sync /etc/dpi aslocal.bin asnum.dscp service18 to remote 

rsync -av /etc/dpi/aslocal.bin /etc/dpi/asnum.dscp /etc/dpi/service18   $SSH_LOGIN:/etc/dpi/

###GET current master profile data and push them to remote 
profile_push() {
J_DATA=$(fdpi_ctrl list all profile --service "$1" --outformat json|jq  '.lprofiles|.[].profile.description')

readarray -t NAMES < <(echo $J_DATA|jq -r '.name')
readarray -t PARAM < <(echo $J_DATA|jq -r '.param')
length=${#NAMES[@]}

for (( i=0; i<length; i++ )); do

      ssh $SSH_LOGIN "fdpi_ctrl load profile --service "$1"  --profile.name '${NAMES[i]}' --profile.json '${PARAM[i]}'"
    
done
}
###GET REMOTE profile data compare it with main dpi profiles and remove profiles that do not exist on master from remote
profile_rem() {

    readarray -t PR_REM < <(comm -13 <(fdpi_ctrl list all profile --service "$1" --outformat json|jq  -r '.lprofiles|.[].profile.description.name'|sort) <(ssh $SSH_LOGIN "fdpi_ctrl list all profile --service "$1" --outformat json|jq  -r '.lprofiles|.[].profile.description.name'"|sort))
   

    for i in ${PR_REM[@]}; do
    ssh $SSH_LOGIN "fdpi_ctrl del profile --service "$1"  --profile.name "$i""
    done
} 
profile_policing_push() {
J_DATA=$(fdpi_ctrl list all profile --policing --outformat json|jq  '.lprofiles|.[].profile')

readarray -t NAMES < <(echo $J_DATA|jq -rc '.description.name')
readarray -t PARAM < <(echo $J_DATA|jq -rc '.policing')
length=${#NAMES[@]}

for (( i=0; i<length; i++ )); do

      ssh $SSH_LOGIN "fdpi_ctrl load profile --policing  --profile.name '${NAMES[i]}' --profile.json '${PARAM[i]}'"
    
done
}
profile_policing_rem() {

    readarray -t PR_REM < <(comm -13 <(fdpi_ctrl list all profile --policing --outformat json|jq  -r '.lprofiles|.[].profile.description.name'|sort) <(ssh $SSH_LOGIN "fdpi_ctrl list all profile --policing --outformat json|jq  -r '.lprofiles|.[].profile.description.name'"|sort))
   

    for i in ${PR_REM[@]}; do
    ssh $SSH_LOGIN "fdpi_ctrl del profile --policing  --profile.name "$i""
    done
} 
###function calls
profile_push 4 >>/dev/null
profile_push 5 >>/dev/null
profile_push 18 >>/dev/null
profile_policing_push
profile_rem 4 >>/dev/null
profile_rem 5 >>/dev/null
profile_rem 18 >>/dev/null
profile_policing_rem