
# 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/frontend-rcord.yaml
# creates a mock R-CORD pod

site_name: mock-rcord
deployment_type: "Mock R-CORD Pod"

xos_admin_user: "xosadmin@opencord.org"
xos_admin_pass: "{{ lookup('password', credentials_dir ~ '/xosadmin@opencord.org chars=ascii_letters,digits') }}"
xos_admin_first: XOS
xos_admin_last: Admin

credentials_dir: "{{ playbook_dir }}/credentials"

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

build_xos_base_image: True

xos_tosca_config_templates:
  - management-net.yaml
  - mock-onos.yaml
  - cord-services.yaml
  - public-net.yaml
    #  - test-subscriber.yaml # broken? Missing lan_network config on vOLT ?
  - xos-gui-extensions.yml

# GUI Config [new GUI]
gw_port: 3000
gui_api_endpoint: "/xosapi/v1"
gui_websocket: "/"
gui_project_name: "R-CORD"
gui_favicon: "cord-favicon.png"
gui_background: "cord-bg.jpg"
gui_payoff: "Your VNF orchestrator"
gui_logo: "cord-logo.png"
gui_routes:
  - label: "Slices"
    state: "xos.core.slice"
  - label: "Nodes"
    state: "xos.core.node"
  - label: "Instances"
    state: "xos.core.instance"

enabled_gui_extensions:
  - name: vtr
    path: orchestration/xos_services/vtr/xos/gui
  - name: rcord
    path: orchestration/profiles/rcord/xos/gui

# GUI branding [OLD GUI to be removed]
gui_branding_name: "CORD"
gui_branding_icon: "/static/cord-logo.png"
gui_branding_favicon: "/static/cord-favicon.png"
gui_branding_bg: "/static/cord-bg.jpg"

# paths defined in manifest/default.xml
xos_services:
  - name: volt
    path: orchestration/xos_services/olt-service
    keypair: volt_rsa
  - name: onos
    path: orchestration/xos_services/onos-service
    keypair: onos_rsa
  - name: vrouter
    path: orchestration/xos_services/vrouter
  - name: addressmanager
    path: orchestration/xos_services/addressmanager
  - name: vsg
    path: orchestration/xos_services/vsg
    keypair: vsg_rsa
  - name: vtr
    path: orchestration/xos_services/vtr
    keypair: vsg_rsa
  - name: fabric
    path: orchestration/xos_services/fabric

profile_library: "rcord"

# site domain suffix
site_suffix: opencord.org

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

xos_images: []