---
# 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/ecord.yaml
# E-CORD Profile Manifest

# Site configuration
site_name: mysite
site_humanname: MySite
#site_suffix: "{{ site_name }}.cord.lab" - broken, see CORD-1520
site_suffix: "cord.lab"
deployment_type: MyDeployment

# Feature toggles
use_apt_cache: True
use_fabric: True
use_maas: True

# XOS config
xos_tosca_config_templates:
  - vtn-service.yaml
  - fabric-service.yaml
  - management-net.yaml
  - ecord-services.yaml
  - public-net.yaml
  - vee-service.yaml
  - xos-gui-extensions.yml
  - carrierethernet-local-app.yaml

xos_new_tosca_config_templates:
  - service-graph-constraints.yaml

xos_other_templates:
  - fabric-network-cfg.json

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

enabled_gui_extensions:
  - name: veestat
    path: orchestration/xos_services/vEE/xos/veestat

# paths defined in manifest/default.xml
xos_services:
  - name: addressmanager
    path: orchestration/xos_services/addressmanager
  - name: openstack
    path: orchestration/xos_services/openstack
  - name: onos
    path: orchestration/xos_services/onos-service
    keypair: onos_rsa
  - name: vtn
    path: orchestration/xos_services/vtn-service
  - name: fabric
    path: orchestration/xos_services/fabric
  - name: vrouter
    path: orchestration/xos_services/vrouter
  - name: veg
    path: orchestration/xos_services/vEG
    keypair: veg_rsa
  - name: vee
    path: orchestration/xos_services/vEE

# service graph gui constraints
xos_gui_service_graph_constraints: '["vee", "veg", "vrouter"]'

# VTN network configuration
management_network_ip: 172.27.0.1/24
data_plane_ip: 10.168.0.253/24

# Juju config
charm_versions:
  ceilometer: "cs:trusty/ceilometer-17"
  ceilometer-agent: "cs:trusty/ceilometer-agent-13"
  glance: "cs:trusty/glance-28"
  keystone: "cs:trusty/keystone-267"
  mongodb: "cs:trusty/mongodb-33"
  nagios: "cs:trusty/nagios-10"
  neutron-api: "cs:~cordteam/trusty/neutron-api-6"
  nova-cloud-controller: "cs:trusty/nova-cloud-controller-64"
  nova-compute: "cs:~cordteam/trusty/nova-compute-3"
  nrpe: "cs:trusty/nrpe-4"
  ntp: "cs:trusty/ntp-14"
  openstack-dashboard: "cs:trusty/openstack-dashboard-19"
  percona-cluster: "cs:trusty/percona-cluster-31"
  rabbitmq-server: "cs:trusty/rabbitmq-server-42"

head_lxd_list:
  - name: "juju-1"
    service: "juju"
    aliases:
      - "juju"
    ipv4_last_octet: 10

  - name: "ceilometer-1"
    service: "ceilometer"
    aliases:
      - "ceilometer"
    ipv4_last_octet: 20
    forwarded_ports:
      - { ext: 8777, int: 8777 }

  - name: "glance-1"
    service: "glance"
    aliases:
      - "glance"
    ipv4_last_octet: 30
    forwarded_ports:
      - { ext: 9292, int: 9292 }

  - name: "keystone-1"
    service: "keystone"
    aliases:
      - "keystone"
    ipv4_last_octet: 40
    forwarded_ports:
      - { ext: 35357, int: 35357 }
      - { ext: 4990, int: 4990 }
      - { ext: 5000, int: 5000 }

  - name: "percona-cluster-1"
    service: "percona-cluster"
    aliases:
      - "percona-cluster"
    ipv4_last_octet: 50

  - name: "nagios-1"
    service: "nagios"
    aliases:
      - "nagios"
    ipv4_last_octet: 60
    forwarded_ports:
      - { ext: 3128, int: 80 }

  - name: "neutron-api-1"
    service: "neutron-api"
    aliases:
      - "neutron-api"
    ipv4_last_octet: 70
    forwarded_ports:
      - { ext: 9696, int: 9696 }

  - name: "nova-cloud-controller-1"
    service: "nova-cloud-controller"
    aliases:
      - "nova-cloud-controller"
    ipv4_last_octet: 80
    forwarded_ports:
      - { ext: 8774, int: 8774 }

  - name: "openstack-dashboard-1"
    service: "openstack-dashboard"
    aliases:
      - "openstack-dashboard"
    ipv4_last_octet: 90
    forwarded_ports:
      - { ext: 8080, int: 80 }

  - name: "rabbitmq-server-1"
    service: "rabbitmq-server"
    aliases:
      - "rabbitmq-server"
    ipv4_last_octet: 100

  - name: "mongodb-1"
    service: "mongodb"
    aliases:
      - "mongodb"
    ipv4_last_octet: 110

