---
# 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.

# opencloud Scenario
# For a virtual install, physical does not use VMs

# opencloud 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

buildnode: head1
headnode: head1

# Make build config
build_targets:
  - onos-debug
  - onboard-openstack

vagrant_up_prereqs:
  - prereqs-check

# Copy cord and config to physical/virtual nodes
cord_config_prereqs:
  - vagrant-ssh-install
  - copy-cord

prep_buildnode_prereqs:
  - copy-cord
  - copy-config

# Run build prep before head prep, when build == head
prep_headnode_prereqs:
  - prep-buildnode

# Wait until headnode prepped before building containers, for consistent DNS
docker_images_prereqs:
  - prep-headnode

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

deploy_onos_prereqs:
  - deploy-elasticstack

# node topology, used to bring up management interfaces
physical_node_list:
  - name: head1
    ipv4_last_octet: 1
    aliases:
      - head
  - name: compute1
    ipv4_last_octet: 250
  - name: compute2
    ipv4_last_octet: 251

# Vagrant VM configuration
vagrant_vms:
  - head1
  - compute1
  - compute2

head_vm_mem: 16384
head_vm_cpu: 8

compute_vm_mem: 16384
compute_vm_cpu: 8

vm_management_network_name: cordmgmt
vm_public_network_name: cordpub
vm_public_network_cidr: "10.230.100.0/24"

# 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/gui-extension-rcord"
  - "xosproject/gui-extension-sample"
  - "xosproject/gui-extension-vtr"
  - "xosproject/xos-synchronizer-base"
  - "xosproject/addressmanager-synchronizer"
  - "xosproject/exampleservice-synchronizer"
  - "xosproject/onos-synchronizer"
  - "xosproject/openstack-synchronizer"
  - "xosproject/vrouter-synchronizer"
  - "xosproject/vtn-synchronizer"
  - "gliderlabs/consul-server"
  - "gliderlabs/registrator"
  - "nginx"
  - "onosproject/onos"
  - "redis"
  - "node"



# Ansible Inventory
inventory_groups:

  config:
    localhost:
      ansible_connection: local

  build:
    head1:

  head:
    head1:

  compute:
    compute1:
    compute2:

