File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11---
22foreman_container_image : " quay.io/foreman/foreman"
33foreman_container_tag : " nightly"
4+ foreman_container_name : foreman
45
56foreman_database_name : foreman
67foreman_database_user : foreman
Original file line number Diff line number Diff line change 109109
110110- name : Deploy Foreman Container
111111 containers.podman.podman_container :
112- name : " foreman "
112+ name : " {{ foreman_container_name }} "
113113 image : foreman.image
114114 state : quadlet
115115 sdnotify : true
150150 After=foreman-db-migrate.service
151151 notify : Restart foreman
152152
153+ - name : Install foreman-rake wrapper
154+ ansible.builtin.template :
155+ src : foreman-rake.j2
156+ dest : /usr/sbin/foreman-rake
157+ owner : root
158+ group : root
159+ mode : ' 0755'
160+
153161- name : Deploy Dynflow Container
154162 containers.podman.podman_container :
155163 name : " dynflow-sidekiq-%i"
Original file line number Diff line number Diff line change 1+ #! /bin/bash
2+
3+ validate_actions () {
4+ # This list is generated by running:
5+ # rg '# foreman-rake' | awk '{ print $3 }' | sort -u
6+ # against the foreman documentation repository (https://github.com/theforeman/foreman-documentation).
7+ # The intention is to have a list of tasks that were mentioned explicitly in the documentation.
8+ local allowed_actions=(
9+ " audits:anonymize"
10+ " audits:expire"
11+ " audits:list_attributes"
12+ " console"
13+ " facts:clean"
14+ " foreman_openscap:bulk_upload:default"
15+ " foreman_tasks:cleanup"
16+ " interfaces:clean"
17+ " katello:delete_orphaned_content"
18+ " katello:migrate_deb_content_attributes_to_pulp3"
19+ " katello:upgrade_check"
20+ " ldap:refresh_usergroups"
21+ " orchestration:dhcp:add_missing"
22+ " orchestration:dhcp:remove_offending"
23+ " permissions:reset"
24+ " reports:daily"
25+ " reports:expire"
26+ " reports:monthly"
27+ " reports:weekly"
28+ " telemetry:metrics"
29+ " templates:cleanup"
30+ )
31+
32+ local joined_pattern
33+ joined_pattern=$( IFS=" |" ; echo " ${allowed_actions[*]} " )
34+
35+ local pattern=" (^|[[:space:]])($joined_pattern )([[:space:]]|$)"
36+
37+ if [[ ! " $* " =~ $pattern ]]; then
38+ if [ " ${ALLOW_UNSUPPORTED} " != " true" ]; then
39+ echo " ERROR: Unsupported action detected." >&2
40+ exit 1
41+ else
42+ echo " WARNING: Unsupported action detected. Please use with caution." >&2
43+ fi
44+ fi
45+ }
46+
47+ if [ " $( id -u) " -ne 0 ]; then
48+ echo " This script must be run as root" >&2
49+ exit 1
50+ fi
51+
52+ validate_actions " $@ "
53+
54+ # Use an array to avoid shell expansion issues
55+ TTY_ARGS=()
56+ if [ -t 0 ]; then
57+ TTY_ARGS=(-it)
58+ fi
59+
60+ exec podman exec " ${TTY_ARGS[@]} " {{ foreman_container_name }} foreman-rake " $@ "
Original file line number Diff line number Diff line change 1+ def test_foreman_rake_wrapper_exists (server ):
2+ wrapper = server .file ('/usr/sbin/foreman-rake' )
3+ assert wrapper .exists
4+ assert wrapper .mode == 0o755
5+
6+
7+ def test_foreman_rake_list_tasks (server ):
8+ result = server .run ('ALLOW_UNSUPPORTED=true foreman-rake -T' )
9+ assert result .succeeded
10+ assert 'WARNING: Unsupported action detected' in result .stderr
11+ assert 'rake cron:daily' in result .stdout
12+
13+
14+ def test_foreman_rake_rejects_unsupported_action (server ):
15+ result = server .run_expect ([1 ], 'foreman-rake unsupported:task' )
16+ assert 'ERROR: Unsupported action detected' in result .stderr
17+
18+
19+ def test_foreman_rake_supported_action (server ):
20+ result = server .run ('foreman-rake facts:clean' )
21+ assert result .succeeded
You can’t perform that action at this time.
0 commit comments