{%- 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 agent = salt['grains.filter_by']({
    'BaseDefaults': default_params,
    'Debian': {
        'pkgs': ['ceilometer-agent-compute'],
        'services': ['ceilometer-agent-compute'],
        'notification': {
          'topics': 'notifications'
        },
        'logging': {
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
    'RedHat': {
        'pkgs': ['openstack-ceilometer-compute'],
        'services': ['openstack-ceilometer-compute'],
        'notification': {
          'topics': 'notifications'
        },
        'logging': {
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
}, merge=salt['pillar.get']('ceilometer:agent', {}), base='BaseDefaults') %}

# Server initialization

{% set pkgs = salt['grains.filter_by']({
    'Debian': {
        'alarm': ['ceilometer-alarm-evaluator', 'ceilometer-alarm-notifier'],
        'collector': ['ceilometer-collector'],
        'basic': ['ceilometer-agent-central', 'python-ceilometerclient', 'ceilometer-agent-notification'],
        'api': ['ceilometer-api'],
        'db_drivers': ['python-elasticsearch', 'python-influxdb', 'python-pymongo'],
    },
    'RedHat': {
        'alarm': ['openstack-ceilometer-alarm-evaluator', 'openstack-ceilometer-alarm-notifier'],
        'basic':[ 'openstack-ceilometer-central', 'python-ceilometerclient'],
        'api': ['openstack-ceilometer-api'],
        'collector':['openstack-ceilometer-collector'],
        'db_drivers': ['python-elasticsearch', 'python-influxdb', 'python-pymongo'],
    },
}) %}

{% set services = salt['grains.filter_by']({
    'Debian': {
        'alarm': ['ceilometer-alarm-evaluator', 'ceilometer-alarm-notifier'],
        'collector': ['ceilometer-collector'],
        'basic': ['ceilometer-agent-central', 'ceilometer-agent-notification'],
        'webserved': ['ceilometer-api'],
    },
    'RedHat': {
        'alarm':['openstack-ceilometer-alarm-evaluator', 'openstack-ceilometer-alarm-notifier'],
        'basic':['openstack-ceilometer-central', 'openstack-ceilometer-notification'],
        'collector': ['openstack-ceilometer-collector'],
        'webserved': ['openstack-ceilometer-api'],
    },
}) %}

{%- set server = salt['grains.filter_by']({
    'BaseDefaults': default_params,
    'default': {
        'notification': {
          'topics': 'notifications'
        },
        'logging': {
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    }
}, merge=salt['pillar.get']('ceilometer:server',{}), base='BaseDefaults') %}

# Mitaka and newer OpenStack releases don't need collector and alarm
# packages/services, because alarming is implemented by Aodh and collector
# stuff is implemented by the ceilometer_collector service.
# The ceilometer api for Ocata and Newton is served by webserver.
# The ceilometer api and db drivers for Pike and newer are deprecated.
{%- if salt['pillar.get']('ceilometer:server:version', 'mitaka') in ['liberty', 'juno', 'kilo'] %}
{%-   do server.update({'pkgs': pkgs.api + pkgs.basic + pkgs.collector + pkgs.alarm}) %}
{%- elif salt['pillar.get']('ceilometer:server:version', 'mitaka') in ['mitaka', 'newton', 'ocata'] %}
{%-   do server.update({'pkgs': pkgs.api + pkgs.basic + pkgs.db_drivers}) %}
{%- else %}
{%-   do server.update({'pkgs': pkgs.basic}) %}
{%- endif %}

{%- if salt['pillar.get']('ceilometer:server:version', 'mitaka') in ['liberty', 'juno', 'kilo'] %}
{%-   do server.update({'services': services.basic + services.collector + services.alarm + services.webserved}) %}
{%- elif salt['pillar.get']('ceilometer:server:version', 'ocata') == 'mitaka' %}
{%-   do server.update({'services': services.basic + services.webserved}) %}
{%- else %}
{%-   do server.update({'services': services.basic}) %}
{%- endif %}
