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


---
# profile_manifests/mock-ecord.yml
# creates a mock E-CORD pod

site_name: mock-ecord
deployment_type: "Mock E-CORD Global 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: False
use_openstack: False
use_vtn: False
needs_pki_install: True

build_xos_base_image: True

xos_tosca_config_templates:
  - mock-onos.yaml
  - vnodglobal-service.yaml
  - xos-gui-extensions.yml

# GUI Config [new GUI]
gui_project_name: "E-CORD"
gui_background: "cord-bg.jpg" # TODO find ecord image
gui_payoff: "Your Enterprise VNF orchestrator"

# GUI branding
gui_branding_name: "ECORD"
gui_branding_icon: "/static/cord-logo.png"
gui_branding_favicon: "/static/cord-favicon.png"
gui_branding_bg: "/static/cord-bg.jpg"

enabled_gui_extensions:
  - name: metro-net-gui
    path: orchestration/xos_services/metro-net/xos/gui
    extra_files:
      - app/style/style.css

# paths defined in manifest/default.xml
xos_services:
  - name: onos
    path: orchestration/xos_services/onos-service
  - name: metro-net
    path: orchestration/xos_services/metro-net

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

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