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

---
vhost_servername: "rnamake.js2.scigap.org"
vhost_ssl: true
ssl_certificate_file: "/etc/letsencrypt/live/{{ vhost_servername }}/cert.pem"
ssl_certificate_chain_file: "/etc/letsencrypt/live/{{ vhost_servername }}/fullchain.pem"
ssl_certificate_key_file: "/etc/letsencrypt/live/{{ vhost_servername }}/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"
django_user_data_archive_max_age_days: "{{ 2 * 365 }}"

admin_emails: "[('SGRC', 'sgrc-iu-group@iu.edu')]"
portal_title: "Dev RNAMake Gateway"
...
