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

# local Scenario
# Brings up a minimal set of containers on the host currently being run on

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

# head = config in local scenario
head_cord_dir: "{{ config_cord_dir }}"
head_cord_profile_dir: "{{ config_cord_profile_dir }}"
head_credentials_dir: "{{ credentials_dir }}"

xos_tosca_url: "http://127.0.0.1:9102"

# make targets
build_targets:
  - local-onboard-profile

# local scenario configuration
frontend_only: True
create_configdirs_become: False
use_openstack: False
xos_images: []

# 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"
  - "gliderlabs/consul-server"
  - "gliderlabs/registrator"
  - "redis"
  - "nginx"
  - "node"

# Ansible Inventory
inventory_groups:

  config:
    localhost:
      ansible_connection: local

  build:
    localhost:
      ansible_connection: local

  head:
    localhost:
      ansible_connection: local

  compute:

