{% set agent = salt['grains.filter_by']({
    'Debian': {
        'pkgs': ['ceilometer-agent-compute'],
        'services': ['ceilometer-agent-compute'],
        'logging': {
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
    'RedHat': {
        'pkgs': ['openstack-ceilometer-compute'],
        'services': ['openstack-ceilometer-compute'],
        'logging': {
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
}, merge=salt['pillar.get']('ceilometer:agent')) %}

# Server initialization

{% set pkgs = salt['grains.filter_by']({
    'Debian': {
        'alarm': ['ceilometer-alarm-evaluator', 'ceilometer-alarm-notifier'],
        'collector': ['ceilometer-collector'],
        'basic': ['ceilometer-api', 'ceilometer-agent-central', 'python-ceilometerclient', 'ceilometer-agent-notification'],
        'db_drivers': ['python-elasticsearch', 'python-influxdb', 'python-pymongo'],
    },
    'RedHat': {
        'alarm': ['openstack-ceilometer-alarm-evaluator', 'openstack-ceilometer-alarm-notifier'],
        'basic':[ 'openstack-ceilometer-api', 'openstack-ceilometer-central', 'python-ceilometerclient'],
        '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']({
    'default': {
        'logging': {
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    }
}, merge=salt['pillar.get']('ceilometer:server')) %}

# 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 newer is served by webserver.
{%- if salt['pillar.get']('ceilometer:server:version', 'mitaka') in ['liberty', 'juno', 'kilo'] %}
{%- do server.update({'pkgs': pkgs.basic + pkgs.collector + pkgs.alarm}) %}
{%- do server.update({'services': services.basic + services.collector + services.alarm + services.webserved}) %}
{%- else %}
{%- do server.update({'pkgs': pkgs.basic + pkgs.db_drivers}) %}
{%- if salt['pillar.get']('ceilometer:server:version', 'ocata') in ['mitaka'] %}
{%- do server.update({'services': services.basic + services.webserved}) %}
{%- else %}
# Newton and Ocata versions of ceilometer api are served by webserver
{%- do server.update({'services': services.basic}) %}
{%- endif %}
{%- endif %}
