apiVersion: batch.volcano.sh/v1alpha1
kind: Job
metadata:
  name: openfam-server
  namespace: openfam
spec:
  minAvailable: 1
  schedulerName: volcano
  plugins:
    ssh: []
    svc: []
  tasks:
    - replicas: 1
      name: launcher
      template:
        spec:
          terminationGracePeriodSeconds: 5
          containers:
            - name: openfam-launcher
              image: harbor.pt.horizon-opencube.eu/openfam-public/openfam-server:latest
              imagePullPolicy: Always
              command:
                - /bin/sh
                - -c
                - |
                  mkdir -p /var/run/sshd; ssh-keygen -A &&
                  /usr/sbin/sshd &&
                  sleep 5 &&
                  sh /usr/local/bin/setup-openfam.sh > output.txt &&
                  cat output.txt &&
                  /usr/local/bin/openfam_adm --start_service --install_path=/usr/local &&
                  sleep infinity
              env:
                - name: FI_PROVIDER
                  value: cxi
                - name: CXIP_SKIP_AMA_CHECK
                  value: "true"
                - name:  OPENFAM_ROOT
                  value: "/usr/local/"
              ports:
                - containerPort: 22
                  name: ssh-port
                - containerPort: 8080
                  name: cis-port
                - containerPort: 8788
                  name: meta-port
                - containerPort: 8793
                  name: mem-port
                - containerPort: 7500
                  name: libfabric-port
              resources:
                requests:
                  smarter-devices/cxi0: "1"
                limits:
                  smarter-devices/cxi0: "1"
          restartPolicy: OnFailure
    - replicas: 1
      name: openfam-cis
      template:
        metadata:
          labels:
            app: openfam-cis
        spec:
          terminationGracePeriodSeconds: 5
          containers:
            - command:
                - /bin/sh
                - -c
                - |
                  mkdir -p /var/run/sshd; 
                  ssh-keygen -A; 
                  echo "Starting sshd";
                  /usr/sbin/sshd -e -D
              env:
                - name: FI_PROVIDER
                  value: cxi
                - name: CXIP_SKIP_AMA_CHECK
                  value: "true"
                - name: OPENFAM_ROOT
                  value: "/usr/local/"
              image:  harbor.pt.horizon-opencube.eu/openfam-public/openfam-server:latest
              imagePullPolicy: Always
              name: openfam-cis
              resources:
                requests:
                  smarter-devices/cxi0: "1"
                limits:
                  smarter-devices/cxi0: "1"
              ports:
                - containerPort: 22
                  name: ssh-port
                - containerPort: 8080
                  name: cis-port
                - containerPort: 8788
                  name: meta-port
                - containerPort: 8793
                  name: mem-port
                - containerPort: 7500
                  name: libfabric-port
              workingDir: /home
          restartPolicy: OnFailure
    - replicas: 1
      name: openfam-meta
      template:
        metadata:
          labels:
            app: openfam-meta
        spec:
          terminationGracePeriodSeconds: 5
          volumes:
            - name: dshm
              emptyDir:
                sizeLimit: 16Gi
                medium: Memory
          containers:
            - command:
                - /bin/sh
                - -c
                - |
                  mkdir -p /var/run/sshd; 
                  ssh-keygen -A; 
                  echo "Starting sshd";
                  /usr/sbin/sshd -e -D
              env:
                - name: FI_PROVIDER
                  value: cxi
                - name: CXIP_SKIP_AMA_CHECK
                  value: "true"
                - name: OPENFAM_ROOT
                  value: "/usr/local/"
              image:  harbor.pt.horizon-opencube.eu/openfam-public/openfam-server:latest
              imagePullPolicy: Always
              name: openfam-meta
              resources:
                requests:
                  smarter-devices/cxi0: "1"
                limits:
                  smarter-devices/cxi0: "1"
              volumeMounts:
                - name: dshm
                  mountPath: /dev/shm
              ports:
                - containerPort: 22
                  name: ssh-port
                - containerPort: 8080
                  name: cis-port
                - containerPort: 8788
                  name: meta-port
                - containerPort: 8793
                  name: mem-port
                - containerPort: 7500
                  name: libfabric-port
              workingDir: /home
          restartPolicy: OnFailure
    - replicas: 2
      name: openfam-mem
      template:
        metadata:
          labels:
            app: openfam-mem
        spec:
          terminationGracePeriodSeconds: 5
          topologySpreadConstraints:
            - maxSkew: 1
              topologyKey: kubernetes.io/hostname
              whenUnsatisfiable: DoNotSchedule
              matchLabelKeys:
                - pod-template-hash
              labelSelector:
                matchLabels:
                  app: openfam-mem
          volumes:
            - name: dshm
              emptyDir:
                sizeLimit: 128Gi
                medium: Memory
          containers:
            - command:
                - /bin/sh
                - -c
                - |
                  mkdir -p /var/run/sshd; 
                  ssh-keygen -A; 
                  echo "Starting sshd";
                  /usr/sbin/sshd -e -D
              env:
                - name: FI_PROVIDER
                  value: cxi
                - name: CXIP_SKIP_AMA_CHECK
                  value: "true"
                - name: OPENFAM_ROOT
                  value: "/usr/local/"
              image:  harbor.pt.horizon-opencube.eu/openfam-public/openfam-server:latest
              imagePullPolicy: Always
              name: openfam-mem
              resources:
                requests:
                  smarter-devices/cxi0: "1"
                limits:
                  smarter-devices/cxi0: "1"
              volumeMounts:
                - name: dshm
                  mountPath: /dev/shm
              ports:
                - containerPort: 22
                  name: ssh-port
                - containerPort: 8080
                  name: cis-port
                - containerPort: 8788
                  name: meta-port
                - containerPort: 8793
                  name: mem-port
                - containerPort: 7500
                  name: libfabric-port
              workingDir: /home
          restartPolicy: OnFailure