{%- 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 server = salt['grains.filter_by']({
    'BaseDefaults': default_params,
    'Debian': {
        'pkgs': ['glance', 'glance-api', 'glance-registry', 'glance-common', 'python-glance', 'python-glance-store', 'python-glanceclient', 'gettext-base', 'python-memcache', 'python-pycadf'],
        'services': ['glance-api', 'glance-registry'],
        'notification': False,
        'cors': {},
        'audit': {
          'enabled': false
        },
        'glance_uid': 302,
        'glance_gid': 302,
        'amqp': {
          'default_notification_exchange': 'glance'
        },
        'oslo_policy': {
          'policy_file': '/etc/glance/policy.json'
        },
        'logging': {
          'app_name': 'glance',
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
    'RedHat': {
        'pkgs': ['openstack-glance', 'python-glanceclient','python-pycadf'],
        'services': ['openstack-glance-api', 'openstack-glance-registry'],
        'notification': False,
        'cors': {},
        'audit': {
          'enabled': false
        },
        'glance_uid': 302,
        'glance_gid': 302,
        'amqp': {
          'default_notification_exchange': 'glance'
        },
        'oslo_policy': {
          'policy_file': '/etc/glance/policy.json'
        },
        'logging': {
          'app_name': 'glance',
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
}, merge=pillar.glance.get('server', {}), base='BaseDefaults') %}

{%- set client_default_params = {
      'enabled': false
    }
%}

{% set client = salt['grains.filter_by']({
    'BaseDefaults': client_default_params,
    'Debian': {
        'pkgs': ['python-glanceclient', 'python-keystoneclient']
    },
    'RedHat': {
        'pkgs': ['python-glanceclient', 'python-keystoneclient']
    },
}, merge=pillar.glance.get('client', {}), base='BaseDefaults') %}

{% set monitoring = salt['grains.filter_by']({
    'default': {
        'error_log_rate': 0.2,
        'endpoint_failed_major_threshold': 0.5,
    },
}, grain='os_family', merge=salt['pillar.get']('glance:monitoring')) %}

{% set upgrade = pillar.get('glance', {}).get('upgrade', {}) %}
