---
# 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 Scenario
# for both Physical (using a corddev VM) and Virtual (using multiple VMs)

# cord profile config
frontend_only: False

# create a cord_profile dir next to the cord checkout
config_cord_dir: "{{ ( playbook_dir ~ '/../..' ) | realpath }}"
config_cord_profile_dir: "{{ ( playbook_dir ~ '/../../../cord_profile' ) | realpath }}"

build_cord_dir: "/opt/cord"
build_cord_profile_dir: "/opt/cord_profile"
host_cord_profile_dir: "~/cord_profile"

buildnode: corddev
headnode: head1

# docker config
deploy_docker_registry: "docker-registry:5000"
deploy_docker_tag: "candidate"
pull_docker_registry: "docker-registry:5000/"
pull_docker_tag: "candidate"
docker_opts: "--insecure-registry {{ deploy_docker_registry }}"

# Variables required by MAAS
fabric_ip: '10.6.1.1/24'
management_ip: '10.1.0.1/24'
management_network: '10.1.0.0/24'

# make build config
build_targets:
 - setup-automation

config_ssh_key_prereqs:
  - vagrant-ssh-install

copy_cord_prereqs:
  - vagrant-ssh-install

cord_config_prereqs:
  - vagrant-ssh-install
  - copy-cord

prep_headnode_prereqs:
  - copy-cord
  - copy-config

publish_docker_images_prereqs:
  - deploy-maas

# Start elasticstack before XOS/ONOS, which log to it
start_xos_prereqs:
  - deploy-maas
  - publish-docker-images

deploy_openstack_prereqs:
  - deploy-maas

deploy_mavenrepo_prereqs:
  - publish-docker-images

testing_prereqs:
  - collect-diag-maas
  - setup-automation

setup_automation_prereqs:
  - deploy-openstack

# Vagrant VM configuration
vagrant_box: "ubuntu/trusty64"

vagrant_vms:
  - corddev
  - head1

dev_vm_mem: 2048
dev_vm_cpu: 1

head_vm_mem: 16384
head_vm_cpu: 8

compute_vm_mem: 16384
compute_vm_cpu: 8

switch_vm_mem: 512
switch_vm_cpu: 1

vm_management_network_name: cordmgmt

# Enable experimental fabric
enable_fabric: False

# Apt cache depends on DNS provided by MAAS
# MAAS isn't installed when prep-headnode runs
use_apt_cache: False

# Always pull XOS images if start-xos target is re-run
always_pull_xos_images: True

# Used in platform-install / roles/cord-profile/templates/docker-compose.yml.j2
use_elasticstack: True

# Use the insecure MaaS-installed docker registry
use_secure_docker_registry: False

# images for imagebuilder to build/pull (tagged elsewhere)
docker_image_whitelist:
  - "xosproject/xos-base"
  - "xosproject/xos"
  - "xosproject/xos-client"
  - "xosproject/xos-corebuilder"
  - "xosproject/xos-gui"
  - "xosproject/xos-gui-builder"
  - "xosproject/xos-libraries"
  - "xosproject/xos-postgres"
  - "xosproject/xos-tosca"
  - "xosproject/xos-ws"
  - "xosproject/chameleon"
  - "xosproject/xos-synchronizer-base"
  - "nginx"
  - "onosproject/onos"
  - "opencord/mavenrepo"
  - "redis"
  - "node"
  - "sebp/elk"

# node topology
physical_node_list:
  - name: head1
    ipv4_last_octet: 1
    aliases:
      - head

# Inventory for ansible, used to generate inventory.ini
inventory_groups:

  config:
    localhost:
      ansible_connection: local

  build:
    corddev:

  head:
    head1:

  compute:

