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

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

xos_services: []

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"

# Need to track each application's version separately
cord_config_app_version: "1.3.0"
cord_vtn_app_version: "1.3.0"

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

