CONDOR_CHIRP=`condor_config_val LIBEXEC`/condor_chirp
+get_job_attr_blocking() {
+ while /bin/true
+ do
+ JobServerAddress=`$CONDOR_CHIRP get_job_attr $1`
+ if [ $? -ne 0 ]; then
+ echo "Chirp is broken!" 1>&2
+ exit 1
+ fi
+ if [ "$JobServerAddress" != "UNDEFINED" ]; then
+ echo "$JobServerAddress"
+ exit 0
+ fi
+ sleep 2
+ done
+}
+
+HOSTNAME=`hostname`
+
+echo "I am $HOSTNAME, node $_CONDOR_PROCNO"
+
if [[ $_CONDOR_PROCNO = "0" ]]
then
+ echo "I'm the server"
- # I'm the server
-
- # Start netcat listening on an ephemeral port (0 means kernels picks port)
+ # Start netcat listening on an ephemeral port (0 means kernel picks port)
# It will wait for a connection, then write that data to output_file
nc -l 0 > output_file &
@@ -117,45 +136,39 @@
awk -F: '{print $2}' | awk '{print $1}'
`
- # grab the hostname
- HOSTNAME=`hostname`
+ echo "Listening on $HOSTNAME $NCPORT"
$CONDOR_CHIRP set_job_attr JobServerAddress \"${HOSTNAME}\ ${NCPORT}\"
# Do other server things here...
- sleep 3600
+ sleep 60
+ echo "Here's the output:"
+ cat output_file
exit 0
fi
if [[ $_CONDOR_PROCNO = "1" ]]
then
+ echo "I'm the client"
- # I'm the client
-
- sleep 20
- # Poll until the job attribute appears in the ad
-
- until $CONDOR_CHIRP get_job_attr JobServerAddress > /tmp/null 2>&1
- do
- sleep 2
- done
-
- JobServerAddress=`$CONDOR_CHIRP get_job_attr JobServerAddress`
+ JobServerAddress=`get_job_attr_blocking JobServerAddress`
+ if [ $? -ne 0 ]; then
+ echo "Chirp is broken"
+ exit 1
+ fi
+ echo "JobServerAddress: $JobServerAddress";
host=`echo $JobServerAddress | tr -d '"' | awk '{print $1}'`
port=`echo $JobServerAddress | tr -d '"' | awk '{print $2}'`
- # Send the /etc/hosts file to the other side
+ echo "Sending to $host $port"
nc $host $port < /etc/hosts
+ echo "Sent $?"
# Don't do any other client stuff, just exit
exit 0
fi
exit 0
-
-
-
-
{endcode}