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


---
# vars/api-test.yaml

site_name: mysite
deployment_type: MyDeployment

frontend_only: True
use_openstack: False
use_vtn: False
needs_pki_install: True

build_xos_base_image: True
build_xos_test_image: True

source_ui_image: "xosproject/xos-test"

xos_admin_user: padmin@vicci.org
xos_admin_pass: letmein
xos_admin_first: XOS
xos_admin_last: Admin

xos_tosca_config_templates:
  - management-net.yaml
  - sample.yaml
  - services.yaml
  - volt-devices.yaml
  - xos-gui-extensions.yml

# paths relative to repo checkout, defined in manifest/default.xml
xos_services:
  - name: volt
    path: orchestration/xos_services/olt-service
  - name: onos
    path: orchestration/xos_services/onos-service
  - name: vrouter
    path: orchestration/xos_services/vrouter
  - name: vsg
    path: orchestration/xos_services/vsg
  - name: vtr
    path: orchestration/xos_services/vtr

xos_service_sshkeys:
  - name: onos_rsa
    source_path: "/dev/null"
  - name: onos_rsa.pub
    source_path: "/dev/null"
  - name: volt_rsa
    source_path: "/dev/null"
  - name: volt_rsa.pub
    source_path: "/dev/null"
  - name: vsg_rsa
    source_path: "/dev/null"
  - name: vsg_rsa.pub
    source_path: "/dev/null"

# site domain suffix
site_suffix: opencloud.us

# SSL server certificate generation
server_certs:
  - cn: "xos-core.{{ site_suffix }}"
    subj: "/C=US/ST=California/L=Menlo Park/O=ON.Lab/OU=Test Deployment/CN=xos-core.{{ site_suffix }}"
    altnames:
      - "DNS:xos-core.{{ site_suffix }}"
