+if [[ "$nodes" != "" ]]; then
+ ## at this point nodes should be an array containing
+ ## manage.qr1hi, keep.qr1hi, etc
+ ## that should be defined in the .ssh/config file
+ title "Updating in parallel:$nodes"
+ export -f update_node
+ export -f run_puppet
+ export -f run_apt
+ export -f title
+ export SSH_PORT
+ export PUPPET_AGENT
+ export APT_AGENT
+ export UNMANAGED
+ echo $nodes|xargs -d " " -n 1 -P $PUPPET_CONCURRENCY -I {} bash -c "update_node {}"
+fi
+
+if [[ "$NODE" == "" ]]; then
+ title "Locating Arvados Standard Docker images project"
+
+ JSON_FILTER="[[\"name\", \"=\", \"Arvados Standard Docker Images\"], [\"owner_uuid\", \"=\", \"$IDENTIFIER-tpzed-000000000000000\"]]"
+ DOCKER_IMAGES_PROJECT=`ARVADOS_API_HOST=$ARVADOS_API_HOST ARVADOS_API_TOKEN=$ARVADOS_API_TOKEN arv --format=uuid group list --filters="$JSON_FILTER"`
+
+ if [[ "$DOCKER_IMAGES_PROJECT" == "" ]]; then
+ title "Warning: Arvados Standard Docker Images project not found. Creating it."
+
+ DOCKER_IMAGES_PROJECT=`ARVADOS_API_HOST=$ARVADOS_API_HOST ARVADOS_API_TOKEN=$ARVADOS_API_TOKEN arv --format=uuid group create --group "{\"owner_uuid\":\"$IDENTIFIER-tpzed-000000000000000\", \"name\":\"Arvados Standard Docker Images\", \"group_class\":\"project\"}"`
+ ARVADOS_API_HOST=$ARVADOS_API_HOST ARVADOS_API_TOKEN=$ARVADOS_API_TOKEN arv link create --link "{\"tail_uuid\":\"$IDENTIFIER-j7d0g-fffffffffffffff\", \"head_uuid\":\"$DOCKER_IMAGES_PROJECT\", \"link_class\":\"permission\", \"name\":\"can_read\" }"
+ if [[ "$?" != "0" ]]; then
+ title "ERROR: could not create standard Docker images project Please create it, cf. http://doc.arvados.org/install/create-standard-objects.html"
+ exit 1
+ fi
+ fi
+
+ title "Found Arvados Standard Docker Images project with uuid $DOCKER_IMAGES_PROJECT"
+
+ if [[ "$SHELL_NODE_FOR_ARV_KEEPDOCKER" == "" ]]; then
+ VERSION=`ssh -t -p$SSH_PORT -o "StrictHostKeyChecking no" -o "ConnectTimeout 125" -o "LogLevel QUIET" $IDENTIFIER apt-cache policy python3-arvados-cwl-runner|grep Candidate`
+ VERSION=`echo $VERSION|cut -f2 -d' '|cut -f1 -d-`
+
+ if [[ "$?" != "0" ]] || [[ "$VERSION" == "" ]]; then
+ title "ERROR: unable to get python3-arvados-cwl-runner version"
+ exit 1
+ else
+ title "Found version for python3-arvados-cwl-runner: $VERSION"
+ fi
+
+ set +e
+ CLEAN_VERSION=`echo $VERSION | sed s/~dev/.dev/g | sed s/~rc/rc/g`
+ ARVADOS_API_HOST=$ARVADOS_API_HOST ARVADOS_API_TOKEN=$ARVADOS_API_TOKEN arv-keepdocker |grep -qP "arvados/jobs +$CLEAN_VERSION "
+ if [[ $? -eq 0 ]]; then
+ set -e
+ title "Found arvados/jobs Docker image version $CLEAN_VERSION, nothing to upload"
+ else
+ set -e
+ title "Installing arvados/jobs Docker image version $CLEAN_VERSION"
+ ARVADOS_API_HOST=$ARVADOS_API_HOST ARVADOS_API_TOKEN=$ARVADOS_API_TOKEN arv-keepdocker --pull --project-uuid=$DOCKER_IMAGES_PROJECT arvados/jobs $CLEAN_VERSION
+ if [[ $? -ne 0 ]]; then
+ title "'arv-keepdocker' failed..."
+ exit 1
+ fi
+ fi
+ else
+ VERSION=`ssh -t -p$SSH_PORT -o "StrictHostKeyChecking no" -o "ConnectTimeout 125" -o "LogLevel QUIET" $SHELL_NODE_FOR_ARV_KEEPDOCKER apt-cache policy python3-arvados-cwl-runner|grep Candidate`
+ VERSION=`echo $VERSION|cut -f2 -d' '|cut -f1 -d-`
+
+ if [[ "$?" != "0" ]] || [[ "$VERSION" == "" ]]; then
+ title "ERROR: unable to get python3-arvados-cwl-runner version"
+ exit 1
+ else
+ title "Found version for python3-arvados-cwl-runner: $VERSION"
+ fi
+
+ set +e
+ CLEAN_VERSION=`echo $VERSION | sed s/~dev/.dev/g | sed s/~rc/rc/g`
+ ssh -t -p$SSH_PORT -o "StrictHostKeyChecking no" -o "ConnectTimeout 125" -o "LogLevel QUIET" $SHELL_NODE_FOR_ARV_KEEPDOCKER "ARVADOS_API_HOST=$ARVADOS_API_HOST ARVADOS_API_TOKEN=$ARVADOS_API_TOKEN arv-keepdocker" |grep -qP "arvados/jobs +$CLEAN_VERSION "
+ if [[ $? -eq 0 ]]; then
+ set -e
+ title "Found arvados/jobs Docker image version $CLEAN_VERSION, nothing to upload"
+ else
+ set -e
+ title "Installing arvados/jobs Docker image version $CLEAN_VERSION"
+ ssh -t -p$SSH_PORT -o "StrictHostKeyChecking no" -o "ConnectTimeout 125" -o "LogLevel QUIET" $SHELL_NODE_FOR_ARV_KEEPDOCKER "ARVADOS_API_HOST=$ARVADOS_API_HOST ARVADOS_API_TOKEN=$ARVADOS_API_TOKEN arv-keepdocker --pull --project-uuid=$DOCKER_IMAGES_PROJECT arvados/jobs $CLEAN_VERSION"
+ if [[ $? -ne 0 ]]; then
+ title "'arv-keepdocker' failed..."
+ exit 1
+ fi
+ fi
+ fi
+fi