#!/usr/bin/ksh
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
# 61haes_r714 src/43haes/usr/sbin/cluster/apps/clas_nfsv4/start.sh 1.1 
#  
# Licensed Materials - Property of IBM 
#  
# COPYRIGHT International Business Machines Corp. 2007 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 

exit 0

logfile="/tmp/clas_nfsv4/$GROUPNAME.log"
. /usr/es/sbin/cluster/apps/clas_nfsv4/common

######################################
### Function Main
######################################

MOUNT_FILESYSTEM_V4=
for mount in $MOUNT_FILESYSTEM ; do
  for export_v4 in $EXPORT_FILESYSTEM_V4 ; do
    if "$mount == $export_v4" ; then
      MOUNT_FILESYSTEM_V4="$MOUNT_FILESYSTEM_V4 $mount"
    fi
  done
done

log "Running $0 $@"
log "Resource group:      $GROUPNAME"
log "NFSv4 Exports:       $EXPORT_FILESYSTEM_V4"
log "Stable Storage Path: ${STABLE_STORAGE_PATH:-(NONE)}"
log "Service Label(s):    $SERVICE_LABEL"
log "  Primary:           $(primary $SERVICE_LABEL)"
log "  Secondary:         $(secondary $SERVICE_LABEL)"
log "NFSv4 Mounts:        ${MOUNT_FILESYSTEM_V4:-(NONE)}"

run lssrc -g nfs
run exportfs
run mount

[ -n "$STABLE_STORAGE_PATH" ] && run chnfs -g on -x 1

for subsystem in nfsrgyd nfsd ; do
  if check_if_running $subsystem ; then
    log "$subsystem is already running"
  else
    run startsrc -s $subsystem || fatal

    while ! check_if_running $subsystem ; do
      sleep 2
    done

    log "$subsystem started successfully"
  fi
done

primary=

if [ -n "$STABLE_STORAGE_PATH" ] ; then
  if [ ! -d $STABLE_STORAGE_PATH ] ; then
    run mkdir -p $STABLE_STORAGE_PATH || fatal
  fi

  ######## BEGIN HACK
  ##  options=$(export_version $export_v4)
  ##
  ##  for export_v4 in $EXPORT_FILESYSTEM_V4 ; do
  ##    run export_filesystem $options $export_v4 || fatal
  ##  done
  ######## END HACK

  primary=$(primary $SERVICE_LABEL)
  run nfs4smctl -R -N $GROUPNAME -P $STABLE_STORAGE_PATH -s $primary || fatal

  for service_label in $(secondary $SERVICE_LABEL) ; do
    run nfs4smctl -A -N $GROUPNAME -n $service_label || fatal
  done
fi

run exportfs

for export_v4 in $EXPORT_FILESYSTEM_V4 ; do
   options=$(export_version $export_v4)
   ##[ -n "$primary" ] && options="$options,hasrv=$primary"

  run export_filesystem $options $export_v4 || fatal
done

run lssrc -g nfs
run exportfs

log "NFSv4 is now serving $GROUPNAME"

#for crossmount in $MOUNT_FILESYSTEMS_V4 ; do
#  log "TODO: nfs mount $crossmount"
#done

run mount

cl_activate_nfs 1 $(primary $SERVICE_LABEL) $MOUNT_FILESYSTEMS

log "$0 $@ completed successfully"
