From 76a1b307a0208aed2a5ea4b68373d1bfef66fd0c Mon Sep 17 00:00:00 2001 From: Chandan Kumar Date: Mon, 28 Jan 2019 16:11:54 +0530 Subject: [PATCH] Use venv_packages_to_symlink to symlink to import libvirt-python Currently on CentOS7, while deploying nova, it gives libvirt module import error. By adding venv_packages_to_symlink in nova_source_install will symlink the packages defined in nova_compute_kvm_packages_to_symlink and fixes the issue. It removes nova_compute_kvm_install.yml to use python_venv_build role. Change-Id: I20a181c6c4901b3cc846a9f665e5def98aac5059 --- .../drivers/kvm/nova_compute_kvm_install.yml | 4 -- .../kvm/nova_compute_kvm_install_source.yml | 56 ------------------- tasks/nova_install_source.yml | 1 + 3 files changed, 1 insertion(+), 60 deletions(-) delete mode 100644 tasks/drivers/kvm/nova_compute_kvm_install_source.yml diff --git a/tasks/drivers/kvm/nova_compute_kvm_install.yml b/tasks/drivers/kvm/nova_compute_kvm_install.yml index 14fe7978..34e4216d 100644 --- a/tasks/drivers/kvm/nova_compute_kvm_install.yml +++ b/tasks/drivers/kvm/nova_compute_kvm_install.yml @@ -54,7 +54,3 @@ state: link owner: "{{ nova_qemu_user }}" group: "{{ nova_qemu_group }}" - -- name: Install nova kvm packages from PIP - include_tasks: nova_compute_kvm_install_source.yml - when: nova_install_method == 'source' diff --git a/tasks/drivers/kvm/nova_compute_kvm_install_source.yml b/tasks/drivers/kvm/nova_compute_kvm_install_source.yml deleted file mode 100644 index 94ca6820..00000000 --- a/tasks/drivers/kvm/nova_compute_kvm_install_source.yml +++ /dev/null @@ -1,56 +0,0 @@ ---- -# Copyright 2018, SUSE Linux GmbH -# -# 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. - -# Note (odyssey4me): -# These python libraries have C bindings which tend to be very -# particular about the version of their companion packages. -# To ensure things run smoothly for stable releases, we opt to -# use the distro packages for these and symlink the appropriate -# library files and binding into the venv. - -- name: Find the venv's python version - find: - paths: "{{ nova_bin | dirname }}/lib/" - patterns: "python*" - file_type: directory - recurse: no - register: python_venv_details - -- name: Set python venvs details - set_fact: - venv_python_version: "{{ (python_venv_details.files[0].path | basename) }}" - venv_python_major_version: "{{ (python_venv_details.files[0].path | basename)[:-2] }}" - venv_python_lib_folder: "{{ python_venv_details.files[0].path }}" - -- name: Search for lib files to link - shell: >- - {{ (ansible_pkg_mgr == 'apt') | ternary('dpkg -L ' ~ (nova_compute_kvm_packages_to_symlink | join(' ')), 'rpm -ql ' ~ (nova_compute_kvm_packages_to_symlink | join(' ')) ) }} - | egrep '^.*{{ venv_python_major_version }}.*/(site|dist)-packages/.*' - args: - warn: no - changed_when: false - register: _python_files - tags: - - nova-pip-packages - -- name: Link the python host package files into venv - file: - src: "{{ item }}" - dest: "{{ venv_python_lib_folder }}/site-packages/{{ item | basename }}" - state: link - force: yes - with_items: "{{ _python_files.stdout_lines }}" - tags: - - nova-pip-packages diff --git a/tasks/nova_install_source.yml b/tasks/nova_install_source.yml index ba45d227..7782a4dc 100644 --- a/tasks/nova_install_source.yml +++ b/tasks/nova_install_source.yml @@ -43,6 +43,7 @@ venv_build_distro_package_list: "{{ nova_devel_distro_packages }}" venv_install_destination_path: "{{ nova_bin | dirname }}" venv_pip_install_args: "{{ nova_pip_install_args }}" + venv_packages_to_symlink: "{{ (nova_services['nova-compute']['group'] in group_names) | ternary(nova_compute_kvm_packages_to_symlink, []) }}" venv_pip_packages: >- {{ nova_pip_packages + ((nova_services['nova-novncproxy']['group'] in group_names) and (nova_console_type == 'novnc')) | ternary(nova_novnc_pip_packages, []) +