{%- 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 = salt['grains.filter_by']({
    'BaseDefaults': default_params,
    'Debian': {
        'pkgs': ['neutron-openvswitch-agent', 'openvswitch-switch', 'python-pycadf'],
        'pkgs_ovn': ['ovn-common', 'ovn-host'],
        'services': ['neutron-openvswitch-agent'],
        'services_ovn': ['ovn-host'],
        'dpdk': false,
        'audit': {
          'enabled': false
        },
        'logging': {
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
    'RedHat': {
        'pkgs': ['openstack-neutron-openvswitch', 'openvswitch', 'python-pycadf'],
        'pkgs_ovn': ['openvswitch-ovn'],
        'services': ['neutron-openvswitch-agent'],
        'services_ovn': ['ovn-host'],
        'dpdk': false,
        'audit': {
          'enabled': false
        },
        'logging': {
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
}, merge=pillar.neutron.get('compute', {}), base='BaseDefaults') %}

{% set gateway = salt['grains.filter_by']({
    'BaseDefaults': default_params,
    'Debian': {
        'pkgs': ['neutron-dhcp-agent', 'neutron-openvswitch-agent', 'neutron-l3-agent', 'openvswitch-common', 'neutron-metadata-agent'],
        'services': ['neutron-openvswitch-agent', 'neutron-metadata-agent', 'neutron-l3-agent', 'neutron-dhcp-agent'],
        'dpdk': false,
        'logging': {
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
    'RedHat': {
        'pkgs': ['openstack-neutron-openvswitch'],
        'services': ['neutron-openvswitch-agent', 'neutron-metadata-agent', 'neutron-l3-agent', 'neutron-dhcp-agent'],
        'dpdk': false,
        'logging': {
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
}, merge=pillar.neutron.get('gateway', {}), base='BaseDefaults') %}

{% set server = salt['grains.filter_by']({
    'BaseDefaults': default_params,
    'Debian': {
        'pkgs': ['neutron-server','python-neutron-lbaas', 'gettext-base', 'python-pycadf'],
        'pkgs_ovn': ['python-networking-ovn', 'ovn-common', 'ovn-central'],
        'pkgs_ml2': ['neutron-plugin-ml2'],
        'services': ['neutron-server'],
        'services_ovn': ['ovn-central'],
        'notification': False,
        'dpdk': false,
        'cors': {},
        'audit': {
          'enabled': false
        },
        'logging': {
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
    'RedHat': {
        'pkgs_ml2': ['openstack-neutron-ml2', 'python-pycadf'],
        'pkgs': ['openstack-neutron'],
        'pkgs_ovn': ['openvswitch-ovn', 'python-networking-ovn'],
        'services': ['neutron-server'],
        'services_ovn': ['ovn-central'],
        'notification': False,
        'dpdk': false,
        'cors': {},
        'audit': {
          'enabled': false
        },
        'logging': {
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
}, merge=pillar.neutron.get('server', {}), base='BaseDefaults') %}

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

{% set fwaas = salt['grains.filter_by']({
    'default': {
        'v1': {
            'driver': 'iptables',
            'l3_extension': 'fwaas',
            'service_plugin': 'firewall',
        },
        'v2': {
            'driver': 'iptables_v2',
            'l3_extension': 'fwaas_v2',
            'service_plugin': 'firewall_v2',
        },
        'pkgs': ['python-neutron-fwaas'],
        'api_version': 'v1',
    },
}, merge=pillar.neutron.get('fwaas', {}), base='default') %}


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