Blob Blame History Raw
diff -ur nordugrid-arc-1.0.1.orig/src/services/ldap-infosys/giis/Entry.cpp nordugrid-arc-1.0.1/src/services/ldap-infosys/giis/Entry.cpp
--- nordugrid-arc-1.0.1.orig/src/services/ldap-infosys/giis/Entry.cpp	2011-07-23 09:31:23.621415872 +0200
+++ nordugrid-arc-1.0.1/src/services/ldap-infosys/giis/Entry.cpp	2011-08-27 12:47:51.772596434 +0200
@@ -19,12 +19,12 @@
       port = atoi(it->substr(18).c_str());
     if(it->substr(0, 25) == "Mds-Service-Ldap-suffix: ")
       suffix = it->substr(25);
-    if(it->substr(0, 28) == "Mds-Service-Ldap-cachettl: ")
-      cachetime = atoi(it->substr(28).c_str());
-    if(it->substr(0, 27) == "Mds-Service-Ldap-timeout: ")
-      timelimit = atoi(it->substr(27).c_str());
-    if(it->substr(0, 29) == "Mds-Service-Ldap-sizelimit: ")
-      sizelimit = atoi(it->substr(29).c_str());
+    if(it->substr(0, 27) == "Mds-Service-Ldap-cachettl: ")
+      cachetime = atoi(it->substr(27).c_str());
+    if(it->substr(0, 26) == "Mds-Service-Ldap-timeout: ")
+      timelimit = atoi(it->substr(26).c_str());
+    if(it->substr(0, 28) == "Mds-Service-Ldap-sizelimit: ")
+      sizelimit = atoi(it->substr(28).c_str());
     if(it->substr(0, 15) == "Mds-validfrom: ")
       validfrom = it->substr(15);
     if(it->substr(0, 13) == "Mds-validto: ")
diff -ur nordugrid-arc-1.0.1.orig/src/services/ldap-infosys/grid-infosys-bdii5.in nordugrid-arc-1.0.1/src/services/ldap-infosys/grid-infosys-bdii5.in
--- nordugrid-arc-1.0.1.orig/src/services/ldap-infosys/grid-infosys-bdii5.in	2011-07-23 09:31:23.627415796 +0200
+++ nordugrid-arc-1.0.1/src/services/ldap-infosys/grid-infosys-bdii5.in	2011-08-27 14:07:02.880199415 +0200
@@ -137,30 +137,6 @@
     esac
 }
 
