- name: Set mailman site root fact
  set_fact:
    mm_site_root: "/srv/mailman/{{ mailman_site.name }}"
    cacheable: no

- name: Create mm site dirs
  file:
    path: "{{ inner_site_dir }}"
    state: directory
    owner: list
    group: list
    mode: '2775'
  loop:
    - "{{ mm_site_root }}/"
    - "{{ mm_site_root }}/etc"
    - "{{ mm_site_root }}/lists"
    - "{{ mm_site_root }}/logs"
    - "{{ mm_site_root }}/locks"
    - "{{ mm_site_root }}/data"
    - "{{ mm_site_root }}/spam"
    - "{{ mm_site_root }}/mail"
    - "{{ mm_site_root }}/run"
    - "{{ mm_site_root }}/archives"
    - "{{ mm_site_root }}/archives/public"
    - "{{ mm_site_root }}/archives/private"
    - "{{ mm_site_root }}/templates"
    - "{{ mm_site_root }}/qfiles"
    - "{{ mm_site_root }}/qfiles/in"
    - "{{ mm_site_root }}/qfiles/out"
    - "{{ mm_site_root }}/qfiles/commands"
    - "{{ mm_site_root }}/qfiles/bounces"
    - "{{ mm_site_root }}/qfiles/news"
    - "{{ mm_site_root }}/qfiles/archive"
    - "{{ mm_site_root }}/qfiles/shunt"
    - "{{ mm_site_root }}/qfiles/virgin"
    - "{{ mm_site_root }}/qfiles/bad"
    - "{{ mm_site_root }}/qfiles/retry"
    - "{{ mm_site_root }}/qfiles/maildir"
  loop_control:
    loop_var: inner_site_dir

- name: Link html templates into site
  file:
    state: link
    src: "/usr/share/mailman/{{ site_language }}"
    dest: "{{ mm_site_root }}/templates/{{ site_language }}"
    owner: root
    group: root
  loop: "{{ mailman_site.install_languages }}"
  loop_control:
    loop_var: site_language

- name: Create openstack specific en templates dir
  file:
    state: directory
    path: /srv/mailman/openstack/templates/en
    owner: root
    group: list
    mode: '0755'
  when: mailman_site.name == "openstack"
- name: Copy openstack specific en templates into site
  synchronize:
    src: openstack/html-templates-en/
    dest: /srv/mailman/openstack/templates/en
    rsync_opts:
      - "--usermap=*:root"
      - "--groupmap=*:list"
  when: mailman_site.name == "openstack"

- name: Create site specific config
  template:
    src: mm_site_cfg.py.j2
    dest: "{{ mm_site_root }}/etc/mm_cfg_local.py"
    owner: root
    group: root
    mode: '0444'

- name: Create normal mailman vhost config
  template:
    src: mailman_multihost.vhost.j2
    dest: "/etc/apache2/sites-enabled/50-{{ mailman_site.listdomain }}.conf"
    owner: root
    group: root
    mode: '0644'
  notify: mailman site reload apache2

- name: Create site init script
  template:
    src: mailman.init.j2
    dest: "/etc/init.d/mailman-{{ mailman_site.name }}"
    owner: root
    group: root
    mode: '0755'

- name: Enable mailman site service
  service:
    name: "mailman-{{ mailman_site.name }}"
    enabled: yes

- name: Create mailman site lists
  include_role:
    name: mailman-list
  vars:
    mm_site_name: "{{ mailman_site.name }}"
    mm_site_listdomain: "{{ mailman_site.listdomain }}"
    mm_list_name: "{{ site_list.name }}"
    mm_list_description: "{{ site_list.description }}"
    mm_list_admin: "{{ site_list.admin }}"
    mm_list_password: "{{ site_list.password }}"
  loop: "{{ mailman_site.lists }}"
  loop_control:
    loop_var: site_list