---
# 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 }}"
credentials_dir: "{{ ( playbook_dir ~ '/credentials' ) | 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-ui"
  - "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"
  - "redis"
  - "nginx"
  - "node"

# Ansible Inventory
inventory_groups:

  config:
    localhost:
      ansible_connection: local

  build:
    localhost:
      ansible_connection: local

  head:
    localhost:
      ansible_connection: local

  compute:

