diff --git a/defaults/main.yml b/defaults/main.yml index e496e87..83c59f4 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -134,8 +134,11 @@ gnocchi_services: service_name: "gnocchi-api" service_enabled: true init_config_overrides: "{{ gnocchi_api_init_overrides }}" - execstarts: "{{ gnocchi_bin }}/uwsgi --autoload --ini /etc/uwsgi/gnocchi-api.ini" - execreloads: "{{ gnocchi_bin }}/uwsgi --reload /var/run/gnocchi-api/gnocchi-api.pid" + wsgi_app: True + wsgi_path: "{{ gnocchi_bin }}/gnocchi-api" + uwsgi_bind_address: "{{ gnocchi_service_address }}" + uwsgi_port: "{{ gnocchi_service_port }}" + uwsgi_overrides: "{{ gnocchi_uwsgi_conf_overrides }}" gnocchi-metricd: group: "gnocchi_metricd" service_name: "gnocchi-metricd" @@ -153,7 +156,6 @@ gnocchi_pip_packages: - kazoo - redis - systemd-python - - uwsgi # This variable is used by the repo_build process to determine # which host group to check for members of before building the diff --git a/handlers/main.yml b/handlers/main.yml index 76d4bce..8856b27 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -15,14 +15,14 @@ - name: Stop services service: - name: "{{ item.value.service_name }}" + name: "{{ item.service_name }}" enabled: yes state: "stopped" daemon_reload: yes - with_dict: "{{ gnocchi_services }}" + with_items: "{{ filtered_gnocchi_services }}" when: - - "item.value.group in group_names" - - item.value.service_enabled | bool + - "item.group in group_names" + - item.service_enabled | bool register: _stop until: _stop is success retries: 5 @@ -53,14 +53,14 @@ - name: Start services service: - name: "{{ item.value.service_name }}" + name: "{{ item.service_name }}" enabled: yes state: "started" daemon_reload: yes - with_dict: "{{ gnocchi_services }}" + with_items: "{{ filtered_gnocchi_services }}" when: - - "item.value.group in group_names" - - item.value.service_enabled | bool + - "item.group in group_names" + - item.service_enabled | bool register: _start until: _start is success retries: 5 diff --git a/tasks/gnocchi_post_install.yml b/tasks/gnocchi_post_install.yml index 8d20997..4d5f23e 100644 --- a/tasks/gnocchi_post_install.yml +++ b/tasks/gnocchi_post_install.yml @@ -47,26 +47,9 @@ content: "{{ gnocchi_policy_user_content | default(gnocchi_policy_default_content, true) }}" notify: - Restart gnocchi services + - Restart uwsgi services - Restart web server -- name: Configurng uWSGI - block: - - name: Ensure uWSGI directory exists - file: - path: "/etc/uwsgi/" - state: directory - mode: "0711" - - name: Apply uWSGI configuration - config_template: - src: "gnocchi-uwsgi.ini.j2" - dest: "/etc/uwsgi/gnocchi-api.ini" - mode: "0644" - config_overrides: "{{ gnocchi_uwsgi_conf_overrides }}" - config_type: ini - notify: - - Restart gnocchi services - when: "'gnocchi_api' in group_names" - # NOTE(noonedeadpunk): This task is created due to migration from apache to uwsgi # which was introduced during train release. It can be dropped afterwards. - name: Drop Apache related configs diff --git a/tasks/main.yml b/tasks/main.yml index 9bd1ed9..3365318 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -83,6 +83,16 @@ - gnocchi-config - systemd-service +- name: Import uwsgi role + import_role: + name: uwsgi + vars: + uwsgi_services: "{{ uwsgi_gnocchi_services }}" + uwsgi_install_method: "source" + tags: + - gnocchi-config + - uwsgi + - import_tasks: service_setup.yml vars: _service_adminuri_insecure: "{{ keystone_service_adminuri_insecure }}" diff --git a/templates/gnocchi-uwsgi.ini.j2 b/templates/gnocchi-uwsgi.ini.j2 deleted file mode 100644 index 21ddcde..0000000 --- a/templates/gnocchi-uwsgi.ini.j2 +++ /dev/null @@ -1,25 +0,0 @@ -[uwsgi] -uid = {{ gnocchi_system_user_name }} -gid = {{ gnocchi_system_group_name }} - -virtualenv = /openstack/venvs/gnocchi-{{ gnocchi_venv_tag }} -wsgi-file = {{ gnocchi_bin }}/gnocchi-api -http-socket = {{ gnocchi_service_address }}:{{ gnocchi_service_port }} - -master = true -enable-threads = true -processes = {{ gnocchi_wsgi_processes }} -threads = {{ gnocchi_wsgi_threads }} -exit-on-reload = true -die-on-term = true -lazy-apps = true -add-header = Connection: close -buffer-size = 65535 -thunder-lock = true -disable-logging = true -http-auto-chunked = true -http-raw-body = true -socket-timeout = 10 - -# Avoid filling up the logs with health check requests from haproxy. -route-user-agent = ^osa-haproxy-healthcheck$ donotlog: diff --git a/tests/ansible-role-requirements.yml b/tests/ansible-role-requirements.yml index 7e61dc0..cff3d0d 100644 --- a/tests/ansible-role-requirements.yml +++ b/tests/ansible-role-requirements.yml @@ -58,3 +58,7 @@ src: https://opendev.org/openstack/ansible-role-python_venv_build scm: git version: master +- name: uwsgi + src: https://opendev.org/openstack/ansible-role-uwsgi + scm: git + version: master diff --git a/vars/main.yml b/vars/main.yml index 70af97a..4a804db 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -28,7 +28,8 @@ filtered_gnocchi_services: |- {% for name, service in gnocchi_services.items() %} {% if (service['group'] in group_names) and (('service_enabled' not in service) or - ('service_enabled' in service and service['service_enabled'])) %} + ('service_enabled' in service and service['service_enabled'])) + and not ('wsgi_app' in service and service['wsgi_app']) %} {% set _ = service.update( { 'service_key': name, @@ -48,3 +49,24 @@ filtered_gnocchi_services: |- {% endif %} {% endfor %} {{ services }} + +uwsgi_gnocchi_services: |- + {% set services = {} %} + {% for name, service in gnocchi_services.items() %} + {% if (service['group'] in group_names) and + (('service_enabled' not in service) or + ('service_enabled' in service and service['service_enabled'])) + and ('wsgi_app' in service and service['wsgi_app']) %} + {% set _ = service.update( + { + 'wsgi_venv': gnocchi_bin | dirname, + 'uwsgi_uid': gnocchi_system_user_name, + 'uwsgi_guid': gnocchi_system_group_name, + 'uwsgi_processes': gnocchi_wsgi_processes, + 'uwsgi_threads': gnocchi_wsgi_threads, + } + ) %} + {% set _ = services.update({name: service}) %} + {% endif %} + {% endfor %} + {{ services }}