diff --git a/handlers/main.yml b/handlers/main.yml index 3fcc4bea..ec3b3717 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -32,9 +32,7 @@ until: _stop | success retries: 5 delay: 2 - listen: - - "Restart glance services" - - "venv changed" + listen: "Restart glance services" # TODO(odyssey4me): # Assuming glance-registry is removed in the S cycle as planned, this @@ -84,9 +82,7 @@ - "/etc/systemd/system/{{ glance_services['glance-registry']['service_name'] }}.service" when: - not glance_services['glance-registry']['condition'] - listen: - - "Restart glance services" - - "venv changed" + listen: "Restart glance services" # Note (odyssey4me): # The policy.json file is currently read continually by the services @@ -104,9 +100,7 @@ group: "{{ glance_system_group_name }}" mode: "0640" remote_src: yes - listen: - - "Restart glance services" - - "venv changed" + listen: "Restart glance services" - name: Start services service: @@ -119,9 +113,7 @@ until: _start | success retries: 5 delay: 2 - listen: - - "Restart glance services" - - "venv changed" + listen: "Restart glance services" - meta: noop listen: Manage LB diff --git a/tasks/glance_install.yml b/tasks/glance_install.yml index 3bc1b6bf..7bcd566c 100644 --- a/tasks/glance_install.yml +++ b/tasks/glance_install.yml @@ -103,30 +103,113 @@ {% endfor %} when: glance_developer_mode | bool -- name: Build/install the python venv - include_role: - name: "python_venv_build" - private: yes - vars: - distro_package_list: "{{ glance_distro_packages }}" - host_pip_packages: "{{ glance_requires_pip_packages }}" - venv_pip_packages: "{{ glance_pip_packages }}" - host_pip_install_args: >- +- name: Install requires pip packages + pip: + name: "{{ glance_requires_pip_packages }}" + state: "{{ glance_pip_package_state }}" + extra_args: >- {{ glance_developer_mode | ternary(pip_install_developer_constraints | default('--constraint /opt/developer-pip-constraints.txt'), '') }} {{ (pip_install_upper_constraints is defined) | ternary('--constraint ' + pip_install_upper_constraints | default(''),'') }} {{ pip_install_options | default('') }} - venv_pip_install_args: >- + register: install_packages + until: install_packages|success + retries: 5 + delay: 2 + +- name: Retrieve checksum for venv download + uri: + url: "{{ glance_venv_download_url | replace('tgz', 'checksum') }}" + return_content: yes + register: glance_venv_checksum + when: glance_venv_download | bool + +- name: Attempt venv download + get_url: + url: "{{ glance_venv_download_url }}" + dest: "/var/cache/{{ glance_venv_download_url | basename }}" + checksum: "sha1:{{ glance_venv_checksum.content | trim }}" + register: glance_get_venv + when: glance_venv_download | bool + +- name: Remove existing venv + file: + path: "{{ glance_bin | dirname }}" + state: absent + when: glance_get_venv | changed + +- name: Create glance venv dir + file: + path: "{{ glance_bin | dirname }}" + state: directory + register: glance_venv_dir + when: glance_get_venv | changed + +- name: Unarchive pre-built venv + unarchive: + src: "/var/cache/{{ glance_venv_download_url | basename }}" + dest: "{{ glance_bin | dirname }}" + copy: "no" + when: glance_get_venv | changed + notify: + - Manage LB + - Restart glance services + +- name: Install pip packages + pip: + name: "{{ glance_pip_packages }}" + state: "{{ glance_pip_package_state }}" + virtualenv: "{{ glance_bin | dirname }}" + virtualenv_site_packages: "no" + extra_args: >- {{ glance_developer_mode | ternary(pip_install_developer_constraints | default('--constraint /opt/developer-pip-constraints.txt'), '') }} {{ (pip_install_upper_constraints is defined) | ternary('--constraint ' + pip_install_upper_constraints | default(''),'') }} {{ pip_install_options | default('') }} - venv_destination_path: "{{ glance_bin | dirname }}" - venv_facts_when_changed: - - section: "glance" - option: "need_service_restart" - value: True - - section: "glance" - option: "venv_tag" - value: "{{ glance_venv_tag }}" + register: install_packages + until: install_packages|success + retries: 5 + delay: 2 + when: glance_get_venv | failed or glance_get_venv | skipped + notify: + - Manage LB + - Restart glance services + +- name: Remove python from path first (CentOS, openSUSE) + file: + path: "{{ glance_bin | dirname }}/bin/python2.7" + state: "absent" + when: + - ansible_pkg_mgr in ['yum', 'dnf', 'zypper'] + - glance_get_venv | changed + +- name: Update virtualenv path + shell: | + find {{ glance_bin }} -name \*.pyc -delete + sed -si '1s/^.*python.*$/#!{{ glance_bin | replace ('/','\/') }}\/python/' {{ glance_bin }}/* + virtualenv {{ glance_bin | dirname }} + when: glance_get_venv | changed + tags: + - skip_ansible_lint + +- name: Record the need for a service restart + ini_file: + dest: "/etc/ansible/facts.d/openstack_ansible.fact" + section: glance + option: need_service_restart + value: True + when: (glance_get_venv | changed) or + (glance_venv_dir | changed) or + (install_packages | changed) or + (ansible_local is not defined) or + ('openstack_ansible' not in ansible_local) or + ('glance' not in ansible_local['openstack_ansible']) or + ('need_service_restart' not in ansible_local['openstack_ansible']['glance']) + +- name: Record the venv tag deployed + ini_file: + dest: "/etc/ansible/facts.d/openstack_ansible.fact" + section: glance + option: venv_tag + value: "{{ glance_venv_tag }}" - name: Create TEMP run dir file: