#!/bin/sh

TO_IP=192.168.0.232
TO_PORT=3260

# Value should be coming from master-mirror:/etc/targetname.iscsi..
MMTGTIQN=iqn.2003-01.org.linux-iscsi.bbtest2.x86_64:sn.b314b6b0bbca
# This is the initiator that is currently accessing the networking RAID1 for primary LIO-Target 
INITIQN[0]=iqn.1994-05.com.redhat:6e211fb3697
INITIQN[1]=iqn.1994-05.com.redhat:63a52b449156

# DomU TEST - Take over master-mirror IP (will be done with Linux/HA IP and ARP takeover)
ifconfig eth0:0 $TO_IP netmask 255.255.255.0 up
echo "Taking over master-mirror IP...."
sleep 3

target-ctl delnodefromtpg tpgt=1 initiatorname=iqn.2003-01.org.linux-iscsi.bbtest2.x86_64:sn.319bc052efca force=1

# Remove /dev/mirrorvg/test-mirror from LIO SE
target-ctl freevirtdev lvm_uuid=7IBK5i-znZs-h9hN-Hzbc-9WDl-Z3sT-j7yVGB
RET=$?
if [ $RET != 0 ]; then
	echo "target-ctl freevirtdev for secondary mirror volume failed"
	exit 1
fi

echo "Calling pvscan /dev/mirrorvg/test-mirror"
pvscan -v /dev/mirrorvg/test-mirror
echo "vgreduce --removemissing LIO-NR1-Elements"
vgreduce --removemissing LIO-NR1-Elements
echo "Calling lvchange -a y LIO-NR1-Elements"
lvchange -a y LIO-NR1-Elements

# Add lvm_uuid= to next available MD block device..
mdadm --assemble /dev/md0 /dev/LIO-NR1-Elements/NR1-Remote-Element --run
RET=$?
if [ $RET != 0 ]; then
	echo "mdadm --assemble failed for secondary mirror"
	exit 1
fi

echo "Calling pvscan /dev/md0"
pvscan -v /dev/md0
echo "vgreduce --removemissing LIO-NR1-VOL"
vgreduce --removemissing LIO-NR1-VOL
echo "lvchange -a y LIO-NR1-VOL"
lvchange -a y LIO-NR1-VOL

# Needs to be next unused md0 array based on UUID from mdadm --detail --scan
#target-ctl createvirtdev hba_id=0 md_uuid=
target-ctl createvirtdev hba_id=0 lvm_uuid=JYElqI-kJOD-QwRo-A68B-s6X9-jw6g-Jfyy1p
RET=$?
if [ $RET != 0 ]; then
	echo "target-ctl createvirtdev for secondary mirror failed"
	exit 1
fi

# Value should be coming from master-mirror:/etc/targetname.iscsi..
target-ctl coreaddtiqn targetname=$MMTGTIQN

target-ctl addtpg tpgt=1 targetname=$MMTGTIQN
/sbin/target-ctl settpgparam tpgt=1  AuthMethod=CHAP,None targetname=$MMTGTIQN
/sbin/target-ctl settpgparam tpgt=1  AuthMethod=SRP,CHAP,None targetname=$MMTGTIQN
/sbin/target-ctl settpgparam tpgt=1  HeaderDigest=CRC32C,None targetname=$MMTGTIQN
/sbin/target-ctl settpgparam tpgt=1  DataDigest=CRC32C,None targetname=$MMTGTIQN
/sbin/target-ctl settpgparam tpgt=1  IFMarker=Yes targetname=$MMTGTIQN
/sbin/target-ctl settpgparam tpgt=1  OFMarker=Yes targetname=$MMTGTIQN
/sbin/target-ctl settpgparam tpgt=1  IFMarkInt=2048~8192 targetname=$MMTGTIQN
/sbin/target-ctl settpgparam tpgt=1  OFMarkInt=2048~8192 targetname=$MMTGTIQN
/sbin/target-ctl settpgparam tpgt=1  DataPDUInOrder=No targetname=$MMTGTIQN
/sbin/target-ctl settpgparam tpgt=1  DataSequenceInOrder=No targetname=$MMTGTIQN
/sbin/target-ctl settpgparam tpgt=1  InitialR2T=No targetname=$MMTGTIQN
/sbin/target-ctl settpgparam tpgt=1  ErrorRecoveryLevel=0 targetname=$MMTGTIQN
/sbin/target-ctl settpgparam tpgt=1  MaxConnections=10 targetname=$MMTGTIQN
/sbin/target-ctl settpgattrib tpgt=1 authentication=0 targetname=$MMTGTIQN
/sbin/target-ctl settpgattrib tpgt=1 login_timeout=15 targetname=$MMTGTIQN
/sbin/target-ctl settpgattrib tpgt=1 netif_timeout=2 targetname=$MMTGTIQN
/sbin/target-ctl settpgattrib tpgt=1 default_queue_depth=16 targetname=$MMTGTIQN
/sbin/target-ctl settpgattrib tpgt=1 generate_node_acls=0 targetname=$MMTGTIQN
/sbin/target-ctl settpgattrib tpgt=1 cache_dynamic_acls=0 targetname=$MMTGTIQN
/sbin/target-ctl settpgparam tpgt=1 TargetAlias=bbtest2-lio-ha targetname=$MMTGTIQN

# Add a the network portal for the failed master-mirror
target-ctl addnptotpg tpgt=1 ip=$TO_IP port=$TO_PORT targetname=$MMTGTIQN
# Needs to be next unused md0 array based on UUID from mdadm --detail --scan
/sbin/target-ctl addluntodev tpgt=1 iscsi_lun=0 lvm_uuid=JYElqI-kJOD-QwRo-A68B-s6X9-jw6g-Jfyy1p targetname=$MMTGTIQN

init_count=${#INITIQN[@]}
index=0

while [ "$index" -lt "$init_count" ]
do
	/sbin/target-ctl addnodetotpg tpgt=1 targetname=$MMTGTIQN queue_depth=32 initiatorname=${INITIQN[$index]} 
	/sbin/target-ctl setnodeattrib tpgt=1 targetname=$MMTGTIQN initiatorname=${INITIQN[$index]} dataout_timeout=3
	/sbin/target-ctl setnodeattrib tpgt=1 targetname=$MMTGTIQN initiatorname=${INITIQN[$index]} dataout_timeout_retries=5 
	/sbin/target-ctl setnodeattrib tpgt=1 targetname=$MMTGTIQN initiatorname=${INITIQN[$index]} default_erl=2 
	/sbin/target-ctl setnodeattrib tpgt=1 targetname=$MMTGTIQN initiatorname=${INITIQN[$index]} nopin_response_timeout=5
	/sbin/target-ctl setnodeattrib tpgt=1 targetname=$MMTGTIQN initiatorname=${INITIQN[$index]} random_datain_pdu_offsets=0 
	/sbin/target-ctl setnodeattrib tpgt=1 targetname=$MMTGTIQN initiatorname=${INITIQN[$index]} random_datain_seq_offsets=0 
	/sbin/target-ctl setnodeattrib tpgt=1 targetname=$MMTGTIQN initiatorname=${INITIQN[$index]} random_r2t_offsets=0 

	/sbin/target-ctl addnodetolun tpgt=1 targetname=$MMTGTIQN iscsi_lun=0 mapped_lun=0 lun_access=1 initiatorname=${INITIQN[$index]}

	index+=1
done

/sbin/target-ctl enabletpg tpgt=1 targetname=$MMTGTIQN