-
-# Function checks if we are using a nordugrid-patched bdii Returns
-# true (1) if bdii is unpatched. Returns false (0) if it is patched.
-# In case it is patched, we should disable o=infosys as default.  If
-# it is not patched, then keep o=infosys since plain bdii does not
-# support turning this feature off.
-check_if_bdii_unpatched () {
-    if [ $# != 1 ]; then
-	error_echo "check_bdii called with too few arguments, wanted bdii_update_file_path"
-	exit 1
-    fi
-    bdii_update_file=$1
-    grep -q "bdii_infosys" $bdii_update_file
-    if [ $? -eq 0 ]; then
-	debug_echo "You are using a patched version of BDII."
-	debug_echo "Will default to turning off o=infosys unless specifically handled in arc.conf"
-	return 0
-    else
-	debug_echo "Warning: You are using a pure version of BDII."
-	debug_echo "Will not try to turn o=infosys off since this is not supported."
-	return 1
-    fi
-}
-
 ###############  Standard configuration  ######################
 
 # Set ARC location
@@ -290,21 +266,27 @@
 bdii_location=${CONFIG_bdii_location:-/usr}
 giis_location=${CONFIG_giis_location:-$ARC_LOCATION}
 
+bdii_update_cmd=${CONFIG_bdii_update_cmd:-"${bdii_location}/sbin/bdii-update"}
+if [ ! -e $bdii_update_cmd ]; then
+    log_failure_msg "Can not find bdii-update command at: $bdii_update_cmd."
+    log_failure_msg "Please set bdii_update_cmd in arc.conf"
+    exit 1
+fi
+
 bdii_tmp_dir=${CONFIG_bdii_tmp_dir:-/var/tmp/arc/bdii}
+if grep -q BDII_PID_FILE $bdii_update_cmd ; then
+bdii_var_dir=${CONFIG_bdii_var_dir:-/var/lib/arc/bdii}
+bdii_run_dir=${CONFIG_bdii_run_dir:-/var/run/arc/bdii}
+else
 bdii_var_dir=${CONFIG_bdii_var_dir:-/var/run/arc/bdii}
+bdii_run_dir=$bdii_var_dir
+fi
 bdii_log_dir=${CONFIG_bdii_log_dir:-/var/log/arc/bdii}
 bdii_log_file="${bdii_log_dir}/bdii-update.log"
 
 mkdir -p $bdii_log_dir
 
-bdii_slapd_conf=$bdii_var_dir/bdii-slapd.conf
-
-bdii_update_cmd=${CONFIG_bdii_update_cmd:-"${bdii_location}/sbin/bdii-update"}
-if [ ! -e $bdii_update_cmd ]; then
-    log_failure_msg "Can not find bdii-update command at: $bdii_update_cmd."
-    log_failure_msg "Please set bdii_update_cmd in arc.conf"
-    exit 1
-fi
+bdii_slapd_conf=$bdii_run_dir/bdii-slapd.conf
 
 bdii_default_ldif_ng=${bdii_tmp_dir}/provider/arc-default.ldif.pl
 bdii_ldif_dir=${bdii_tmp_dir}/ldif
@@ -313,12 +295,11 @@
 
 bdii_port=${CONFIG_port:-2135}
 
-#Using uppercase characters in bdii_bind will break infosys.
+# Using uppercase characters in bdii_bind will break infosys.
 bdii_bind="o=grid"
-#TODO add to BDII
+
 bdii_db_config=${CONFIG_bdii_db_config:-"/etc/bdii/DB_CONFIG"}
-bdii_database=${CONFIG_bdii_database:-"bdb"}
-bdii_fix_glue=${CONFIG_fix_glue:-no}
+bdii_database=${CONFIG_bdii_database:-"hdb"}
 bdii_archive_size=${CONFIG_bdii_archive_size:-0}
 
 infosys_compat=${CONFIG_infosys_compat:-"disable"}
@@ -346,8 +327,8 @@
 fi
 bdii_delete_delay=${CONFIG_bdii_delete_delay:-0}
 
-update_pid_file=${CONFIG_bdii_update_pid_file:-/var/run/arc/bdii-update.pid}
-slapd_pid_file=${CONFIG_slapd_pid_file:-$bdii_var_dir/db/slapd.pid}
+update_pid_file=${CONFIG_bdii_update_pid_file:-$bdii_run_dir/bdii-update.pid}
+slapd_pid_file=${CONFIG_slapd_pid_file:-$bdii_run_dir/db/slapd.pid}
 
 # Debian does not have /var/lock/subsys
 if [ -d /var/lock/subsys ]; then
@@ -360,13 +341,6 @@
     lockfile=/var/lock/$prog
 fi
 
-# o=infosys should be disabled by default if possible.
-infosys_debug=${CONFIG_infosys_debug:-"disable"}
-bdii_infosys="no"
-if [ "x$infosys_debug" = "xenable" ]; then
-    bdii_infosys="yes"
-fi
-
 # Check directories and permissions
 registrationlog=${CONFIG_registrationlog:-/var/log/arc/inforegistration.log}
 mkdir -p `dirname $registrationlog`
@@ -463,19 +437,20 @@
 	fi
 
 	# This will get written to bdii slapd.conf:
-	slapd_modulepath="modulepath      $ldaplib"
-	slapd_moduleload_index="moduleload      back_shell"
+	if [ -r ${giis_location}/lib64/arc/arc-infoindex-slapd-wrapper.so ]; then
+	    pkglibdir=${giis_location}/lib64/arc
+	elif [ -r ${giis_location}/lib/arc/arc-infoindex-slapd-wrapper.so ]; then
+	    pkglibdir=${giis_location}/lib/arc
+	else
+	    error_echo "Error, could not find infoindex slapd wrapper"
+	    exit 1
+	fi
+	slapd_modulepath="modulepath      $ldaplib:$pkglibdir"
+	slapd_moduleload_index1="moduleload      back_shell"
+	slapd_moduleload_index2="moduleload      arc-infoindex-slapd-wrapper"
     fi
 fi
 
-# If we are running on an unpatched BDII, handle it gracefully by
-# having o=infosys enabled.
-check_if_bdii_unpatched $bdii_update_cmd
-if [ $? -gt 0 ]; then
-    infosys_debug=enable
-    bdii_infosys=yes
-fi
-
 resource_location=""
 resource_latitude=""
 resource_longitude=""
@@ -574,29 +549,26 @@
     rm -f ${BDII_CONF}
     std_header ${BDII_CONF}
     cat <<-EOF >> ${BDII_CONF}
-	BDII_DIR=$bdii_location
-	BDII_VAR_DIR=$bdii_var_dir
 	BDII_LOG_FILE=$bdii_log_file
-	BDII_LOG_LEVEL=DEBUG
+	BDII_PID_FILE=$update_pid_file
+	BDII_LOG_LEVEL=ERROR
 	BDII_LDIF_DIR=$bdii_ldif_dir
 	BDII_PROVIDER_DIR=$bdii_provider_dir
 	BDII_PLUGIN_DIR=$bdii_plugin_dir
 	BDII_PORT=$bdii_port
-	BDII_USER=$bdii_user
-	BDII_BIND=$bdii_bind
 	BDII_BREATHE_TIME=$bdii_breathe_time
 	BDII_READ_TIMEOUT=$bdii_read_timeout
-	BDII_DELETE_DELAY=$bdii_delete_delay
-	BDII_INFOSYS=$bdii_infosys
 	BDII_ARCHIVE_SIZE=$bdii_archive_size
-	FIX_GLUE=$bdii_fix_glue
+	BDII_DELETE_DELAY=$bdii_delete_delay
+	BDII_USER=$bdii_user
+	BDII_VAR_DIR=$bdii_var_dir
 	SLAPD_CONF=$bdii_slapd_conf
 	EOF
 }
 
 # Call with: create_arc_slapd_conf bdii_dir bdii_slapd_conf_file
 # Will create file $bdii_slapd_conf, normally located at:
