#
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

---

# NOTE: simccs is deployed on scigap11
gateway_data_store_hostname: "scigap11.sciencegateways.iu.edu"
gateway_data_store_resource_id: "scigap11.sciencegateways.iu.edu_96b8dcec-ac84-438a-9927-91baaf87758b"

django_tus_endpoint: "https://tus.simccs.scigap.org/files/"
simccs_maptool_branch: "master"
airavata_django_extra_dependencies:
  # Need to separately install cython in the VM or do two deploys, one with
  # just cython, then a second with the other dependencies. Reason: pyjnius
  # requires that cython already be installed and they can't both be installed
  # at the same time.
  - cython
  - "git+https://github.com/SciGaP/simccs-maptool.git@{{ simccs_maptool_branch }}#egg=simccs-maptool"
  - pyjnius

django_extra_settings:
  JAVA_HOME: "/usr/java/default"
  MAPTOOL_SETTINGS:
    CPLEX_APPLICATION_ID: "cplex-solver_99721933-c9e4-4285-9ef1-d035ca82b541"
    DATASETS_DIR: "/data/gateway-user-data/simccs-datasets"
    JAVA_OPTIONS: "-Xmx16g"
  LOGIN_REDIRECT_URL: "simccs_maptool:home"

vhost_servername: "simccs.org"
vhost_ssl: true
# Some of the maptool views call into Java code and can take 2-3 minutes to execute
vhost_timeout: 600
ssl_certificate_file: "/etc/letsencrypt/live/simccs.org/cert.pem"
ssl_certificate_chain_file: "/etc/letsencrypt/live/simccs.org/fullchain.pem"
ssl_certificate_key_file: "/etc/letsencrypt/live/simccs.org/privkey.pem"
# Custom vhost config file to specify the geoserver reverse proxy
django_ssl_vhost_template: "{{ inventory_dir }}/host_vars/simccs/files/django-ssl-vhost.conf.j2"

## Keycloak related variables
tenant_domain: "iu-geology-survey"
oauth_client_key: "{{ vault_oauth_client_key }}"
oauth_client_secret: "{{ vault_oauth_client_secret }}"

auth_options:
  password:
    name: "SimCCS"
  external:
    - name: "existing institution credentials"
      idp_alias: "cilogon"
      logo: "images/cilogon-logo-24x24-b.png"

gateway_id: "iu-geology-survey"
experiment_data_dir: "{{ user_data_dir }}/iu-geology-survey"
gateway_data_store_ssh_public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEuA1indjdczBXg2qrmD0bB0QfKq0u2q3o25DegTaty5LoogW+APEvXmwc2g6PzkM75MgfMsTErMQaQ3/PoElADQKg2/NePz05YWobn9zrPZFeRWfOqWMjFDx72cffHKBzgnahFDBlR/YJhf4IZJ+EOA1zMiMF2oZQmEYQtbQFhbKPF+jrScEQeuXVuXWSS2sKNAVKj3pY4kmi9kEOYELee/O6ghBUfrVhB95vDKJPgmQSuo3pgkLRdflTBSAQ54UchwjXi2RA9Xv0RXJF/JyyRGn6bSbRxYhsm5RJeiBVj4ua7p2b36rSYVqtVsTKEonx5kYdKzwyjJXWpjB2KtQp"

admin_emails: "[('SGRC', 'sgrc-iu-group@iu.edu'), ('Kevin Ellett', 'kmellett@indiana.edu'),('Ryan Kammer', 'rkammer@indiana.edu'), ('Eroma Abeysinghe', 'eabeysin@iu.edu')]"
portal_title: "SimCCS Portal"

django_google_analytics_tracking_id: "UA-130065143-1"
...
