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

# used in xos.yaml.j2, if True, other synchronizer container will not be started
frontend_only: False

# 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_new_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') }}"
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
