---
# Copyright 2017-present Open Networking Foundation
#
# Licensed 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.

# cord-profile/defaults/main.yml

# where the cord_profile directory is on the config node
config_cord_profile_dir: "/opt/cord_profile"

pki_dir: "{{ playbook_dir }}/pki"
ssh_pki_dir: "{{ playbook_dir }}/ssh_pki"
credentials_dir: "{{ playbook_dir }}/credentials"

# where cord files are copied to on head node
head_cord_dir: "/opt/cord"
head_cord_profile_dir: "/opt/cord_profile"
head_credentials_dir: "/opt/credentials"

# For storing OpenStack images
image_dir: /opt/images


# Set to True if you want to copy the admin-openrc.sh openstack config file
use_openstack: True

# Will be overridden if doing a full pod build
use_maas: False

# set to True to create the xos_redis container in the bootstrap context
use_redis: True

use_vtn: True

# Docker related settings
pull_docker_registry: ""
pull_docker_tag: "candidate"

xos_docker_networks:
  - "xos"

xos_bootstrap_ui_port: 9001
xos_ui_port: 9000
xos_chameleon_port: 9101

xos_users: []

# name of master ssh key for this pod
pod_sshkey_name: "headnode"

xos_services: []

xos_gui_service_graph_constraints: []

xos_tosca_config_templates: []

xos_other_templates: []

# XOS Config (xos_config.yaml)
xos_db_name: xos
xos_db_username: postgres
xos_db_password: password
xos_dir: /opt/xos

# GUI Config [new GUI], used in app.config.js.j2 and style.config.js.j2

enabled_gui_extensions: []

gw_port: 3000
gui_api_endpoint: "/xosapi/v1"
gui_websocket: "/"
gui_project_name: "R-CORD"
gui_favicon: "cord-favicon.png"
gui_background: "cord-bg.jpg"
gui_payoff: "Your VNF orchestrator"
gui_logo: "cord-logo.png"
gui_routes:
  - label: "Slices"
    state: "xos.core.slice"
  - label: "Nodes"
    state: "xos.core.node"
  - label: "Instances"
    state: "xos.core.instance"

# used in admin-openrc.sh.j2
keystone_admin_password: "{{ lookup('password', credentials_dir ~ '/cord_keystone_admin chars=ascii_letters,digits') }}"

# used in deployment.yaml.j2
xos_admin_user: "xosadmin@opencord.org"
xos_admin_pass: "{{ lookup('password', credentials_dir ~ '/xosadmin@opencord.org chars=ascii_letters,digits') }}"
head_xos_admin_pass: "{{ lookup('file', head_credentials_dir ~ '/' ~ xos_admin_user) }}"
xos_admin_first: XOS
xos_admin_last: Admin

site_name: placeholder-sitename
site_humanname: "Placeholder Site HumanName"
site_suffix: "{{ site_name }}.test"

deployment_type: placeholder-deploymenttype

deployment_flavors:
  - m1.small
  - m1.medium
  - m1.large
  - m1.xlarge

# used in management-net.yaml.j2
management_network_cidr: 172.27.0.0/24

use_management_hosts: False
management_hosts_net_cidr: 10.1.0.1/24
management_hosts_net_range_xos_low: "10.1.0.128"
management_hosts_net_range_xos_high: "10.1.0.254"

# used in fabric.yaml.j2
use_fabric: False
fabric_network_cfg_json: "/opt/cord_profile/fabric-network-cfg.json"

# base URL of maven repo where ONOS apps are retrieved
onos_mavenrepo_url: "{{ 'http://mavenrepo.' ~ site_suffix ~ ':8080' }}"

# Need to track each ONOS application's version separately
cord_config_app_version: "1.4.0-SNAPSHOT"
cord_vtn_app_version: "1.4.0-SNAPSHOT"

# used in carrierethernet-*.yaml.j2
carrierethernet_domainid_prefix: "{{ site_name }}"

# used in platform-install / roles/cord-profile/templates/docker-compose.yml.j2
use_elasticstack: False
