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

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 }}"

