{%- 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 controller = salt['grains.filter_by']({
    'BaseDefaults': default_params,
    'Debian': {
        'pkgs': ['cinder-api', 'cinder-scheduler', 'lvm2', 'python-cinder', 'gettext-base', 'python-memcache', 'python-pycadf'],
        'services': ['cinder-scheduler'],
        'wipe_method': 'none',
        'notification': False,
        'cors': {},
        'audit': {
          'enabled': false
        },
       'cinder_uid': 304,
       'cinder_gid': 304,
       'message_queue': {
         'rpc_response_timeout': 3600,
         'control_exchange': 'cinder'
       },
       'enable_proxy_headers_parsing': true,
         'backup': {
           'pkgs': ['cinder-backup'],
           'services': ['cinder-backup'],
           'engine': None
        },
        'logging': {
          'app_name': 'cinder',
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
    'RedHat': {
        'pkgs': ['openstack-cinder', 'python-cinder', 'lvm2', 'python-pycadf'],
        'services': ['openstack-cinder-api', 'openstack-cinder-scheduler'],
        'wipe_method': 'none',
        'notification': False,
        'cors': {},
        'audit': {
          'enabled': false
        },
       'cinder_uid': 304,
       'cinder_gid': 304,
       'message_queue': {
         'rpc_response_timeout': 3600,
         'control_exchange': 'cinder'
       },
       'enable_proxy_headers_parsing': true,
        'backup': {
          'pkgs': ['cinder-backup'],
          'services': ['cinder-backup'],
          'engine': None
        },
        'logging': {
          'app_name': 'cinder',
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
}, merge=pillar.cinder.get('controller', {}), base='BaseDefaults') %}

{% set volume = salt['grains.filter_by']({
    'BaseDefaults': default_params,
    'Debian': {
        'pkgs': ['cinder-volume', 'lvm2', 'sysfsutils', 'sg3-utils', 'python-cinder','python-mysqldb','p7zip', 'gettext-base', 'python-memcache', 'python-pycadf'],
        'services': ['cinder-volume'],
        'wipe_method': 'none',
        'notification': False,
        'audit': {
          'enabled': false
        },
        'cinder_uid': 304,
        'cinder_gid': 304,
        'backup': {
          'pkgs': ['cinder-backup'],
          'services': ['cinder-backup'],
          'engine': None
        },
        'message_queue': {
          'rpc_response_timeout': 3600,
          'control_exchange': 'cinder'
        },
        'logging': {
          'app_name': 'cinder',
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
    'RedHat': {
        'pkgs': ['openstack-cinder', 'python-cinder', 'lvm2', 'sysfsutils', 'sg3_utils', 'device-mapper-multipath', 'device-mapper-multipath-libs', 'python-pycadf'],
        'services': ['openstack-cinder-volume'],
        'wipe_method': 'none',
        'notification': False,
        'audit': {
          'enabled': false
        },
        'cinder_uid': 304,
        'cinder_gid': 304,
        'message_queue': {
          'rpc_response_timeout': 3600,
          'control_exchange': 'cinder'
        },
        'backup': {
          'pkgs': ['cinder-backup'],
          'services': ['cinder-backup'],
          'engine': None
        },
        'logging': {
          'app_name': 'cinder',
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
}, merge=pillar.cinder.get('volume', {}), base='BaseDefaults') %}

{% set client = salt['grains.filter_by']({
    'BaseDefaults': default_params,
    'Debian': {
        'pkgs': ['python-cinderclient']
    },
    'RedHat': {
        'pkgs': ['python-cinderclient']
    },
}, merge=pillar.cinder.get('client', {}), base='BaseDefaults') %}

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