---
- name: Ensuring config directory exists
  file:
    path: "{{ node_config_directory }}/{{ item }}"
    state: "directory"
  with_items:
    - "nova-compute"
    - "nova-libvirt/secrets"
  when: inventory_hostname in groups['compute']

- name: Copying over config(s)
  template:
    src: roles/ceph/templates/ceph.conf.j2
    dest: "{{ node_config_directory }}/{{ item }}/ceph.conf"
  with_items:
    - "nova-compute"
    - "nova-libvirt"
  when: inventory_hostname in groups['compute']

# TODO(SamYaple): Improve failed_when and changed_when tests
- name: Creating ceph pool for vms
  command: docker exec ceph_mon ceph osd pool create vms 128
  delegate_to: "{{ groups['ceph-mon'][0] }}"
  changed_when: False
  failed_when: False
  run_once: True

# TODO(SamYaple): Improve failed_when and changed_when tests
- name: Pulling cephx keyring for nova
  command: docker exec ceph_mon ceph auth get-or-create client.nova mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images'
  register: cephx_key
  delegate_to: "{{ groups['ceph-mon'][0] }}"
  changed_when: False
  run_once: True

# TODO(SamYaple): Improve failed_when and changed_when tests
- name: Pulling cephx keyring for libvirt
  command: docker exec ceph_mon ceph auth get-key client.nova
  register: cephx_raw_key
  delegate_to: "{{ groups['ceph-mon'][0] }}"
  changed_when: False
  run_once: True

- name: Pushing cephx keyring for nova
  copy:
    content: "{{ cephx_key.stdout }}\n\r"
    dest: "{{ node_config_directory }}/nova-compute/ceph.client.nova.keyring"
    mode: "0600"
  when: inventory_hostname in groups['compute']

- name: Pushing secrets xml for libvirt
  template:
    src: roles/nova/templates/secret.xml.j2
    dest: "{{ node_config_directory }}/nova-libvirt/secrets/{{ rbd_secret_uuid }}.xml"
    mode: "0600"
  when: inventory_hostname in groups['compute']

- name: Pushing secrets key for libvirt
  copy:
    content: "{{ cephx_raw_key.stdout }}"
    dest: "{{ node_config_directory }}/nova-libvirt/secrets/{{ rbd_secret_uuid }}.base64"
    mode: "0600"
  when: inventory_hostname in groups['compute']