---
#- hosts: compute
#  sudo: yes
#  tasks:
- name: "enable supervisor vrouter"
  file:
    path: "/etc/init/supervisor-vrouter.override"
    state: "absent"

- include: -node-common.yml

- name: "check cgroup device acl in qemu conf"
  shell: "grep -q '^\\s*cgroup_device_acl' /etc/libvirt/qemu.conf"
  register: deviceacl
  ignore_errors: yes
  changed_when: no

- name: "create cgroup device acl for qemu conf"
  template:
    src: "../../templates/provision/qemu-device-acl-conf.j2"
    dest: "/tmp/qemu-device-acl.conf"
  when: deviceacl | failed

- name: "combination of the qemu configuration"
  shell: "cat /tmp/qemu-device-acl.conf >> /etc/libvirt/qemu.conf"
  when: deviceacl | failed

- name: "delete temporary configuration file"
  file:
    dest: "/tmp/qemu-device-acl.conf"
    state: "absent"
  when: deviceacl | failed

- name: "fix up vrouter nodemgr param"
  template:
    src: "../../templates/provision/vrouter-nodemgr-param.j2"
    dest: "/etc/contrail/vrouter_nodemgr_param"

- name: "set contrail device name for ansible"
  set_fact:
    contrail_ansible_device: "ansible_{{ contrail_device }}"

- name: "fix up default pmac"
  template:
    src: "../../templates/provision/default-pmac.j2"
    dest: "/etc/contrail/default_pmac"

- name: "copy agent param config from template"
  shell: "cp /etc/contrail/agent_param.tmpl /etc/contrail/agent_param"

- name: "modify agent param config"
  lineinfile:
    dest: "/etc/contrail/agent_param"
    regexp: "dev=__DEVICE__"
    line: "dev={{ contrail_device }}"

- name: "fix up contrail vrouter agent config"
  template:
    src: "../../templates/provision/contrail-vrouter-agent-conf.j2"
    dest: "/etc/contrail/contrail-vrouter-agent.conf"

- name: "delete lines for contrail interface"
  shell: "{{ item }}"
  with_items:
    - "sed -e '/auto {{ contrail_device }}/,$d' /etc/network/interfaces > /tmp/contrail-interfaces-top"
    - "sed -n -e '/auto {{ contrail_device }}/,$p' /etc/network/interfaces > /tmp/contrail-interfaces-bottom"
    - "sed -i -e '/auto {{ contrail_device }}/d' /tmp/contrail-interfaces-bottom"
    - "sed -i -n -e '/auto .*/,$p' /tmp/contrail-interfaces-bottom"
    - "cat /tmp/contrail-interfaces-top /tmp/contrail-interfaces-bottom > /etc/network/interfaces"

- name: "delete lines for vrouter interface"
  shell: "{{ item }}"
  with_items:
    - "sed -e '/auto vhost0/,$d' /etc/network/interfaces > /tmp/contrail-interfaces-top"
    - "sed -n -e '/auto vhost0/,$p' /etc/network/interfaces > /tmp/contrail-interfaces-bottom"
    - "sed -i -e '/auto vhost0/d' /tmp/contrail-interfaces-bottom"
    - "sed -i -n -e '/auto .*/,$p' /tmp/contrail-interfaces-bottom"
    - "cat /tmp/contrail-interfaces-top /tmp/contrail-interfaces-bottom > /etc/network/interfaces"

#- name: "configure interface"
#  lineinfile:
#    dest: "/etc/network/interfaces"
#    line: "{{ item }}"
#    state: "present"
#  with_items:
#    - "auto {{ contrail_device }}"
#    - "iface {{ contrail_device }} inet manual"
#    - "\tpre-up ifconfig {{ contrail_device }} up"
#    - "\tpost-down ifconfig {{ contrail_device }} down"
#    - "auto vhost0"
#    - "iface vhost0 inet static"
#    - "\tpre-up /opt/contrail/bin/if-vhost0"
#    - "\tnetwork_name application"
#    - "\taddress {{ contrail_address }}"
#    - "\tnetmask {{ contrail_netmask }}"

- name: "delete temporary files"
  file:
    dest: "{{ item }}"
    state: "absent"
  with_items:
    - "/tmp/contrail-interfaces-top"
    - "/tmp/contrail-interfaces-bottom"

- name: "fix up contrail vrouter nodemgr config"
  ini_file:
    dest: "/etc/contrail/contrail-vrouter-nodemgr.conf"
    section: "DISCOVERY"
    option: "server"
    value: "{{ contrail_haproxy_address }}"

- name: "restart libvirt bin"
  service:
    name: "libvirt-bin"
    state: "restarted"

#- name: "set value of nova to nova config"
#  template:
#    src: "provision/nova.j2"
#    dest: "/etc/nova/nova.conf"
#  when: install_nova 

#- name: "delete values from nova config"
#  ini_file:
#    dest: "/etc/nova/nova.conf"
#    section: "{{ item.section }}"
#    option: "{{ item.option }}"
#  with_items:
#    - { section: "DEFAULT", option: "quantum_auth_strategy" }
#    - { section: "DEFAULT", option: "quantum_admin_auth_url" }
#    - { section: "DEFAULT", option: "quantum_admin_tenant_name" }
#    - { section: "DEFAULT", option: "quantum_admin_username" }
#    - { section: "DEFAULT", option: "quantum_admin_password" }
#    - { section: "DEFAULT", option: "quantum_url" }

#- name: "set values of neutron to nova config"
#  ini_file:
#    dest: "/etc/nova/nova.conf"
#    section: "{{ item.section }}"
#    option: "{{ item.option }}"
#    value: "{{ item.value }}"
#    state: "present"
#  with_items:
#    - { section: "DEFAULT", option: "neutron_admin_auth_url", value: "http://{{ contrail_keystone_address }}:5000/v2.0" }
#    - { section: "DEFAULT", option: "neutron_admin_username", value: "neutron" }
#    - { section: "DEFAULT", option: "neutron_admin_password", value: "{{ contrail_admin_password }}" }
#    - { section: "DEFAULT", option: "neutron_admin_tenant_name", value: "service" }
#    - { section: "DEFAULT", option: "neutron_url", value: "http://{{ contrail_haproxy_address }}:9696/" }
#    - { section: "DEFAULT", option: "neutron_url_timeout", value: "300" }
#    - { section: "DEFAULT", option: "network_api_class", value: "nova.network.neutronv2.api.API" }
#    - { section: "DEFAULT", option: "libvirt_vif_driver", value: "nova_contrail_vif.contrailvif.VRouterVIFDriver" }

#- name: "restart nova compute"
#  service:
#    name: "nova-compute"
#    state: "restarted"

#- name: "add vrouter to contrail"
#  shell: "python /opt/contrail/utils/provision_vrouter.py --api_server_ip {{ contrail_haproxy_address }} --admin_user {{ contrail_admin_user }} --admin_password {{ contrail_admin_password }} --admin_tenant_name admin --openstack_ip {{ contrail_keystone_address }} --oper add --host_name {{ ansible_hostname }} --host_ip {{ contrail_address }}"
#
#- name: "reboot Server"
#  shell: "shutdown -r now"
#  async: 0
#  poll: 0
#  ignore_errors: true
#  notify: Wait for server to come back
#
#handlers:
#- name: "Wait for server to come back"
#  local_action:
#    module: wait_for
#      host={{ inventory_hostname }}
#      port=22
#      delay=30
#      timeout=600