
# 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/mock-mcord.yaml
# creates a mock MCORD pod

site_name: mock-mcord
deployment_type: "Mock M-CORD Pod"

credentials_dir: "{{ playbook_dir }}/credentials"
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

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

build_xos_base_image: True

xos_tosca_config_templates:
  - sample.yaml
  - management-net.yaml
  - mock-mcord.yaml
  - xos-gui-extensions.yml

# GUI Config [new GUI]
gui_project_name: "M-CORD"
gui_payoff: "Your way toward 5G"
gui_routes:
  - label: "Slices"
    state: "xos.core.slice"
  - label: "Nodes"
    state: "xos.core.node"
  - label: "Instances"
    state: "xos.core.instance"
  - label: "MCORD"
    state: "xos.mcord"
  - label: "Topology"
    state: "xos.mcord.topology"
    parent: "xos.mcord"

# GUI branding
gui_branding_name: "M-CORD"
gui_branding_icon: "/static/cord-logo.png"
gui_branding_favicon: "/static/cord-favicon.png"
gui_branding_bg: "/static/mcord-bg.jpg"
gui_service_view_class: "core.views.mCordServiceGrid.ServiceGridView"

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

xos_images: []