Skip to content

Commit 4fc1736

Browse files
authored
Merge pull request #61 from stackhpc/feat/repo-sync-retry
Add retries to repo sync tasks
2 parents 22a068b + 7dc4e61 commit 4fc1736

File tree

8 files changed

+123
-0
lines changed

8 files changed

+123
-0
lines changed

roles/pulp_repository/defaults/main.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,10 @@ pulp_repository_container_repos: []
88
pulp_repository_deb_repos: []
99
pulp_repository_python_repos: []
1010
pulp_repository_rpm_repos: []
11+
12+
pulp_repository_sync_retries: 3
13+
14+
pulp_repository_container_repos_sync_retries: "{{ pulp_repository_sync_retries }}"
15+
pulp_repository_deb_repos_sync_retries: "{{ pulp_repository_sync_retries }}"
16+
pulp_repository_python_repos_sync_retries: "{{ pulp_repository_sync_retries }}"
17+
pulp_repository_rpm_repos_sync_retries: "{{ pulp_repository_sync_retries }}"

roles/pulp_repository/tasks/container.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,7 @@
5555
loop: "{{ pulp_repository_container_repos | map(attribute='name') }}"
5656
loop_control:
5757
index_var: repository_index
58+
register: pulp_repository_container_repos_sync
59+
until: "pulp_repository_container_repos_sync is not failed"
60+
retries: "{{ pulp_repository_container_repos_sync_retries }}"
61+
delay: 1

roles/pulp_repository/tasks/deb.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,7 @@
5656
loop: "{{ pulp_repository_deb_repos | map(attribute='name') }}"
5757
loop_control:
5858
index_var: repository_index
59+
register: pulp_repository_deb_repos_sync
60+
until: "pulp_repository_deb_repos_sync is not failed"
61+
retries: "{{ pulp_repository_deb_repos_sync_retries }}"
62+
delay: 1

roles/pulp_repository/tasks/python.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,8 @@
5555
loop: "{{ pulp_repository_python_repos | map(attribute='name') }}"
5656
loop_control:
5757
index_var: repository_index
58+
register: pulp_repository_python_repos_sync
59+
until: "pulp_repository_python_repos_sync is not failed"
60+
retries: "{{ pulp_repository_python_repos_sync_retries }}"
61+
delay: 1
62+

roles/pulp_repository/tasks/rpm.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,7 @@
5353
loop: "{{ pulp_repository_rpm_repos | map(attribute='name') }}"
5454
loop_control:
5555
index_var: repository_index
56+
register: pulp_repository_rpm_repos_sync
57+
until: "pulp_repository_rpm_repos_sync is not failed"
58+
retries: "{{ pulp_repository_rpm_repos_sync_retries }}"
59+
delay: 1

tests/test_container_repository.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
pulp_username: admin
88
pulp_password: password
99
pulp_validate_certs: true
10+
pulp_repository_container_repos_sync_retries: 2
1011
tasks:
1112
- include_role:
1213
name: pulp_repository
@@ -79,3 +80,36 @@
7980
- name: Verify remote deletion
8081
assert:
8182
that: container_remotes.remotes | length == 0
83+
84+
- block:
85+
- include_role:
86+
name: pulp_repository
87+
vars:
88+
pulp_repository_container_repos:
89+
- name: test_container_repo_bad_url
90+
upstream_name: pulp/test-fixture-1
91+
url: "https://google.com/404"
92+
policy: immediate
93+
state: present
94+
95+
rescue:
96+
- set_fact:
97+
failed_task: "{{ ansible_failed_task }}"
98+
99+
always:
100+
- name: Assert that syncing from a URL that returns 404 fails
101+
assert:
102+
that:
103+
- failed_task.name == "Sync container remotes into repositories"
104+
105+
- name: Assert that syncing from a URL that returns 404 is retried the correct number of times
106+
assert:
107+
that:
108+
- pulp_repository_container_repos_sync.results[0].attempts == pulp_repository_container_repos_sync_retries
109+
110+
- include_role:
111+
name: pulp_repository
112+
vars:
113+
pulp_repository_deb_repos:
114+
- name: test_container_repo_bad_url
115+
state: absent

tests/test_deb_repository.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
pulp_username: admin
88
pulp_password: password
99
pulp_validate_certs: true
10+
pulp_repository_deb_repos_sync_retries: 2
1011
tasks:
1112
- include_role:
1213
name: pulp_repository
@@ -79,3 +80,35 @@
7980
- name: Verify remote deletion
8081
assert:
8182
that: deb_remotes.remotes | length == 0
83+
84+
- block:
85+
- include_role:
86+
name: pulp_repository
87+
vars:
88+
pulp_repository_deb_repos:
89+
- name: test_deb_repo_bad_url
90+
url: "https://google.com/404"
91+
distributions: "ragnarok"
92+
policy: immediate
93+
state: present
94+
rescue:
95+
- set_fact:
96+
failed_task: "{{ ansible_failed_task }}"
97+
98+
always:
99+
- name: Assert that syncing from a URL that returns 404 fails
100+
assert:
101+
that:
102+
- failed_task.name == "Sync DEB remotes into repositories"
103+
104+
- name: Assert that syncing from a URL that returns 404 is retried the correct number of times
105+
assert:
106+
that:
107+
- pulp_repository_deb_repos_sync.results[0].attempts == pulp_repository_deb_repos_sync_retries
108+
109+
- include_role:
110+
name: pulp_repository
111+
vars:
112+
pulp_repository_deb_repos:
113+
- name: test_deb_repo_bad_url
114+
state: absent

tests/test_rpm_repository.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
pulp_username: admin
88
pulp_password: password
99
pulp_validate_certs: true
10+
pulp_repository_rpm_repos_sync_retries: 2
1011
tasks:
1112
- include_role:
1213
name: pulp_repository
@@ -77,3 +78,34 @@
7778
- name: Verify remote deletion
7879
assert:
7980
that: rpm_remotes.remotes | length == 0
81+
82+
- block:
83+
- include_role:
84+
name: pulp_repository
85+
vars:
86+
pulp_repository_rpm_repos:
87+
- name: test_rpm_repo_bad_url
88+
url: "https://google.com/404"
89+
policy: immediate
90+
state: present
91+
rescue:
92+
- set_fact:
93+
failed_task: "{{ ansible_failed_task }}"
94+
95+
always:
96+
- name: Assert that syncing from a URL that returns 404 fails
97+
assert:
98+
that:
99+
- failed_task.name == "Sync RPM remotes into repositories"
100+
101+
- name: Assert that syncing from a URL that returns 404 is retried the correct number of times
102+
assert:
103+
that:
104+
- pulp_repository_rpm_repos_sync.results[0].attempts == pulp_repository_rpm_repos_sync_retries
105+
106+
- include_role:
107+
name: pulp_repository
108+
vars:
109+
pulp_repository_rpm_repos:
110+
- name: test_rpm_repo_bad_url
111+
state: absent

0 commit comments

Comments
 (0)