---
- name: Allowing IP forwarding on network node
  sysctl: name="net.ipv4.ip_forward" value=1 sysctl_set=yes
  when:
    - set_sysctl | bool
    - inventory_hostname in groups['neutron-agents']

- name: Disabling reverse path filter on network node
  sysctl: name="net.ipv4.conf.{{ item }}.rp_filter" value=0 sysctl_set=yes
  with_items:
    - "all"
    - "default"
  when:
    - set_sysctl | bool
    - inventory_hostname in groups['neutron-agents']

- name: Ensuring config directories exist
  file:
    path: "{{ node_config_directory }}/{{ item }}"
    state: "directory"
    recurse: yes
  with_items:
    - "neutron-agents"
    - "neutron-linuxbridge-agent"
    - "neutron-openvswitch-agent"
    - "neutron-server"
    - "openvswitch-db-server"
    - "openvswitch-vswitchd"

- name: Copying over config.json files for services
  template:
    src: "{{ item }}.json.j2"
    dest: "{{ node_config_directory }}/{{ item }}/config.json"
  with_items:
    - "neutron-agents"
    - "neutron-linuxbridge-agent"
    - "neutron-openvswitch-agent"
    - "neutron-server"
    - "openvswitch-db-server"
    - "openvswitch-vswitchd"

- name: Copying over neutron.conf
  merge_configs:
    vars:
      service_name: "{{ item }}"
    sources:
      - "{{ role_path }}/templates/neutron.conf.j2"
      - "/etc/kolla/config/global.conf"
      - "/etc/kolla/config/database.conf"
      - "/etc/kolla/config/messaging.conf"
      - "/etc/kolla/config/neutron.conf"
      - "/etc/kolla/config/neutron/{{ item }}.conf"
    dest: "{{ node_config_directory }}/{{ item }}/neutron.conf"
  with_items:
    - "neutron-agents"
    - "neutron-linuxbridge-agent"
    - "neutron-openvswitch-agent"
    - "neutron-server"

- name: Copying over ml2_conf.ini
  merge_configs:
    vars:
      service_name: "{{ item }}"
    sources:
      - "{{ role_path }}/templates/ml2_conf.ini.j2"
      - "/etc/kolla/config/neutron/ml2_conf.ini"
    dest: "{{ node_config_directory }}/{{ item }}/ml2_conf.ini"
  with_items:
    - "neutron-server"
    - "neutron-agents"
    - "neutron-linuxbridge-agent"
    - "neutron-openvswitch-agent"

- name: Copying over dhcp_agent.ini
  merge_configs:
    vars:
      service_name: "{{ item }}"
    sources:
      - "{{ role_path }}/templates/dhcp_agent.ini.j2"
      - "/etc/kolla/config/neutron/dhcp_agent.ini"
    dest: "{{ node_config_directory }}/{{ item }}/dhcp_agent.ini"
  with_items:
    - "neutron-agents"

- name: Copying over dnsmasq.conf
  template:
    src: "dnsmasq.conf.j2"
    dest: "{{ node_config_directory }}/neutron-agents/dnsmasq.conf"

- name: Copying over l3_agent.ini
  merge_configs:
    vars:
      service_name: "{{ item }}"
    sources:
      - "{{ role_path }}/templates/l3_agent.ini.j2"
      - "/etc/kolla/config/neutron/l3_agent.ini"
    dest: "{{ node_config_directory }}/{{ item }}/l3_agent.ini"
  with_items:
    - "neutron-agents"

- name: Copying over metadata_agent.ini
  merge_configs:
    vars:
      service_name: "{{ item }}"
    sources:
      - "{{ role_path }}/templates/metadata_agent.ini.j2"
      - "/etc/kolla/config/neutron/metadata_agent.ini"
    dest: "{{ node_config_directory }}/{{ item }}/metadata_agent.ini"
  with_items:
    - "neutron-agents"