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

# POD config for ONF E-CORD POD, E-CORD local POD 2
cord_scenario: cord
cord_profile: ecord

# Variables
# shared between podconfigs, for root/intermediate CA setup
#pki_dir: "{{ ( playbook_dir ~ '/../../../onf_ecord_pki' ) | realpath }}"
pki_dir: "{{ ( playbook_dir ~ '/../../../onf_ecord_local_pod2_pki' ) | realpath }}"

# different, as passwords/SSH keys/cord_profile should be different
credentials_dir: "{{ ( playbook_dir ~ '/../../../onf_ecord_local_pod2_credentials' ) | realpath }}"
ssh_pki_dir: "{{ ( playbook_dir ~ '/../../../onf_ecord_local_pod2_ssh_pki' ) | realpath }}"
config_cord_profile_dir: "{{ ( playbook_dir ~ '/../../../onf_ecord_local_pod2_profile' ) | realpath }}"

# path created on local system, mounted into corddev by Vagrant
host_cord_profile_dir: "/var/jenkins_home/workspace/onf_ecord_local_pod2_profile"

fabric_ip: '10.6.1.1/24'
management_ip: '10.6.0.1/24'
external_ip: '10.90.1.50/16'
external_gw: '10.90.0.1'
external_iface: 'eth0'
management_network: 10.6.0.0/24

deploy_docker_registry: "10.90.1.50:5000"

vagrant_vms:
  - 'corddev'

build_targets:
  - 'setup-automation'

copy_cord_prereqs:
  - 'config-ssh-key'

skipTags:
  - 'set_compute_node_password'

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

# headnode to ssh to for some make tasks
headnode: cord@10.90.1.50

# Inventory for ansible, used to generate inventory.ini
inventory_groups:
  config:
    localhost:
      ansible_connection: local
  build:
    corddev:
  head:
    head1:
      ansible_host: 10.90.1.50
      ansible_port: 22
      ansible_user: cord
      ansible_ssh_pass: cord
  compute:

#Prefix for the domainId
carrierethernet_domainid_prefix: 10.90.1.50
