---
# 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_new_tosca_config_templates: [] # Deprecated

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-service.yaml.j2
use_fabric: False
fabric_network_cfg_json: {}

# The following value is hardcoded and should be identical to here:
# https://github.com/opencord/maas/blob/master/config-generator/netconfig.tpl#L29
fabric_gateway_hwaddr: "a4:23:05:06:01:01"

# 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
