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

## NETWORK CONFIG ##
# used in *-services.yaml.j2
vtn_net_public_cidr: "10.6.1.0/24"
vtn_net_public_hwaddr_prefix: "0242"

# used in management-net.yaml.j2
management_net_cidr: "10.1.0.0/24"

vtn_net_management_local_cidr: "172.27.0.0/24"

use_vtn_net_management_host: False
vtn_net_management_host_cidr: "{{ management_net_cidr }}"
vtn_net_management_host_range_xos_low: "{{ management_net_cidr | ipaddr('129') | ipaddr('address') }}"
vtn_net_management_host_range_xos_high: "{{ management_net_cidr | ipaddr('254') | ipaddr('address') }}"

# VSG and public address pools
use_addresspool_vsg: False
addresspool_vsg_cidr: "10.7.1.0/24"
addresspool_vsg_hwaddr_prefix: "0ACA"

use_addresspool_public: False
addresspool_public_cidr: "10.8.1.0/24"
addresspool_public_hwaddr_prefix: "0EFE"

## LEGACY - remove when profiles have been updated to use new vars (see above)
# used in management-net.yaml.j2
management_network_cidr: "{{ vtn_net_management_local_cidr }}"

use_management_hosts: "{{ use_vtn_net_management_host }}"
management_hosts_net_cidr: "{{ vtn_net_management_host_cidr }}"
management_hosts_net_range_xos_low: "{{ vtn_net_management_host_range_xos_low }}"
management_hosts_net_range_xos_high: "{{ vtn_net_management_host_range_xos_high }}"

# 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.3.1"
cord_vtn_app_version: "1.5.0"

# 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
