Skip to content

Commit b16b849

Browse files
committed
Add "fast" mode to container repository updates
1 parent 3ec53ad commit b16b849

File tree

2 files changed

+54
-23
lines changed

2 files changed

+54
-23
lines changed

roles/pulp_repository/defaults/main.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,5 @@ pulp_repository_python_repositories_retries: "{{ pulp_repository_create_reposito
2626
pulp_repository_rpm_repos_sync_retries: "{{ pulp_repository_sync_retries }}"
2727
pulp_repository_rpm_remotes_retries: "{{ pulp_repository_remote_retries }}"
2828
pulp_repository_rpm_repositories_retries: "{{ pulp_repository_create_repository_retries }}"
29+
30+
pulp_repository_fast_update: false

roles/pulp_repository/tasks/container.yml

Lines changed: 52 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,76 @@
11
---
2+
- name: List pulp container repositories
3+
pulp.squeezer.container_repository:
4+
pulp_url: "{{ pulp_url }}"
5+
username: "{{ pulp_username }}"
6+
password: "{{ pulp_password }}"
7+
validate_certs: "{{ pulp_validate_certs | bool }}"
8+
register: pulp_repository_container_existing_repos
9+
when: pulp_repository_fast_update | bool
10+
11+
- name: List pulp container remotes
12+
pulp.squeezer.container_remote:
13+
pulp_url: "{{ pulp_url }}"
14+
username: "{{ pulp_username }}"
15+
password: "{{ pulp_password }}"
16+
validate_certs: "{{ pulp_validate_certs | bool }}"
17+
register: pulp_repository_container_existing_remotes
18+
when: pulp_repository_fast_update | bool
19+
220
- name: Setup container repositories
21+
vars:
22+
pulp_existing_repo_names: "{{ pulp_repository_container_existing_repos.repositories | map(attribute='name') | list }}"
23+
fast_loop_list: "{{ pulp_repository_container_repos | rejectattr('name', 'in', pulp_existing_repo_names) }}"
24+
loop_list: "{{ fast_loop_list if pulp_repository_fast_update else pulp_repository_container_repos }}"
325
pulp.squeezer.container_repository:
426
pulp_url: "{{ pulp_url }}"
527
username: "{{ pulp_username }}"
628
password: "{{ pulp_password }}"
729
validate_certs: "{{ pulp_validate_certs | bool }}"
8-
name: "{{ pulp_repository_container_repos[repository_index].name }}"
9-
state: "{{ pulp_repository_container_repos[repository_index].state }}"
10-
loop: "{{ pulp_repository_container_repos | map(attribute='name') }}"
30+
name: "{{ loop_list[repository_index].name }}"
31+
state: "{{ loop_list[repository_index].state }}"
32+
loop: "{{ loop_list | map(attribute='name') }}"
1133
loop_control:
1234
index_var: repository_index
35+
when: >
36+
((loop_list[repository_index].name in pulp_existing_repo_names) and (loop_list[repository_index].state == 'absent')) or
37+
((loop_list[repository_index].name not in pulp_existing_repo_names) and (loop_list[repository_index].state == 'present'))
1338
register: pulp_repository_container_repositories
1439
until: "pulp_repository_container_repositories is not failed"
1540
retries: "{{ pulp_repository_container_repositories_retries }}"
1641
delay: 1
1742

