Skip to content
This repository was archived by the owner on Oct 29, 2025. It is now read-only.

QCDIS/VREPaaS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

887 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Important

NaaVRE has been rewritten and migrated to the NaaVRE organization. This repository is an archive of the legacy implementation.

Quick links to the new NaaVRE:

VREPaaS

Development environment

This project is using Django rest framework for the API, and Next.js for the frontend.

Install Anaconda

Install Anaconda from these instructions: https://linuxize.com/post/how-to-install-anaconda-on-ubuntu-20-04/

Close the terminal and start a new one to activate conda.

Dependencies

Create and activate conda environment:

conda env update --file environment.yaml

Install GitGuardian pre-commit hook

pre-commit install
ggshield auth login

Install tilt

Install tilt via conda

conda install -c conda-forge tilt

Install minikube

conda install -c conda-forge minikube

Follow step 3 section 'Linux OS with Network Manager' of the minikube ingress-dns setup guide.

Add secrets

Create tilt/helm-values-secrets.yaml and fill-in the following:

global:
  keycloak:
    url:
    realm:
    client_id:
    client_secret_key:

  argo:
    namespace:
    url:
    token:

Create tilt/helm-n-a-a-vre-secrets.yaml and fill:

hub:
  config:
    GenericOAuthenticator:
      client_id:
      client_secret:
      authorize_url:
      token_url:
      userdata_url:

singleuser:
  extraEnv:
    NAAVRE_API_TOKEN:
    SEARCH_API_ENDPOINT:
    SEARCH_API_TOKEN:
    CELL_GITHUB_TOKEN:

Start Cluster

minikube start
minikube addons enable ingress
minikube addons enable ingress-dns
minikube dashboard  # optional

Run tilt

tilt up

Troubleshooting

Context deadline exceeded when pulling NaaVRE image

If you get Failed to pull image "qcdis/n-a-a-vre-laserfarm:v2.0-beta": rpc error: code = Unknown desc = context deadline exceeded in the continuous-image-puller logs:

  • Reset the cluster (minikube delete and re-run the startup commands)
  • Run minikube image load qcdis/n-a-a-vre-laserfarm:v2.0-beta in your terminal
  • Run tilt

API Admin

To add/remove resources go to: https://paas.minikube.test/vre-api-test/admin/

Admin Credentials

The admin credentials are read from Helm values (e.g. tilt/helm-values-dev.yaml), with the key vreapi.auth.superuser_{username,password}.

Argo Workflows

Generate Token

kubectl apply -f - <<EOF
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: vre-api
  namespace: argo
rules:
  - verbs:
      - get
      - watch
      - patch
      - delete
    apiGroups:
      - ''
    resources:
      - pods
  - verbs:
      - get
      - watch
      - patch
    apiGroups:
      - ''
    resources:
      - pods/log
  - verbs:
      - create
    apiGroups:
      - ''
    resources:
      - pods/exec
  - verbs:
      - list
      - watch
      - create
      - get
      - update
      - delete
    apiGroups:
      - argoproj.io
    resources:
      - workflowtasksets
      - workflowartifactgctasks
      - workflowtemplates
      - workflows
      - cronworkflows
  - verbs:
      - patch
    apiGroups:
      - argoproj.io
    resources:
      - workflowtasksets/status
      - workflowartifactgctasks/status
      - workflows/status
EOF
kubectl create sa vre-api -n argo
kubectl create rolebinding vre-api --role=vre-api --serviceaccount=argo:vre-api -n argo
kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  namespace: argo
  name: vre-api.service-account-token
  annotations:
    kubernetes.io/service-account.name: vre-api
type: kubernetes.io/service-account-token
EOF
ARGO_TOKEN="Bearer $(kubectl get secret vre-api.service-account-token -n argo -o=jsonpath='{.data.token}' | base64 --decode)"
echo -n $ARGO_TOKEN | base64 -w 0

Authorization

Token

  1. Create a user in the Django admin panel
  2. Create a token for the user in the Django admin panel
  3. Use the token in the header of the request
resp = requests.get(
    f"{api_endpoint}/api/workflows/",
    headers={
        'Authorization': 'Token '+ naavre_api_token
    }
)

Test Submit Workflow

curl -X POST "http://paas.minikube.test/vre-api-test/api/workflows/submit/" -H "Authorization: Token ${accessToken}" -H "Content-Type: application/json" -d "@vreapis/tests/resources/workflows/submit_workflow_req_body.json"

Releases

If we want to add a new release environment we need to add a new .env.{ENV_NAME} together with a new line in the matrix on the .workflows/make.yaml and .workflows/make-release.yaml

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5