/home/zuul/src/opendev.org/openstack/openstack-ansible-ceph_client/tasks/ceph_install_python_libs.yml
---
# Copyright 2014, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

- name: Find the venv's python version
  find:
    paths: "{{ openstack_service_venv_bin | dirname }}/lib/"
    patterns: "python*"
    file_type: directory
    recurse: no
  register: python_venv_details

- name: Set python venvs details
  set_fact:
    venv_python_lib_folder: "{{ python_venv_details.files[0].path }}"
    ceph_python_interp: "/usr/bin/{{ ((python_venv_details.files[0].path | basename)[:-2] == 'python3') | ternary('python3', 'python') }}"

- name: Register rados module path
  command: "{{ ceph_python_interp }} -c 'import rados; print(rados.__file__)'"
  changed_when: false
  register: rados_module_path

- name: Register rbd module path
  command: "{{ ceph_python_interp }} -c 'import rbd; print(rbd.__file__)'"
  changed_when: false
  register: rbd_module_path

- name: Register cephfs module path
  command: "{{ ceph_python_interp }} -c 'import cephfs; print(cephfs.__file__)'"
  changed_when: false
  failed_when: false
  register: cephfs_module_path

- name: Register ceph_volume_client path
  command: "{{ ceph_python_interp }} -c 'import ceph_volume_client; print(ceph_volume_client.__file__)'"
  changed_when: false
  failed_when: false
  register: ceph_volume_client_module_path

- name: Register ceph_argparse path
  command: "{{ ceph_python_interp }} -c 'import ceph_argparse; print(ceph_argparse.__file__)'"
  changed_when: false
  failed_when: false
  register: ceph_argparse_module_path

- name: Link rados module into the venv
  file:
    src: "{{ rados_module_path.stdout | replace('.pyc', '.py') }}"
    dest: "{{ venv_python_lib_folder }}/site-packages/{{ rados_module_path.stdout | basename | replace('.pyc', '.py') }}"
    state: link
    force: "yes"
  notify:
    - Restart os services

- name: Link rbd module into the venv
  file:
    src: "{{ rbd_module_path.stdout | replace('.pyc', '.py') }}"
    dest: "{{ venv_python_lib_folder }}/site-packages/{{ rbd_module_path.stdout | basename | replace('.pyc', '.py') }}"
    state: link
    force: "yes"
  notify:
    - Restart os services

- name: Link cephfs module into the venv
  file:
    src: "{{ cephfs_module_path.stdout | replace('.pyc', '.py') }}"
    dest: "{{ venv_python_lib_folder }}//site-packages/{{ cephfs_module_path.stdout | basename | replace('.pyc', '.py') }}"
    state: link
    force: "yes"
  when:
    - cephfs_module_path.rc == 0
  notify:
    - Restart os services

- name: Link ceph_volume_client module into the venv
  file:
    src: "{{ ceph_volume_client_module_path.stdout | replace('.pyc', '.py') }}"
    dest: "{{ venv_python_lib_folder }}/site-packages/{{ ceph_volume_client_module_path.stdout | basename | replace('.pyc', '.py') }}"
    state: link
    force: "yes"
  when:
    - ceph_volume_client_module_path.rc == 0
  notify:
    - Restart os services

- name: Link ceph_argparse module into the venv
  file:
    src: "{{ ceph_argparse_module_path.stdout | replace('.pyc', '.py') }}"
    dest: "{{ venv_python_lib_folder }}/site-packages/{{ ceph_argparse_module_path.stdout | basename | replace('.pyc', '.py') }}"
    state: link
    force: "yes"
  when:
    - ceph_argparse_module_path.rc == 0
  notify:
    - Restart os services