-# $bdii_var_dir/arc-slapd.conf
+# $bdii_run_dir/arc-slapd.conf
 create_arc_slapd_conf () {
     if [ $# != 2 ]; then
 	error_echo "Wrong number of arguments to create_arc_slapd_conf"
@@ -639,12 +611,13 @@
 
 	$slapd_modulepath
 	$slapd_moduleload
-	$slapd_moduleload_index
+	$slapd_moduleload_index1
+	$slapd_moduleload_index2
 
 	allow bind_v2
 
-	pidfile         $bdii_var_dir/db/slapd.pid
-	argsfile        $bdii_var_dir/db/slapd.args
+	pidfile         $bdii_run_dir/db/slapd.pid
+	argsfile        $bdii_run_dir/db/slapd.args
 	loglevel        $slapd_loglevel
 	threads         $threads
 	idletimeout     120
@@ -668,6 +641,7 @@
 	cachesize       150000
 	dbnosync
 	suffix          "$suffix"
+	checkpoint      131072 60
 	rootdn          "$rootdn"
 	rootpw          secret
 	directory       $bdii_var_dir/db/arc
@@ -677,23 +651,21 @@
 	cachesize       150000
 	dbnosync
 	suffix          "o=glue"
+	checkpoint      131072 60
 	rootdn          "o=glue"
 	rootpw          secret
 	directory       $bdii_var_dir/db/glue2
-	EOF
 
-    if [ "x$infosys_debug" = "xenable" ]; then
-    cat <<-EOF >> $bdii_slapd_conf
 	# Infosys database definitions
 	database        ${bdii_database}
-	cachesize       150000
+	cachesize       60
 	dbnosync
 	suffix          "o=infosys"
+	checkpoint      131072 60
 	rootdn          "o=infosys"
 	rootpw          secret
 	directory       $bdii_var_dir/db/stats
 	EOF
-    fi
 }
 
 # Call with: create_default_ldif bdii_default_ldif_file
@@ -1218,32 +1190,35 @@
     create_bdii_config_files
 
     #Initialize the database directory
-    create_directory $bdii_var_dir/db/stats "BDII_VAR_DIR/db/stats"
+    create_directory $bdii_run_dir/db "BDII_RUN_DIR/db"
+    chown -R $bdii_user:$bdii_user $bdii_run_dir
+    [ -x /sbin/restorecon ] && /sbin/restorecon -R $bdii_run_dir/db
     create_directory $bdii_var_dir/db/arc "BDII_VAR_DIR/db/arc"
     create_directory $bdii_var_dir/db/glue2 "BDII_VAR_DIR/db/glue2"
+    create_directory $bdii_var_dir/db/stats "BDII_VAR_DIR/db/stats"
+    chown -R $bdii_user:$bdii_user $bdii_var_dir/db
+    [ -x /sbin/restorecon ] && /sbin/restorecon -R $bdii_var_dir/db
     create_directory $bdii_var_dir/archive "BDII_VAR_DIR/archive"
     chown -R $bdii_user:$bdii_user $bdii_var_dir
-    [ -x /sbin/restorecon ] && /sbin/restorecon -R $bdii_var_dir
     chown -R $bdii_user:$bdii_user $bdii_tmp_dir
     if [ ! -f $bdii_log_file ]; then
 	touch $bdii_log_file
     fi
     chown $bdii_user:$bdii_user $bdii_log_file
-    $RUNUSER -s "$USERSHELL" -c "cp ${bdii_db_config} ${bdii_var_dir}/db/" $bdii_user
     $RUNUSER -s "$USERSHELL" -c "cp ${bdii_db_config} ${bdii_var_dir}/db/arc" $bdii_user
     $RUNUSER -s "$USERSHELL" -c "cp ${bdii_db_config} ${bdii_var_dir}/db/glue2" $bdii_user
+    $RUNUSER -s "$USERSHELL" -c "cp ${bdii_db_config} ${bdii_var_dir}/db/stats" $bdii_user
     #Need to remove / from mkpasswd, otherwise sed will break.
     pass=`/usr/bin/mkpasswd -s 0 2> /dev/null` || pass=$RANDOM$RANDOM
     pass=${pass//\//x}
 
-    (umask 077; >> $bdii_slapd_conf)
-
     if [ ! -f ${bdii_slapd_conf} ]; then
 	log_failure_msg "Can not find slapd file: ${bdii_slapd_conf}"
 	exit 1
     fi
 
     sed -i "s/secret/${pass}/g" $bdii_slapd_conf
+    [ -x /sbin/restorecon ] && /sbin/restorecon $bdii_slapd_conf
 
     # Finished with the config file generation.
     # Time to start the whole infosys
@@ -1290,9 +1265,12 @@
 
     touch ${slapd_lock_file}
 
-    if [ ! -f "${slapd_pid_file}" ]; then
-	sleep 2
-    fi
+    iterlimit=30
+    while [ $iterlimit -ge 0 ] && ! [ -f ${slapd_pid_file} ]; do
+    echo -n "*"
+        sleep 1
+        iterlimit=$(expr $iterlimit - 1)
+    done
 
     if [ -f "${slapd_pid_file}" ]; then
 	ps $(cat ${slapd_pid_file}) >/dev/null 2>&1
@@ -1317,13 +1295,10 @@
     $RUNUSER -s "$USERSHELL" -c "${bdii_update_cmd} -c ${BDII_CONF} -d" ${bdii_user}
     touch ${update_lock_file}
 
-    if [ ! -f ${bdii_var_dir}/bdii-update.pid ]; then
+    if [ ! -f ${update_pid_file} ]; then
 	sleep 2
     fi
-    if [ -f ${bdii_var_dir}/bdii-update.pid ]; then
-	touch ${update_pid_file}
-	chown ${bdii_user} ${update_pid_file}
-	mv ${bdii_var_dir}/bdii-update.pid ${update_pid_file}
+    if [ -f ${update_pid_file} ]; then
 	ps $(cat ${update_pid_file}) >/dev/null 2>&1
 	RETVAL=$?
     else
diff -ur nordugrid-arc-1.0.1.orig/src/services/ldap-infosys/grid-infosys.in nordugrid-arc-1.0.1/src/services/ldap-infosys/grid-infosys.in
--- nordugrid-arc-1.0.1.orig/src/services/ldap-infosys/grid-infosys.in	2011-07-23 09:31:23.627415796 +0200
+++ nordugrid-arc-1.0.1/src/services/ldap-infosys/grid-infosys.in	2011-08-27 12:00:51.420855684 +0200
@@ -69,13 +69,19 @@
 	status
 	;;
     condrestart | try-restart)
-	if [ -f /usr/sbin/bdii5-update ]; then
+	if [ -f /usr/sbin/bdii-update ]; then
 	    if [ -f ${slapd_lock_file} ] || [ -f ${update_lock_file} ]; then
-		restart
+		stop
+		# avoid race
+		sleep 3
+		start
 	    fi
 	else
 	    if [ -f "$PID_FILE" ] ; then
-		restart
+		stop
+		# avoid race
+		sleep 3
+		start
 	    fi
 	fi
 	;;