{%- set default_params = {
    'cacert_file': salt['grains.filter_by']({
        'Debian': '/etc/ssl/certs/ca-certificates.crt',
        'RedHat': '/etc/pki/tls/certs/ca-bundle.crt'
    })}
%}

{% set compute_bind_defaults = {
    'vnc_address': '10.0.0.10',
    'vnc_port': '6080',
    'vnc_name': 'cloud.domain.com',
    'vnc_protocol': 'http',
} %}

{%- if grains.os_family == "Debian" %}
{%- set pkgs_list = [ 'nova-common', 'nova-consoleproxy', 'novnc', 'nova-api', 'nova-conductor', 'nova-consoleauth', 'nova-doc', 'nova-scheduler', 'python-novaclient', 'python-memcache', 'gettext-base', 'python-pycadf'] %}
{%- set services_list = ['nova-api', 'nova-consoleauth', 'nova-scheduler', 'nova-conductor', 'nova-novncproxy'] %}
{%- if pillar.nova.controller is defined and pillar.nova.controller.get('version',{}) in ["juno", "kilo", "liberty", "mitaka", "newton", "ocata"] %}
{%- do pkgs_list.append('nova-cert') %}
{%- do services_list.append('nova-cert') %}
{%- endif %}
{%- endif %}

{%- if grains.os_family == "RedHat" %}
{%- set pkgs_list = ['openstack-nova-novncproxy', 'python-nova', 'openstack-nova-api', 'openstack-nova-console', 'openstack-nova-scheduler', 'python-novaclient', 'openstack-nova-common', 'openstack-nova-conductor', 'python-pycadf'] %}
{%- set services_list = ['openstack-nova-api', 'openstack-nova-consoleauth', 'openstack-nova-scheduler', 'openstack-nova-conductor', 'openstack-nova-novncproxy'] %}
{%- if pillar.nova.controller is defined and pillar.nova.controller.get('version',{}) in ["juno", "kilo", "liberty", "mitaka", "newton", "ocata"] %}
{%- do pkgs_list.append('openstack-nova-cert') %}
{%- do services_list.append('openstack-nova-cert') %}
{%- endif %}
{%- endif %}

{% set controller = salt['grains.filter_by']({
    'BaseDefaults': default_params,
    'Debian': {
        'pkgs': pkgs_list,
        'services': services_list,
        'debug': false,
        'notification': false,
        'cors': {},
        'audit': {
          'enabled': false
        },
        'logging': {
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          }
        },
    },
    'RedHat': {
        'pkgs': pkgs_list,
        'services': services_list,
        'debug': false,
        'notification': false,
        'cors': {},
        'audit': {
          'enabled': false
        },
        'logging': {
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          }
        },
    },
}, merge=pillar.nova.get('controller', {}), base='BaseDefaults') %}

{% set client = salt['grains.filter_by']({
    'Debian': {
        'pkgs': ['python-novaclient']
    },
    'RedHat': {
        'pkgs': ['python-novaclient']
    },
}, merge=pillar.nova.get('client', {})) %}

{% set compute_network = salt['grains.filter_by']({
    'default': {
        'dpdk': {
            'enabled': false,
        },
        'openvswitch': {
            'vhost_socket_dir': {
                'name': 'openvswitch-vhost',
                'path': '/run/openvswitch-vhost',
            },
        },
        'region': 'RegionOne',
    },
}, merge=salt['pillar.get']('linux:network'), base='default') %}

{%- load_yaml as compute_defaults %}
BaseDefaults: {{ default_params }}
Debian:
  pkgs:
  - nova-common
  - nova-compute-kvm
  - python-novaclient
  - pm-utils
  - sysfsutils
  - sg3-utils
  - libvirt-bin
  - python-memcache
  - qemu-kvm
  - python-guestfs
  - gettext-base
  {%- if pillar.nova.compute is defined and pillar.nova.compute.get('networking', 'default') == "contrail" and pillar.nova.compute.get('version', 'ocata') not in ["juno", "kilo", "liberty", "mitaka", "newton"] %}
  - contrail-nova-driver
  {%- endif %}
  services:
  - nova-compute
  libvirt_config: libvirtd.conf
  libvirt_bin: "/etc/default/libvirt-bin"
  libvirt_service: libvirt-bin
  bind: compute_bind_defaults
  debug: false
  libvirt: []
  instances_path: "$state_path/instances"
  notification: false
  availability_zone:
  aggregates: []
  identity:
    region: RegionOne
  network: {{ compute_network }}
  heal_instance_info_cache_interval: '60'
  logging:
    log_appender: false
    log_handlers:
      watchedfile:
        enabled: true
RedHat:
  pkgs:
  - openstack-nova-compute
  - python-novaclient
  - python-nova
  - sysfsutils
  - sg3_utils
  services:
  - messagebus
  - openstack-nova-compute
  - libvirtd
  libvirt_config: libvirt.conf
  libvirt_bin: "/etc/sysconfig/libvirtd"
  libvirt_service: libvirtd
  bind: compute_bind_defaults
  debug: false
  libvirt: []
  notification: false
  availability_zone:
  identity:
    region: RegionOne
  network: {{ compute_network }}
  heal_instance_info_cache_interval: '60'
  logging:
    log_appender: false
    log_handlers:
      watchedfile:
        enabled: true
{%- endload %}
{% set compute = salt["grains.filter_by"](compute_defaults, merge=pillar.nova.get("compute", {}), base='BaseDefaults') %}

{% set monitoring = salt['grains.filter_by']({
    'default': {
        'disk': {
              'warn': '15%',
              'crit': '5%',
        },
        'error_log_rate': {
              'warn': 0.2,
        },
        'services_failed_warning_threshold_percent': 0.3,
        'services_failed_critical_threshold_percent': 0.6,
        'computes_failed_warning_threshold_percent': 0.25,
        'computes_failed_critical_threshold_percent': 0.5,
    },
}, grain='os_family', merge=salt['pillar.get']('nova:monitoring')) %}
