
# 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_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.4.0-SNAPSHOT"
cord_vtn_app_version: "1.4.0-SNAPSHOT"
