{%- set version = salt['pillar.get']('designate:server:version') -%}
{%- set api_address = salt['pillar.get']('designate:server:bind:api:address', '127.0.0.1') -%}
{%- set api_port = salt['pillar.get']('designate:server:bind:api:port', '9001') -%}
{% set server = salt['grains.filter_by']({
    'default': {
        'api': {
            'base_uri': 'http://' + api_address + ':' + api_port + '/'
        },
        'mdns' : {
            'address': '0.0.0.0',
            'port': '5354'
        }
    },
    'Debian': {
        'pkgs': ['designate-api', 'designate-central', 'designate-sink'],
        'services': ['designate-api', 'designate-central', 'designate-sink'],
        'cacert_file': '/etc/ssl/certs/ca-certificates.crt',
        'notification_handlers': {
          'nova_fixed': {
            'enabled': true,
            'formatv4': '%(hostname)s.%(zone)s',
            'formatv6': '%(hostname)s.%(zone)s'
          },
          'neutron_floatingip': {
            'enabled': true,
            'formatv4': '%(octet0)s-%(octet1)s-%(octet2)s-%(octet3)s.%(zone)s',
          }
        },
        'logging': {
          'app_name': 'designate',
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
    'RedHat': {
        'pkgs': ['openstack-designate-api', 'openstack-designate-central', 'openstack-designate-sink'],
        'services': ['designate-api', 'designate-central', 'designate-sink'],
        'cacert_file': '/etc/pki/tls/certs/ca-bundle.crt',
        'notification_handlers': {
          'nova_fixed': {
            'enabled': true,
            'control_exchange': 'nova',
            'formatv4': '%(hostname)s.%(zone)s',
            'formatv6': '%(hostname)s.%(zone)s'
          },
          'neutron_floatingip': {
            'enabled': true,
            'control_exchange': 'neutron',
            'formatv4': '%(octet0)s-%(octet1)s-%(octet2)s-%(octet3)s.%(zone)s',
          }
        },
        'logging': {
          'app_name': 'designate',
          'log_appender': false,
          'log_handlers': {
            'watchedfile': {
              'enabled': true
            }
          },
        },
    },
}, merge=pillar.designate.get('server', {}), base='default') %}

{% set pool_manager = salt['grains.filter_by']({
    'Debian': {
        'pkgs': ['designate-pool-manager', 'designate-mdns', 'designate-zone-manager'],
        'services': ['designate-pool-manager', 'designate-mdns', 'designate-zone-manager'],
    },
    'RedHat': {
        'pkgs': ['openstack-designate-pool-manager', 'openstack-designate-mdns', 'openstack-designate-zone-manager'],
        'services': ['designate-pool-manager', 'designate-mdns', 'designate-zone-manager'],
    },
}, merge=pillar.designate.get('pool_manager')) %}

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

{% set agent = salt['grains.filter_by']({
    'Debian': {
        'pkgs': ['designate-agent'],
        'services': ['designate-agent'],
    },
    'RedHat': {
        'pkgs': ['openstack-designate-agent'],
        'services': ['designate-agent'],
    },
}, merge=pillar.designate.get('agent', {})) %}

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

{% set upgrade = salt['grains.filter_by']({
    'default': {
        'verify': {
            'zone': {
                 'enabled': false,
                 'name': 'upgradetest.com.'
            },
        },
    },
}, merge=pillar.designate.get('upgrade', {}), base='default') %}
