From cfcb90aa505349cf24a50edd94396a57dc4ed0c9 Mon Sep 17 00:00:00 2001 From: Julen Landa Alustiza Date: Nov 21 2019 08:25:57 +0000 Subject: [PATCH 1/9] Set default.target instead of multi-user.targer for --user systemctl unit files From man 7 systemd.special: Special User Units When systemd runs as a user instance, the following special units are available: default.target This is the main target of the user session, started by default. Various services that compose the normal user session should be pulled into this target. In this regard, default.target is similar to multi-user.target in the system instance, but it is a real unit, not an alias. So move them to default.target --- diff --git a/dev/ansible/roles/pagure-dev/files/pagure-docs.service b/dev/ansible/roles/pagure-dev/files/pagure-docs.service index 6d3d13b..76b9754 100644 --- a/dev/ansible/roles/pagure-dev/files/pagure-docs.service +++ b/dev/ansible/roles/pagure-dev/files/pagure-docs.service @@ -9,4 +9,4 @@ ExecStart=/home/vagrant/.virtualenvs/python3-pagure/bin/python \ Type=simple [Install] -WantedBy=multi-user.target +WantedBy=default.target diff --git a/dev/ansible/roles/pagure-dev/files/pagure.service b/dev/ansible/roles/pagure-dev/files/pagure.service index ce4f95e..eca15db 100644 --- a/dev/ansible/roles/pagure-dev/files/pagure.service +++ b/dev/ansible/roles/pagure-dev/files/pagure.service @@ -8,4 +8,4 @@ ExecStart=/home/vagrant/.virtualenvs/python3-pagure/bin/python %h/devel/runserve Type=simple [Install] -WantedBy=multi-user.target +WantedBy=default.target diff --git a/dev/ansible/roles/pagure-dev/files/pagure_ci.service b/dev/ansible/roles/pagure-dev/files/pagure_ci.service index 4e0d88f..9b2e226 100644 --- a/dev/ansible/roles/pagure-dev/files/pagure_ci.service +++ b/dev/ansible/roles/pagure-dev/files/pagure_ci.service @@ -10,4 +10,4 @@ ExecStart=/home/vagrant/.virtualenvs/python3-pagure/bin/python \ Type=simple [Install] -WantedBy=multi-user.target +WantedBy=default.target diff --git a/dev/ansible/roles/pagure-dev/files/pagure_ev.service b/dev/ansible/roles/pagure-dev/files/pagure_ev.service index ea7dd71..914c4d3 100644 --- a/dev/ansible/roles/pagure-dev/files/pagure_ev.service +++ b/dev/ansible/roles/pagure-dev/files/pagure_ev.service @@ -10,4 +10,4 @@ ExecStart=/home/vagrant/.virtualenvs/python3-pagure/bin/python \ Type=simple [Install] -WantedBy=multi-user.target +WantedBy=default.target diff --git a/dev/ansible/roles/pagure-dev/files/pagure_webhook.service b/dev/ansible/roles/pagure-dev/files/pagure_webhook.service index e856a88..2555553 100644 --- a/dev/ansible/roles/pagure-dev/files/pagure_webhook.service +++ b/dev/ansible/roles/pagure-dev/files/pagure_webhook.service @@ -10,4 +10,4 @@ ExecStart=/home/vagrant/.virtualenvs/python3-pagure/bin/python \ Type=simple [Install] -WantedBy=multi-user.target +WantedBy=default.target diff --git a/dev/ansible/roles/pagure-dev/files/pagure_worker.service b/dev/ansible/roles/pagure-dev/files/pagure_worker.service index 7994cef..ae1bdb8 100644 --- a/dev/ansible/roles/pagure-dev/files/pagure_worker.service +++ b/dev/ansible/roles/pagure-dev/files/pagure_worker.service @@ -10,4 +10,4 @@ Type=simple Restart=on-failure [Install] -WantedBy=multi-user.target +WantedBy=default.target From b1ed82f29aebb12ff94c145c4f3eedb791153eb0 Mon Sep 17 00:00:00 2001 From: Julen Landa Alustiza Date: Nov 21 2019 08:49:33 +0000 Subject: [PATCH 2/9] Vagrant provisioning ansible role: enable & start services instead of just enabling it --- diff --git a/dev/ansible/roles/pagure-dev/tasks/main.yml b/dev/ansible/roles/pagure-dev/tasks/main.yml index b611751..c446597 100644 --- a/dev/ansible/roles/pagure-dev/tasks/main.yml +++ b/dev/ansible/roles/pagure-dev/tasks/main.yml @@ -206,12 +206,13 @@ - pagure_webhook.service - pagure_worker.service -- name: Enable the Pagure systemd services +- name: Enable and start the Pagure systemd services become: False systemd: daemon_reload: yes name: "{{ item }}" enabled: True + state: started scope: user with_items: - pagure From e12e49f0a20549e0663ddf93b0a091287f336c3a Mon Sep 17 00:00:00 2001 From: Julen Landa Alustiza Date: Nov 21 2019 08:51:05 +0000 Subject: [PATCH 3/9] Vagrant provisioning ansible role: reorder tasks so the register and the task that check the registered var are together --- diff --git a/dev/ansible/roles/pagure-dev/tasks/main.yml b/dev/ansible/roles/pagure-dev/tasks/main.yml index c446597..97a4354 100644 --- a/dev/ansible/roles/pagure-dev/tasks/main.yml +++ b/dev/ansible/roles/pagure-dev/tasks/main.yml @@ -58,12 +58,6 @@ - python3-virtualenv state: present -- name: register the libgit2 version installed - shell: rpm -q libgit2|cut -d \- -f 2| cut -d \. -f 1,2 - register: libgit2_version - args: - warn: false - # Add various helpful configuration files - name: Install a custom bashrc become_user: "{{ ansible_env.SUDO_USER }}" @@ -84,6 +78,12 @@ become_user: "{{ ansible_env.SUDO_USER }}" copy: src=bash_history dest=/home/{{ ansible_env.SUDO_USER }}/.bash_history +- name: register the libgit2 version installed + shell: rpm -q libgit2|cut -d \- -f 2| cut -d \. -f 1,2 + register: libgit2_version + args: + warn: false + # Install Pagure inside a virtualenv and configure it - name: Install pygit2 in the virtualenv become_user: "{{ ansible_env.SUDO_USER }}" From b6d648d9818e87cee8c4cc0c538b7d68292317b7 Mon Sep 17 00:00:00 2001 From: Julen Landa Alustiza Date: Nov 21 2019 08:53:35 +0000 Subject: [PATCH 4/9] Vagrant provisioning ansible role: remove duplicated tasks --- diff --git a/dev/ansible/roles/pagure-dev/tasks/main.yml b/dev/ansible/roles/pagure-dev/tasks/main.yml index 97a4354..464b4dd 100644 --- a/dev/ansible/roles/pagure-dev/tasks/main.yml +++ b/dev/ansible/roles/pagure-dev/tasks/main.yml @@ -94,15 +94,6 @@ virtualenv_python: python3 virtualenv_command: virtualenv -# Install Pagure inside a virtualenv and configure it for python3 -- name: Install pygit2 in the python3 virtualenv - become_user: "{{ ansible_env.SUDO_USER }}" - pip: - name: - - "pygit2=={{ libgit2_version.stdout_lines[0] }}.*" - virtualenv: /home/{{ ansible_env.SUDO_USER }}/.virtualenvs/python3-pagure/ - virtualenv_python: python3 - - name: Install Pagure Python dependencies into a virtualenv become_user: "{{ ansible_env.SUDO_USER }}" pip: @@ -114,17 +105,6 @@ - "requirements-ev.txt" - "requirements-testing.txt" -- name: Install Pagure Python dependencies into a python3 virtualenv - become_user: "{{ ansible_env.SUDO_USER }}" - pip: - requirements: /home/{{ ansible_env.SUDO_USER }}/devel/{{ item }} - virtualenv: /home/{{ ansible_env.SUDO_USER }}/.virtualenvs/python3-pagure/ - virtualenv_python: python3 - with_items: - - "requirements.txt" - - "requirements-ev.txt" - - "requirements-testing.txt" - - name: Install Pagure package into a virtualenv become_user: "{{ ansible_env.SUDO_USER }}" pip: From bd86ebcfb33a3a7472fb16a6ddd3434185eb549e Mon Sep 17 00:00:00 2001 From: Julen Landa Alustiza Date: Nov 21 2019 08:59:35 +0000 Subject: [PATCH 5/9] Vagrant provisioning ansible role: use same virtualenv and pip args that we are using on the rest of environments --- diff --git a/dev/ansible/roles/pagure-dev/tasks/main.yml b/dev/ansible/roles/pagure-dev/tasks/main.yml index 464b4dd..ba0dda9 100644 --- a/dev/ansible/roles/pagure-dev/tasks/main.yml +++ b/dev/ansible/roles/pagure-dev/tasks/main.yml @@ -100,6 +100,9 @@ requirements: /home/{{ ansible_env.SUDO_USER }}/devel/{{ item }} virtualenv: /home/{{ ansible_env.SUDO_USER }}/.virtualenvs/python3-pagure/ virtualenv_command: virtualenv + virtualenv_python: python3 + virtualenv_site_packages: yes + extra_args: --no-use-pep517 with_items: - "requirements.txt" - "requirements-ev.txt" From ad308dce4f52afea0f65c21a1fbf149d60a434a6 Mon Sep 17 00:00:00 2001 From: Julen Landa Alustiza Date: Nov 21 2019 09:21:02 +0000 Subject: [PATCH 6/9] Vagrant provisioning ansible role: fix pagure_ev & pagure_webhook --- diff --git a/dev/ansible/roles/pagure-dev/files/pagure_ci.service b/dev/ansible/roles/pagure-dev/files/pagure_ci.service index 9b2e226..ad82794 100644 --- a/dev/ansible/roles/pagure-dev/files/pagure_ci.service +++ b/dev/ansible/roles/pagure-dev/files/pagure_ci.service @@ -5,8 +5,7 @@ Documentation=https://pagure.io/pagure [Service] Environment="PAGURE_CONFIG=/home/vagrant/pagure.cfg" -ExecStart=/home/vagrant/.virtualenvs/python3-pagure/bin/python \ - /home/vagrant/devel/pagure-ci/pagure_ci_server.py +ExecStart=/home/vagrant/.virtualenvs/python3-pagure/bin/celery worker -A pagure.lib.tasks --loglevel=info -Q pagure_ci Type=simple [Install] diff --git a/dev/ansible/roles/pagure-dev/files/pagure_webhook.service b/dev/ansible/roles/pagure-dev/files/pagure_webhook.service index 2555553..f9a7c1c 100644 --- a/dev/ansible/roles/pagure-dev/files/pagure_webhook.service +++ b/dev/ansible/roles/pagure-dev/files/pagure_webhook.service @@ -5,8 +5,7 @@ Documentation=https://pagure.io/pagure [Service] Environment="PAGURE_CONFIG=/home/vagrant/pagure.cfg" -ExecStart=/home/vagrant/.virtualenvs/python3-pagure/bin/python \ - /home/vagrant/devel/pagure-webhook/pagure-webhook-server.py +ExecStart=/home/vagrant/.virtualenvs/python3-pagure/bin/celery worker -A pagure.lib.tasks --loglevel=info -Q pagure_webhook Type=simple [Install] From 11bf870cc598ce7585768258b6155392d315ae64 Mon Sep 17 00:00:00 2001 From: Julen Landa Alustiza Date: Nov 21 2019 09:54:37 +0000 Subject: [PATCH 7/9] tests/test_pagure_flask_api_issue.py: vagrant compatibility test suite outside vagrant sets filename as pagure_tests_place.png while inside vagrant is home_vagrant_devel_tests_place.png, so remove pagure from asserted string --- diff --git a/tests/test_pagure_flask_api_issue.py b/tests/test_pagure_flask_api_issue.py index 80a74f3..273839b 100644 --- a/tests/test_pagure_flask_api_issue.py +++ b/tests/test_pagure_flask_api_issue.py @@ -467,7 +467,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): issue = copy.deepcopy(FULL_ISSUE_LIST[8]) issue["id"] = 1 self.assertIn( - "pagure_tests_placebo.png)](/test/issue/raw/files/" + "_tests_placebo.png)](/test/issue/raw/files/" "8a06845923010b27bfd8e7e75acff7badc40d1021b4994e01f5e11ca" "40bc3abe", data["issue"]["content"], From b2005c55d5b9feabcf6ab8dfb85b5150217167f3 Mon Sep 17 00:00:00 2001 From: Julen Landa Alustiza Date: Nov 21 2019 10:11:51 +0000 Subject: [PATCH 8/9] Vagrant provisioning ansible role: hotfix python-fedora for flask >= 1.0 support --- diff --git a/dev/ansible/roles/pagure-dev/tasks/main.yml b/dev/ansible/roles/pagure-dev/tasks/main.yml index ba0dda9..e48adbc 100644 --- a/dev/ansible/roles/pagure-dev/tasks/main.yml +++ b/dev/ansible/roles/pagure-dev/tasks/main.yml @@ -108,6 +108,13 @@ - "requirements-ev.txt" - "requirements-testing.txt" +- name: Hotfix python-fedora to make flask_fas_openid compatible with flask >= 1.0 + become: "{{ ansible_env.SUDO_USER }}" + lineinfile: + path: /home/{{ ansible_env.SUDO_USER }}/.virtualenvs/python3-pagure/lib/python3.7/site-packages/flask_fas_openid.py + regexp: '^ if assume_recent or \(major >' + line: ' if assume_recent or (major > 0 or minor >= 10):' + - name: Install Pagure package into a virtualenv become_user: "{{ ansible_env.SUDO_USER }}" pip: From 433908999bd6bb324074dce45b33f66869c5ec2c Mon Sep 17 00:00:00 2001 From: Julen Landa Alustiza Date: Nov 21 2019 10:15:05 +0000 Subject: [PATCH 9/9] some black formatting --- diff --git a/pagure/hooks/files/git_multimail_upstream.py b/pagure/hooks/files/git_multimail_upstream.py index 8cdd156..0780563 100755 --- a/pagure/hooks/files/git_multimail_upstream.py +++ b/pagure/hooks/files/git_multimail_upstream.py @@ -3636,9 +3636,10 @@ class Push(object): "%(objectname) %(objecttype) %(refname)\n" "%(*objectname) %(*objecttype) %(refname)" ) - ref_filter_regex, is_inclusion_filter = ( - self.environment.get_ref_filter_regex() - ) + ( + ref_filter_regex, + is_inclusion_filter, + ) = self.environment.get_ref_filter_regex() for line in read_git_lines( ["for-each-ref", "--format=%s" % (fmt,)] ): @@ -3865,9 +3866,10 @@ def include_ref(refname, ref_filter_regex, is_inclusion_filter): def run_as_post_receive_hook(environment, mailer): environment.check() - send_filter_regex, send_is_inclusion_filter = environment.get_ref_filter_regex( - True - ) + ( + send_filter_regex, + send_is_inclusion_filter, + ) = environment.get_ref_filter_regex(True) ref_filter_regex, is_inclusion_filter = environment.get_ref_filter_regex( False ) @@ -3902,9 +3904,10 @@ def run_as_update_hook( environment, mailer, refname, oldrev, newrev, force_send=False ): environment.check() - send_filter_regex, send_is_inclusion_filter = environment.get_ref_filter_regex( - True - ) + ( + send_filter_regex, + send_is_inclusion_filter, + ) = environment.get_ref_filter_regex(True) ref_filter_regex, is_inclusion_filter = environment.get_ref_filter_regex( False ) diff --git a/tests/test_pagure_flask.py b/tests/test_pagure_flask.py index 00e56ed..0a1b8d1 100644 --- a/tests/test_pagure_flask.py +++ b/tests/test_pagure_flask.py @@ -301,7 +301,7 @@ class PagureGetRemoteRepoPath(tests.SimplePagureTest): @mock.patch.dict("pagure.config.config", {"EXTERNAL_COMMITTER": config}) def test_is_repo_committer_external_committer_restricting_another_one( - self + self, ): """ Test is_repo_committer in pagure with EXTERNAL_COMMITTER configured to give access the provenpackager just for one repo not diff --git a/tests/test_tasks.py b/tests/test_tasks.py index fe2f8b6..2c19538 100644 --- a/tests/test_tasks.py +++ b/tests/test_tasks.py @@ -59,9 +59,12 @@ class TestCommitsAuthorStats(unittest.TestCase): "alice@example.com": MockUser("Alice", "alice@example.com") } - num_commits, authors, num_authors, last_time = tasks.commits_author_stats( - self.repopath - ) + ( + num_commits, + authors, + num_authors, + last_time, + ) = tasks.commits_author_stats(self.repopath) self.assertEqual(num_commits, 1) self.assertEqual(num_authors, 1) @@ -109,9 +112,12 @@ class TestCommitsAuthorStats(unittest.TestCase): "alice@example.com": MockUser("Alice", "alice@example.com") } - num_commits, authors, num_authors, last_time = tasks.commits_author_stats( - self.repopath - ) + ( + num_commits, + authors, + num_authors, + last_time, + ) = tasks.commits_author_stats(self.repopath) self.assertEqual(num_commits, 2) self.assertEqual(num_authors, 1) @@ -156,9 +162,12 @@ class TestCommitsAuthorStats(unittest.TestCase): ] self.authors = {} - num_commits, authors, num_authors, last_time = tasks.commits_author_stats( - self.repopath - ) + ( + num_commits, + authors, + num_authors, + last_time, + ) = tasks.commits_author_stats(self.repopath) self.assertEqual(num_commits, 1) self.assertEqual(num_authors, 1) @@ -206,9 +215,12 @@ class TestCommitsAuthorStats(unittest.TestCase): ] self.authors = {} - num_commits, authors, num_authors, last_time = tasks.commits_author_stats( - self.repopath - ) + ( + num_commits, + authors, + num_authors, + last_time, + ) = tasks.commits_author_stats(self.repopath) self.assertEqual(num_commits, 3) self.assertEqual(num_authors, 2)