#!/bin/bash

# ===========================================================================================================
# title         : create_job_widget_script.sh
# usage         : ./create_job_widget_script.sh $OC_JOB_ID $RUN_ENV_DOCKER_IMAGE $INSTALLATION_ROOT
#                 $SPACK_ENV $RELEASE_NAME $LAB_KERNEL_ROOT
# description   : creates job file that generates a script to load the jupyter extensions for a given env
# ===========================================================================================================

OC_JOB_ID=$1
RUN_ENV_DOCKER_IMAGE=$2
INSTALLATION_ROOT=$3
EBRAINS_SPACK_ENV=$4
RELEASE_NAME=$5
LAB_KERNEL_ROOT=$6

cat <<EOT >> widget-script.yml
apiVersion: batch/v1
kind: Job
metadata:
  name: widget-script${OC_JOB_ID}
spec:
  parallelism: 1
  completions: 1
  backoffLimit: 0
  template:
    spec:
      containers:
      - name: widget-script
        image: ${RUN_ENV_DOCKER_IMAGE}
        imagePullPolicy: Always
        resources:
          limits:
            cpu: '1'
            memory: '1Gi'
          requests:
            cpu: '0.5'
            memory: '500Mi'
        volumeMounts:
          - name: sharedbin
            mountPath: /srv
        command:
        - /bin/bash
        - -c
        - |
          . \$INSTALLATION_ROOT/spack/share/spack/setup-env.sh
          spack env activate --without-view \$EBRAINS_SPACK_ENV
          KERNEL_PATH=\$LAB_KERNEL_ROOT/\$(echo "\$RELEASE_NAME" | tr '[:upper:]' '[:lower:]')
          spack load --sh py-tvb-ext-bucket py-tvb-ext-unicore py-tvb-ext-xircuits > \$KERNEL_PATH/bin/widget_activation.sh
        env:
          - name: SYSTEMNAME
            value: ebrainslab
          - name: SPACK_DISABLE_LOCAL_CONFIG
            value: "true"
          - name: INSTALLATION_ROOT
            value: "$INSTALLATION_ROOT"
          - name: EBRAINS_SPACK_ENV
            value: "$EBRAINS_SPACK_ENV"
          - name: RELEASE_NAME
            value: "$RELEASE_NAME"
          - name: LAB_KERNEL_ROOT
            value: "$LAB_KERNEL_ROOT"
      volumes:
        - name: sharedbin
          persistentVolumeClaim:
            claimName: shared-binaries
      restartPolicy: Never
EOT