1*16b33d51SOded Mashbach#!/usr/bin/env bash 2*16b33d51SOded Mashbach# SPDX-License-Identifier: BSD-3-Clause 3*16b33d51SOded Mashbach# Copyright (C) 2018 Intel Corporation 4*16b33d51SOded Mashbach# All rights reserved. 5*16b33d51SOded Mashbach# 6*16b33d51SOded Mashbach 7*16b33d51SOded MashbachTARGET_NAME="iqn.2016-06.io.spdk:disk1" 8*16b33d51SOded MashbachTARGET_ALIAS_NAME="disk1_alias" 9*16b33d51SOded MashbachMALLOC_BDEV_SIZE=64 10*16b33d51SOded MashbachMALLOC_BLOCK_SIZE=512 11*16b33d51SOded Mashbach 12*16b33d51SOded Mashbachfunction parse_cmd_line() { 13*16b33d51SOded Mashbach OPTIND=0 14*16b33d51SOded Mashbach DURING_DISCOVERY=0 15*16b33d51SOded Mashbach DURING_LOGIN=0 16*16b33d51SOded Mashbach BI_DIRECT=0 17*16b33d51SOded Mashbach CHAP_USER="chapo" 18*16b33d51SOded Mashbach CHAP_PASS="123456789123" 19*16b33d51SOded Mashbach CHAP_MUSER="" 20*16b33d51SOded Mashbach CHAP_MUSER="" 21*16b33d51SOded Mashbach AUTH_GROUP_ID=1 22*16b33d51SOded Mashbach 23*16b33d51SOded Mashbach while getopts ":t:u:s:r:m:dlb" opt; do 24*16b33d51SOded Mashbach case ${opt} in 25*16b33d51SOded Mashbach t) 26*16b33d51SOded Mashbach AUTH_GROUP_ID=$OPTARG 27*16b33d51SOded Mashbach ;; 28*16b33d51SOded Mashbach u) 29*16b33d51SOded Mashbach CHAP_USER=$OPTARG 30*16b33d51SOded Mashbach ;; 31*16b33d51SOded Mashbach s) 32*16b33d51SOded Mashbach CHAP_PASS=$OPTARG 33*16b33d51SOded Mashbach ;; 34*16b33d51SOded Mashbach r) 35*16b33d51SOded Mashbach CHAP_MUSER=$OPTARG 36*16b33d51SOded Mashbach ;; 37*16b33d51SOded Mashbach m) 38*16b33d51SOded Mashbach CHAP_MPASS=$OPTARG 39*16b33d51SOded Mashbach ;; 40*16b33d51SOded Mashbach d) 41*16b33d51SOded Mashbach DURING_DISCOVERY=1 42*16b33d51SOded Mashbach ;; 43*16b33d51SOded Mashbach l) 44*16b33d51SOded Mashbach DURING_LOGIN=1 45*16b33d51SOded Mashbach ;; 46*16b33d51SOded Mashbach b) 47*16b33d51SOded Mashbach BI_DIRECT=1 48*16b33d51SOded Mashbach ;; 49*16b33d51SOded Mashbach \?) 50*16b33d51SOded Mashbach echo "Usage: config_chap_credentials_for_target/config_chap_credentials_for_initiator [-t auth_group id] \ 51*16b33d51SOded Mashbach [-u user] [-s password] [-r muser] [-m mpassword] [-d] [-l] [-b]" 52*16b33d51SOded Mashbach ;; 53*16b33d51SOded Mashbach esac 54*16b33d51SOded Mashbach done 55*16b33d51SOded Mashbach} 56*16b33d51SOded Mashbach 57*16b33d51SOded Mashbachfunction restart_iscsid() { 58*16b33d51SOded Mashbach sleep 3 59*16b33d51SOded Mashbach systemctl restart iscsid 60*16b33d51SOded Mashbach sleep 1 61*16b33d51SOded Mashbach} 62*16b33d51SOded Mashbach 63*16b33d51SOded Mashbachfunction default_initiator_chap_credentials() { 64*16b33d51SOded Mashbach iscsiadm -m node --logout || true 65*16b33d51SOded Mashbach iscsiadm -m node -o delete || true 66*16b33d51SOded Mashbach 67*16b33d51SOded Mashbach sed -i "s/^node.session.auth.authmethod = CHAP/#node.session.auth.authmethod = CHAP/" /etc/iscsi/iscsid.conf 68*16b33d51SOded Mashbach sed -i "s/^node.session.auth.username =.*/#node.session.auth.username = username/" /etc/iscsi/iscsid.conf 69*16b33d51SOded Mashbach sed -i "s/^node.session.auth.password =.*/#node.session.auth.password = password/" /etc/iscsi/iscsid.conf 70*16b33d51SOded Mashbach sed -i "s/^node.session.auth.username_in =.*/#node.session.auth.username_in = username_in/" /etc/iscsi/iscsid.conf 71*16b33d51SOded Mashbach sed -i "s/^node.session.auth.password_in =.*/#node.session.auth.password_in = password_in/" /etc/iscsi/iscsid.conf 72*16b33d51SOded Mashbach 73*16b33d51SOded Mashbach sed -i 's/^discovery.sendtargets.auth.authmethod = CHAP/#discovery.sendtargets.auth.authmethod = CHAP/' /etc/iscsi/iscsid.conf 74*16b33d51SOded Mashbach sed -i 's/^discovery.sendtargets.auth.username =.*/#discovery.sendtargets.auth.username = username/' /etc/iscsi/iscsid.conf 75*16b33d51SOded Mashbach sed -i 's/^discovery.sendtargets.auth.password =.*/#discovery.sendtargets.auth.password = password/' /etc/iscsi/iscsid.conf 76*16b33d51SOded Mashbach sed -i "s/^discovery.sendtargets.auth.username_in =.*/#discovery.sendtargets.auth.username_in = username_in/" /etc/iscsi/iscsid.conf 77*16b33d51SOded Mashbach sed -i "s/^discovery.sendtargets.auth.password_in =.*/#discovery.sendtargets.auth.password_in = password_in/" /etc/iscsi/iscsid.conf 78*16b33d51SOded Mashbach restart_iscsid 79*16b33d51SOded Mashbach trap "trap - ERR; print_backtrace >&2" ERR 80*16b33d51SOded Mashbach} 81*16b33d51SOded Mashbach 82*16b33d51SOded Mashbachfunction config_chap_credentials_for_target() { 83*16b33d51SOded Mashbach 84*16b33d51SOded Mashbach parse_cmd_line "$@" 85*16b33d51SOded Mashbach #create auth group $AUTH_GROUP_ID 86*16b33d51SOded Mashbach $rpc_py iscsi_create_auth_group $AUTH_GROUP_ID 87*16b33d51SOded Mashbach #add secret + msecret to the auth group 88*16b33d51SOded Mashbach if [ -z "$CHAP_MUSER" ] || [ -z "$CHAP_MPASS" ]; then 89*16b33d51SOded Mashbach $rpc_py iscsi_auth_group_add_secret -u $CHAP_USER -s $CHAP_PASS $AUTH_GROUP_ID 90*16b33d51SOded Mashbach else 91*16b33d51SOded Mashbach $rpc_py iscsi_auth_group_add_secret -u $CHAP_USER -s $CHAP_PASS -m $CHAP_MUSER -r $CHAP_MPASS $AUTH_GROUP_ID 92*16b33d51SOded Mashbach fi 93*16b33d51SOded Mashbach 94*16b33d51SOded Mashbach #set chap authentication method during discovery phase 95*16b33d51SOded Mashbach if [ $DURING_LOGIN -eq 1 ]; then 96*16b33d51SOded Mashbach if [ $BI_DIRECT -eq 1 ]; then 97*16b33d51SOded Mashbach $rpc_py iscsi_target_node_set_auth -g $AUTH_GROUP_ID -r -m $TARGET_NAME 98*16b33d51SOded Mashbach else 99*16b33d51SOded Mashbach $rpc_py iscsi_target_node_set_auth -g $AUTH_GROUP_ID -r $TARGET_NAME 100*16b33d51SOded Mashbach fi 101*16b33d51SOded Mashbach fi 102*16b33d51SOded Mashbach if [ $DURING_DISCOVERY -eq 1 ]; then 103*16b33d51SOded Mashbach if [ $BI_DIRECT -eq 1 ]; then 104*16b33d51SOded Mashbach $rpc_py iscsi_set_discovery_auth -r -m -g $AUTH_GROUP_ID 105*16b33d51SOded Mashbach else 106*16b33d51SOded Mashbach $rpc_py iscsi_set_discovery_auth -r -g $AUTH_GROUP_ID 107*16b33d51SOded Mashbach fi 108*16b33d51SOded Mashbach fi 109*16b33d51SOded Mashbach} 110*16b33d51SOded Mashbach 111*16b33d51SOded Mashbachfunction config_chap_credentials_for_initiator() { 112*16b33d51SOded Mashbach 113*16b33d51SOded Mashbach parse_cmd_line "$@" 114*16b33d51SOded Mashbach default_initiator_chap_credentials 115*16b33d51SOded Mashbach 116*16b33d51SOded Mashbach if [ $DURING_LOGIN -eq 1 ]; then 117*16b33d51SOded Mashbach sed -i "s/#node.session.auth.authmethod = CHAP/node.session.auth.authmethod = CHAP/" /etc/iscsi/iscsid.conf 118*16b33d51SOded Mashbach sed -i "s/#node.session.auth.username =.*/node.session.auth.username = ${CHAP_USER}/" /etc/iscsi/iscsid.conf 119*16b33d51SOded Mashbach sed -i "s/#node.session.auth.password =.*/node.session.auth.password = ${CHAP_PASS}/" /etc/iscsi/iscsid.conf 120*16b33d51SOded Mashbach if [ $BI_DIRECT -eq 1 ] && [ -n "$CHAP_MPASS" ] && [ -n "$CHAP_MUSER" ]; then 121*16b33d51SOded Mashbach sed -i "s/#node.session.auth.username_in =.*/node.session.auth.username_in = ${CHAP_MUSER}/" /etc/iscsi/iscsid.conf 122*16b33d51SOded Mashbach sed -i "s/#node.session.auth.password_in =.*/node.session.auth.password_in = ${CHAP_MPASS}/" /etc/iscsi/iscsid.conf 123*16b33d51SOded Mashbach fi 124*16b33d51SOded Mashbach fi 125*16b33d51SOded Mashbach 126*16b33d51SOded Mashbach if [ $DURING_DISCOVERY -eq 1 ]; then 127*16b33d51SOded Mashbach sed -i "s/#discovery.sendtargets.auth.authmethod = CHAP/discovery.sendtargets.auth.authmethod = CHAP/" /etc/iscsi/iscsid.conf 128*16b33d51SOded Mashbach sed -i "s/#discovery.sendtargets.auth.username =.*/discovery.sendtargets.auth.username = ${CHAP_USER}/" /etc/iscsi/iscsid.conf 129*16b33d51SOded Mashbach sed -i "s/#discovery.sendtargets.auth.password =.*/discovery.sendtargets.auth.password = ${CHAP_PASS}/" /etc/iscsi/iscsid.conf 130*16b33d51SOded Mashbach if [ $BI_DIRECT -eq 1 ] && [ -n "$CHAP_MPASS" ] && [ -n "$CHAP_MUSER" ]; then 131*16b33d51SOded Mashbach sed -i "s/#discovery.sendtargets.auth.username_in =.*/discovery.sendtargets.auth.username_in = ${CHAP_MUSER}/" /etc/iscsi/iscsid.conf 132*16b33d51SOded Mashbach sed -i "s/#discovery.sendtargets.auth.password_in =.*/discovery.sendtargets.auth.password_in = ${CHAP_MPASS}/" /etc/iscsi/iscsid.conf 133*16b33d51SOded Mashbach fi 134*16b33d51SOded Mashbach fi 135*16b33d51SOded Mashbach restart_iscsid 136*16b33d51SOded Mashbach trap "trap - ERR; default_initiator_chap_credentials; print_backtrace >&2" ERR 137*16b33d51SOded Mashbach} 138*16b33d51SOded Mashbach 139*16b33d51SOded Mashbachfunction set_up_iscsi_target() { 140*16b33d51SOded Mashbach timing_enter start_iscsi_tgt 141*16b33d51SOded Mashbach "${ISCSI_APP[@]}" -m 0x2 -p 1 -s 512 --wait-for-rpc & 142*16b33d51SOded Mashbach pid=$! 143*16b33d51SOded Mashbach echo "iSCSI target launched. pid: $pid" 144*16b33d51SOded Mashbach trap 'killprocess $pid;exit 1' SIGINT SIGTERM EXIT 145*16b33d51SOded Mashbach waitforlisten $pid 146*16b33d51SOded Mashbach $rpc_py iscsi_set_options -o 30 -a 4 147*16b33d51SOded Mashbach $rpc_py framework_start_init 148*16b33d51SOded Mashbach echo "iscsi_tgt is listening. Running tests..." 149*16b33d51SOded Mashbach timing_exit start_iscsi_tgt 150*16b33d51SOded Mashbach 151*16b33d51SOded Mashbach $rpc_py iscsi_create_portal_group $PORTAL_TAG $TARGET_IP:$ISCSI_PORT 152*16b33d51SOded Mashbach $rpc_py iscsi_create_initiator_group $INITIATOR_TAG $INITIATOR_NAME $NETMASK 153*16b33d51SOded Mashbach $rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE 154*16b33d51SOded Mashbach $rpc_py iscsi_create_target_node $TARGET_NAME $TARGET_ALIAS_NAME 'Malloc0:0' $PORTAL_TAG:$INITIATOR_TAG 256 -d 155*16b33d51SOded Mashbach sleep 1 156*16b33d51SOded Mashbach trap 'killprocess $pid; iscsitestfini; exit 1' SIGINT SIGTERM EXIT 157*16b33d51SOded Mashbach} 158