#######################################################################################
#######################################################################################
#NIDD_VER: GSM17_1610_002_00
#GNBTS: GNBTS_GSM17_1610_002
#Migration from SBTS16.10 to SBTS17
#14.11.2016/ v0.1 /draft for new CUTool /L.Preuss
#17.11.2016/ v0.2 /draft for new CUTool /C.Tirdea
#19.06.2017/ v0.3 HAI:  PR248213: [OAM_SCT][SBTS17][RP1062] To small range for GNCEL in SBTS17 in comparison to LCELC in SBTS16
#######################################################################################

#######################################################################################
#######################################################################################
#If SCF version == 16.10 proceed with migration, else abort this ruleset

for_objects "SBTS"
	define "sbtsRoot" $current_dist_name

if ( objects_count "SBTS" ) == 0 abort_file
	
if not ( get_version sbtsRoot ) == "SBTS16.10" 
	begin
		abort_file
	end
#######################################################################################

#######################################################################################
#######################################################################################
#If BTSSCC exists in SBTS6.10 continue 

if not ( objects_count "SBTS/BTSSCC" ) > 0
	begin
		abort_file
	end
#######################################################################################

#######################################################################################
#######################################################################################
#create mrbtsRoot, sbtsRoot for later usage

for_objects "MRBTS"
	begin
		define "mrbtsRoot" $current_dist_name
	end
	
for_objects "SBTS"
	begin
		define "sbtsRoot" $current_dist_name
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Add GNBTS 

define "gnbtsDN" mrbtsRoot JOIN "/GNBTS-1"
add_object gnbtsDN
set_operation gnbtsDN "create"

#######################################################################################
#create GNBCF and populate with parameters

define "gnbcfDN" gnbtsDN JOIN "/GNBCF-1"
add_object gnbcfDN
set_operation gnbcfDN "create"

for_objects "SBTS/BTSSCC"
	begin
		if ( param_exist $current_dist_name "bscId" ) add_param gnbcfDN "bscId" get_param $current_dist_name "bscId"
		if ( param_exist $current_dist_name "bcfId" ) add_param gnbcfDN "bcfId" get_param $current_dist_name "bcfId"
		if ( param_exist $current_dist_name "iuaAckTimerOmuSig" ) add_param gnbcfDN "iuaAckTimerOmuSig" get_param $current_dist_name "iuaAckTimerOmuSig"
		if ( param_exist $current_dist_name "mPlaneDscpOmuSig" ) add_param gnbcfDN "mPlaneDscpOmuSig" get_param $current_dist_name "mPlaneDscpOmuSig"
		if ( param_exist $current_dist_name "mPlaneRemoteIpAddressOmuSig" ) add_param gnbcfDN "mPlaneRemoteIpAddressOmuSig" get_param $current_dist_name "mPlaneRemoteIpAddressOmuSig"

        if ( param_exist $current_dist_name "mPlaneRemoteIpAddressOmuSig2" )
            begin
                define "mPlaneRemoteIpAddressOmuSig2" get_param $current_dist_name "mPlaneRemoteIpAddressOmuSig2"
                if ( mPlaneRemoteIpAddressOmuSig2 ) != "0.0.0.0"
                    add_param gnbcfDN "mPlaneRemoteIpAddressOmuSig2" get_param $current_dist_name "mPlaneRemoteIpAddressOmuSig2"
            end

		if ( param_exist $current_dist_name "rxds" ) add_param gnbcfDN "rxds" get_param $current_dist_name "rxds"
		if ( param_exist $current_dist_name "sctpHbIntervalOmuSig" ) add_param gnbcfDN "sctpHbIntervalOmuSig" get_param $current_dist_name "sctpHbIntervalOmuSig"
		if ( param_exist $current_dist_name "sctpMaxPayloadSize" ) add_param gnbcfDN "sctpMaxPayloadSize" get_param $current_dist_name "sctpMaxPayloadSize"  
		if ( param_exist $current_dist_name "sctpMaxRetransAssocOmuSig" ) add_param gnbcfDN "sctpMaxRetransAssocOmuSig" get_param $current_dist_name "sctpMaxRetransAssocOmuSig"
		if ( param_exist $current_dist_name "sctpMaxRetransPathOmuSig" ) add_param gnbcfDN "sctpMaxRetransPathOmuSig" get_param $current_dist_name "sctpMaxRetransPathOmuSig"
		if ( param_exist $current_dist_name "sctpPortOmuSig" ) add_param gnbcfDN "sctpPortOmuSig"  get_param $current_dist_name "sctpPortOmuSig"  
		if ( param_exist $current_dist_name "sctpRtoInitOmuSig" ) add_param gnbcfDN "sctpRtoInitOmuSig" get_param $current_dist_name "sctpRtoInitOmuSig"  
		if ( param_exist $current_dist_name "sctpRtoMaxOmuSig" ) add_param gnbcfDN "sctpRtoMaxOmuSig" get_param $current_dist_name "sctpRtoMaxOmuSig"
		if ( param_exist $current_dist_name "sctpRtoMinOmuSig" ) add_param gnbcfDN "sctpRtoMinOmuSig" get_param $current_dist_name "sctpRtoMinOmuSig"
		if ( param_exist $current_dist_name "sctpSackPeriodOmuSig" ) add_param gnbcfDN "sctpSackPeriodOmuSig" get_param $current_dist_name "sctpSackPeriodOmuSig"
		if ( param_exist $current_dist_name "switchoverFailTimer" ) add_param gnbcfDN "switchoverFailTimer" get_param $current_dist_name "switchoverFailTimer"
		if ( param_exist $current_dist_name "switchoverStartTimer" ) add_param gnbcfDN "switchoverStartTimer" get_param $current_dist_name "switchoverStartTimer"
		if ( param_exist $current_dist_name "ucsSupervisionPktTimerValue" ) add_param gnbcfDN "ucsSupervisionPktTimerValue" get_param $current_dist_name "ucsSupervisionPktTimerValue"
		if ( param_exist $current_dist_name "udpMaxDatagramSize" ) add_param gnbcfDN "udpMaxDatagramSize" get_param $current_dist_name "udpMaxDatagramSize"
		if ( param_exist $current_dist_name "upsSupervisionPktTimerValue" ) add_param gnbcfDN "upsSupervisionPktTimerValue" get_param $current_dist_name "upsSupervisionPktTimerValue"
		
		define "mplaneIp" get_param $current_dist_name "mPlaneLocalIpAddressOmuSig"
	end

