#
#
# 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.
#

---
#airavata_django_git_branch: "simccs"
vhost_servername: "dev.rnamake.scigap.org"
vhost_ssl: true
# sudo certbot --apache certonly -d django.simccs.scigap.org
ssl_certificate_file: "/etc/letsencrypt/live/dev.rnamake.scigap.org/cert.pem"
ssl_certificate_chain_file: "/etc/letsencrypt/live/dev.rnamake.scigap.org/fullchain.pem"
ssl_certificate_key_file: "/etc/letsencrypt/live/dev.rnamake.scigap.org/privkey.pem"

## Keycloak related variables
tenant_domain: "rnamake"
oauth_client_key: "{{ vault_oauth_client_key }}"
oauth_client_secret: "{{ vault_oauth_client_secret }}"

auth_options:
  password:
    name: "RNAMake"
  external:
    - name: "Existing Institute Login"
      idp_alias: "cilogon"

gateway_id: "rnamake"
experiment_data_dir: "{{ user_data_dir }}/django-rnamake"
# gateway_data_store_ssh_public_key: "TODO"

portal_email_host: "smtp.gmail.com"
portal_email_port: 587
portal_email_tls: true
portal_email_username: "pga.airavata@gmail.com"
portal_email_password: "{{ vault_portal_email_password }}"
portal_server_email: "{{ portal_email_username }}"
admin_emails: "[('SGRC', 'sgrc-iu-group@iu.edu')]"
portal_title: "Dev RNAMake Gateway"
...
