
{%- load_yaml as master_common %}
default:
  service: salt-master
  {%- if pillar.salt.get('master', {}).get('source', {}).get('engine', 'pkg') == 'pkg' %}
  install_state: "pkg: salt_master_packages"
  source:
    engine: pkg
  {%- elif pillar.salt.master.source.engine == 'pip' %}
  install_state: "pip: salt_master_packages"
  {%- endif %}

  {%- if pillar.salt.get('master', {}).get('source', {}).version is defined %}
  version: {{ pillar.salt.master.source.version }}
  {%- endif %}
  accept_policy: preseed
  bind: {}
  formula: {}
  base_environment: dev
  dir:
    files: /srv/salt/env
  pillar:
    engine: salt
  max_event_size: 100000000
  minion_data_cache: 'localfs'
{%- endload %}

{%- load_yaml as master_specific %}
Arch:
  pkgs:
  - salt-zmq
Debian:
  pkgs:
  - salt-master
Gentoo:
  pkgs:
  - app-admin/salt
MacOS:
  pkgs:
  - saltstack
RedHat:
  pkgs:
  - salt-master
{%- endload %}

{%- if pillar.salt.master is defined %}
{%- set raw_master = salt['grains.filter_by'](master_specific, merge=salt['pillar.get']('salt:master')) %}
{%- set master = salt['grains.filter_by'](master_common, merge=raw_master) %}
{%- endif %}


{%- load_yaml as syndic_defaults %}
Debian:
  service: salt-syndic
  pkgs:
  - salt-syndic
RedHat:
  service: salt-syndic
  pkgs:
  - salt-syndic
{%- endload %}

{%- set syndic = salt['grains.filter_by'](syndic_defaults, merge=salt['pillar.get']('salt:syndic')) %}


{%- load_yaml as minion_common %}
default:
  graph_pkgs:
  - graphviz
  graph_states_pkgs:
  - python-pydot
  - python-yaml
  graph_states: False
  log:
    level: info
  service: salt-minion
  {%- if pillar.salt.get('minion', {}).get('source', {}).get('engine', 'pkg') == 'pkg' %}
  install_state: "pkg: salt_minion_packages"
  source:
    engine: pkg
  {%- elif pillar.salt.minion.source.engine == 'pip' %}
  install_state: "pip: salt_minion_packages"
  {%- endif %}

  {%- if pillar.salt.get('minion', {}).get('source', {}).version is defined %}
  version: {{ pillar.salt.minion.source.version }}
  {%- endif %}
  max_event_size: 100000000
{%- endload %}

{%- load_yaml as minion_specific %}
Arch:
  pkgs:
  - salt-zmq
Debian:
  pkgs:
  - salt-minion
  dependency_pkgs:
  - python-m2crypto
  - python-psutil
  - python-yaml
  - python-msgpack
  dependency_pkgs_pip:
  - PyYAML
  - M2Crypto
  - psutil
  cert_pkgs:
  - ca-certificates
Gentoo:
  pkgs:
  - app-admin/salt
MacOS:
  pkgs:
  - saltstack
RedHat:
  pkgs:
  - salt-minion
  dependency_pkgs:
  - m2crypto
  - psutils
  - PyYAML
  dependency_pkgs_pip:
  - PyYAML
  - M2Crypto
  - psutil
  cert_pkgs:
  - ca-certificates
{%- endload %}

{%- if pillar.salt.minion is defined %}
{%- set raw_minion = salt['grains.filter_by'](minion_specific, merge=salt['pillar.get']('salt:minion')) %}
{%- set minion = salt['grains.filter_by'](minion_common, merge=raw_minion) %}

{%- if pillar.salt.minion.proxy_minion is defined %}
{% set proxy_minion = salt['grains.filter_by']({
    'Debian': {
        'napalm_pkgs': ['python-pip', 'libxml2-dev', 'libxslt1-dev', 'zlib1g-dev'],
        'napalm_pip_pkgs': ['napalm', 'oauth']
    },
    'RedHat': {
        'napalm_pkgs': ['libxml2-dev', 'libxslt1-dev', 'zlib1g-dev']
    },
}, merge=pillar.salt.minion.get('proxy_minion', {})) %}
{%- endif %}

{%- endif %}


{%- load_yaml as api_common %}
default:
  pkgs:
  - salt-api
  service: salt-api
{%- endload %}

{%- set api = salt['grains.filter_by'](api_common, merge=salt['pillar.get']('salt:api')) %}

{%- load_yaml as control_common %}
default:
  cloud_pips:
  - apache-libcloud
  - netaddr
  cloud_pkgs:
  - python-netaddr
  - python-libcloud
  virt_pips:
  - libvirt-python
  maas_pkgs:
  - python-maas-client
  cluster: {}
{%- endload %}

{%- load_yaml as control_specific %}
Debian:
  virt_pkgs:
  - libvirt-dev
  - pkg-config
{% if grains.oscodename == 'trusty' %}
  - libguestfs-tools
{% endif %}

RedHat:
  virt_pkgs:
  - libvirt-dev
  - pkg-config
{%- endload %}

{%- if pillar.salt.control is defined %}
{%- set raw_control = salt['grains.filter_by'](control_specific, merge=salt['pillar.get']('salt:control')) %}
{%- set control = salt['grains.filter_by'](control_common, merge=raw_control) %}
{%- endif %}