for_objects "SBTS/BTSSCC/LCELC"
	begin
		if ( get_param $current_dist_name "txPowerPooling" ) == "true"
			add_param gnbcfDN "txPowerPooling" "true"
	end

if not ( param_exist gnbcfDN "txPowerPooling" )
	add_param gnbcfDN "txPowerPooling" "false"
	
for_objects "MRBTS/TNLSVC/TNL/IPNO/IPIF/IPADDRESSV4"
	begin
		define "tnlIp" get_param $current_dist_name "localIpAddr"
		if tnlIp == mplaneIp
			add_param gnbcfDN "mPlaneLocalIpAddressDN" $current_dist_name
	end

#######################################################################################

#######################################################################################
#######################################################################################
#copy LCELC to GNCEL and removed unused parameters

define "lcelcid" 0

for_objects "SBTS/BTSSCC/LCELC"
	begin
		define "lcelcid" lcelcid + 1
		define "gncelDN" gnbcfDN JOIN "/GNCEL-" JOIN lcelcid
		copy_object $current_dist_name gncelDN
			if ( get_param $current_dist_name "txPowerPooling" ) == "true"
				add_param gnbcfDN "txPowerPooling" "true"
			if ( not param_exist gnbcfDN "txPowerPooling" ) add_param gnbcfDN "txPowerPooling" "false"
			if ( param_exist gncelDN "txPowerPooling" ) del_param gncelDN "txPowerPooling"
			# PR248213 
			if ( param_exist gncelDN "resourceList" ) del_param gncelDN "resourceList"
	end
#######################################################################################

#######################################################################################
#######################################################################################
#add lcelcId to GNCEL and removed unused parameters

for_objects "MRBTS/GNBTS/GNBCF/GNCEL"
	begin
		add_param $current_dist_name "lcelcId" $current_GNCEL
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Set proper version and adaptations for GNBTS subtree

for_objects "MRBTS/GNBTS"
	begin
		set_version $current_dist_name "GSM17_1610_002"
		set_adaptation $current_dist_name "com.nokia.srbts.gsm"
	end
	
for_objects "MRBTS/GNBTS/GNBCF"
	begin
		set_version $current_dist_name "GSM17_1610_002"
		set_adaptation $current_dist_name "com.nokia.srbts.gsm"
	end

for_objects "MRBTS/GNBTS/GNBCF/GNCEL"
	begin
		set_version $current_dist_name "GSM17_1610_002"
		set_adaptation $current_dist_name "com.nokia.srbts.gsm"
	end
#######################################################################################