lxd_service_list:
  - ceilometer
  - glance
  - keystone
  - mongodb
  - nagios
  - neutron-api
  - nova-cloud-controller
  - openstack-dashboard
  - percona-cluster
  - rabbitmq-server

standalone_service_list:
  - ntp
  - nrpe
  - ceilometer-agent


service_relations:
  - name: keystone
    relations: [ "percona-cluster", "nrpe", ]

  - name: nova-cloud-controller
    relations: [ "percona-cluster", "rabbitmq-server", "glance", "keystone", "nrpe", ]

  - name: glance
    relations: [ "percona-cluster", "keystone", "nrpe", ]

  - name: neutron-api
    relations: [ "keystone",  "percona-cluster", "rabbitmq-server", "nova-cloud-controller", "nrpe", ]

  - name: openstack-dashboard
    relations: [ "keystone", "nrpe", ]

  - name: nagios
    relations: [ "nrpe", ]

  - name: "percona-cluster:juju-info"
    relations: [ "nrpe:general-info", ]

  - name: rabbitmq-server
    relations: [ "nrpe", ]

  - name: ceilometer
    relations: [ "mongodb", "rabbitmq-server", "nagios", "nrpe", ]

  - name: "ceilometer:identity-service"
    relations: [ "keystone:identity-service", ]

  - name: "ceilometer:ceilometer-service"
    relations: [ "ceilometer-agent:ceilometer-service", ]


compute_relations:
  - name: nova-compute
    relations: [ "ceilometer-agent", "glance", "nova-cloud-controller", "nagios", "nrpe", ]

  - name: "nova-compute:shared-db"
    relations: [ "percona-cluster:shared-db", ]

  - name: "nova-compute:amqp"
    relations: [ "rabbitmq-server:amqp", ]

  - name: ntp
    relations: [ "nova-compute", ]


xos_images:
  - name: "trusty-server-multi-nic"
    url: "https://github.com/opencord/platform-install/releases/download/vms/trusty-server-cloudimg-amd64-disk1.img.20170201"
    checksum: "sha256:ebf007ba3ec1043b7cd011fc6668e2a1d1d4c69c41071e8513ab355df7a057cb"

  - name: "vsg-1.1"
    url: "https://github.com/opencord/vsg/releases/download/vms/vsg-1.1.img"
    checksum: "sha256:16b0beb6778aed0f5feecb05f8d5750e6c262f98e6011e99ddadf7d46a177b6f"

  - name: "ceilometer-trusty-server-multi-nic"
    url: "https://github.com/opencord/platform-install/releases/download/vms/ceilometer-trusty-server-multi-nic.compressed.qcow2"
    checksum: "sha256:b77ef8d692b640568dea13df99fe1dfcb1f4bb4ac05408db9ff77399b34f754f"

  - name: "ceilometer-service-trusty-server-multi-nic"
    url: "https://github.com/opencord/platform-install/releases/download/vms/ceilometer-service-trusty-server-multi-nic.compressed.qcow2.20170131"
    checksum: "sha256:f0341e283f0f2cb8f70cd1a6347e0081c9c8492ef34eb6397c657ef824800d4f"