1843
- name: Setup container remotes
44+
vars:
45+
pulp_existing_remote_names: "{{ pulp_repository_container_existing_remotes.remotes | map(attribute='name') | map('regex_replace', '-remote$', '') | list }}"
46+
fast_loop_list: "{{ pulp_repository_container_repos | rejectattr('name', 'in', pulp_existing_remote_names) }}"
47+
loop_list: "{{ fast_loop_list if pulp_repository_fast_update | bool else pulp_repository_container_repos }}"
1948
pulp.squeezer.container_remote:
2049
pulp_url: "{{ pulp_url }}"
2150
username: "{{ pulp_username }}"
2251
password: "{{ pulp_password }}"
2352
validate_certs: "{{ pulp_validate_certs | bool }}"
24-
name: "{{ pulp_repository_container_repos[repository_index].name }}-remote"
25-
ca_cert: "{{ pulp_repository_container_repos[repository_index].ca_cert | default(omit) }}"
26-
client_cert: "{{ pulp_repository_container_repos[repository_index].client_cert | default(omit) }}"
27-
client_key: "{{ pulp_repository_container_repos[repository_index].client_key | default(omit) }}"
28-
download_concurrency: "{{ pulp_repository_container_repos[repository_index].download_concurrency | default(omit) }}"
29-
exclude_tags: "{{ pulp_repository_container_repos[repository_index].exclude_tags | default(omit) }}"
30-
include_tags: "{{ pulp_repository_container_repos[repository_index].include_tags | default(omit) }}"
31-
policy: "{{ pulp_repository_container_repos[repository_index].policy | default(omit) }}"
32-
proxy_url: "{{ pulp_repository_container_repos[repository_index].proxy_url | default(omit) }}"
33-
proxy_username: "{{ pulp_repository_container_repos[repository_index].proxy_username | default(omit) }}"
34-
proxy_password: "{{ pulp_repository_container_repos[repository_index].proxy_password | default(omit) }}"
35-
remote_username: "{{ pulp_repository_container_repos[repository_index].remote_username | default(omit) }}"
36-
remote_password: "{{ pulp_repository_container_repos[repository_index].remote_password | default(omit) }}"
37-
tls_validation: "{{ pulp_repository_container_repos[repository_index].tls_validation | default(omit) }}"
38-
upstream_name: "{{ pulp_repository_container_repos[repository_index].upstream_name | default(pulp_repository_container_repos[repository_index].name) }}"
39-
url: "{{ pulp_repository_container_repos[repository_index].url | default(omit) }}"
40-
state: "{{ pulp_repository_container_repos[repository_index].state }}"
53+
name: "{{ loop_list[repository_index].name }}-remote"
54+
ca_cert: "{{ loop_list[repository_index].ca_cert | default(omit) }}"
55+
client_cert: "{{ loop_list[repository_index].client_cert | default(omit) }}"
56+
client_key: "{{ loop_list[repository_index].client_key | default(omit) }}"
57+
download_concurrency: "{{ loop_list[repository_index].download_concurrency | default(omit) }}"
58+
exclude_tags: "{{ loop_list[repository_index].exclude_tags | default(omit) }}"
59+
include_tags: "{{ loop_list[repository_index].include_tags | default(omit) }}"
60+
policy: "{{ loop_list[repository_index].policy | default(omit) }}"
61+
proxy_url: "{{ loop_list[repository_index].proxy_url | default(omit) }}"
62+
proxy_username: "{{ loop_list[repository_index].proxy_username | default(omit) }}"
63+
proxy_password: "{{ loop_list[repository_index].proxy_password | default(omit) }}"
64+
remote_username: "{{ loop_list[repository_index].remote_username | default(omit) }}"
65+
remote_password: "{{ loop_list[repository_index].remote_password | default(omit) }}"
66+
tls_validation: "{{ loop_list[repository_index].tls_validation | default(omit) }}"
67+
upstream_name: "{{ loop_list[repository_index].upstream_name | default(loop_list[repository_index].name) }}"
68+
url: "{{ loop_list[repository_index].url | default(omit) }}"
69+
state: "{{ loop_list[repository_index].state }}"
4170
when: >
42-
pulp_repository_container_repos[repository_index].state == "absent" or
43-
pulp_repository_container_repos[repository_index].url is defined
44-
loop: "{{ pulp_repository_container_repos | map(attribute='name') }}"
71+
loop_list[repository_index].state == "absent" or
72+
loop_list[repository_index].url is defined
73+
loop: "{{ loop_list | map(attribute='name') }}"
4574
loop_control:
4675
index_var: repository_index
4776
register: pulp_repository_container_remotes

0 commit comments

Comments
 (0)