Bug 2210309

Summary: Using a non-admin user to create an override value for a specific Ansible variable via Satellite API fails
Product: Red Hat Satellite Reporter: momran
Component: Ansible - Configuration ManagementAssignee: satellite6-bugs <satellite6-bugs>
Status: CLOSED DUPLICATE QA Contact: Satellite QE Team <sat-qe-bz-list>
Severity: high Docs Contact:
Priority: unspecified    
Version: 6.11.4CC: nalfassi, pmoravec
Target Milestone: Unspecified   
Target Release: Unused   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-05-28 15:34:14 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description momran 2023-05-26 14:24:59 UTC
Description of problem:

Using a non-admin user to create an override value for a specific Ansible variable via API fails. Error backtrace in the first comment.

Trying the same with an admin user completes successfully.


Version-Release number of selected component (if applicable):

Red Hat Satellite 6.11.4.1-1


How reproducible:

Always

Steps to Reproduce:

1. Create role 'example_role' as follows:

~~~
# curl -s -u admin:password https://satellite.example.com/api/v2/roles/34
{"builtin":0,"cloned_from_id":null,"name":"example_role","id":34,"description":"Used as a reproducer for case # 03508223","origin":null,"filters":[{"id":347,"resource_type":"AnsibleVariable"},{"id":348,"resource_type":"Host"},{"id":349,"resource_type":"Hostgroup"}],"locations":[{"id":2,"name":"Default Location","title":"Default Location","description":null}],"organizations":[{"id":5,"name":"Operations","title":"Operations","description":"Operations Department"}]}
~~~

2. Apply the following filters to the role:

~~~
# curl -s -u admin:password https://satellite.example.com/api/v2/filters/347
{"search":null,"resource_type_label":"Ansible variable","unlimited?":true,"created_at":"2023-05-26 08:23:14 UTC","updated_at":"2023-05-26 08:23:14 UTC","override?":false,"id":347,"resource_type":"AnsibleVariable","role":{"name":"example_role","id":34,"description":"Used as a reproducer for case # 03508223","origin":null},"permissions":[{"name":"view_ansible_variables","id":181,"resource_type":"AnsibleVariable"},{"name":"edit_ansible_variables","id":182,"resource_type":"AnsibleVariable"},{"name":"create_ansible_variables","id":184,"resource_type":"AnsibleVariable"}],"locations":[],"organizations":[]}

# curl -s -u admin:password https://satellite.example.com/api/v2/filters/348
{"search":null,"resource_type_label":"Host","unlimited?":true,"created_at":"2023-05-26 08:23:47 UTC","updated_at":"2023-05-26 08:23:47 UTC","override?":false,"id":348,"resource_type":"Host","role":{"name":"example_role","id":34,"description":"Used as a reproducer for case # 03508223","origin":null},"permissions":[{"name":"view_hosts","id":51,"resource_type":"Host"}],"locations":[{"id":2,"name":"Default Location","title":"Default Location","description":null}],"organizations":[{"id":5,"name":"Operations","title":"Operations","description":"Operations Department"}]}

# curl -s -u admin:password https://satellite.example.com/api/v2/filters/349
{"search":null,"resource_type_label":"Hostgroup","unlimited?":true,"created_at":"2023-05-26 08:24:08 UTC","updated_at":"2023-05-26 08:24:08 UTC","override?":false,"id":349,"resource_type":"Hostgroup","role":{"name":"example_role","id":34,"description":"Used as a reproducer for case # 03508223","origin":null},"permissions":[{"name":"view_hostgroups","id":47,"resource_type":"Hostgroup"}],"locations":[{"id":2,"name":"Default Location","title":"Default Location","description":null}],"organizations":[{"id":5,"name":"Operations","title":"Operations","description":"Operations Department"}]}
~~~

3. Create a non-admin local user on the Satellite server, and assign the 'example_role' to the user.

4. Using the ID of the Ansible variable to create the override value for, create the override value as follows:

~~~
# export JSON_STRING='{"ansible_variable_id": "1", "override_value": { "match": "fqdn=client.example.com", "value": { "purge_unmanaged_files": true }}}'

# curl -v -k -X POST -u user_123:password_123 -H "Content-Type:application/json" -d "$JSON_STRING" https://satellite.example.com/ansible/api/ansible_override_values --insecure
~~~


Actual results:

Creation of the override value for the Ansible variable fails. See the error backtrace in the first comment.


Expected results:

Creation of the override value for the Ansible variable succeeds.

Comment 1 momran 2023-05-26 14:26:19 UTC
Error backtrace:

~~~
# grep 1ea14cc1 /var/log/foreman/production.log
2023-05-26T11:08:05 [I|app|1ea14cc1] Started POST "/ansible/api/ansible_override_values" for 10.37.195.118 at 2023-05-26 11:08:05 +0200
2023-05-26T11:08:05 [I|app|1ea14cc1] Katello event daemon started process=204671
2023-05-26T11:08:06 [I|app|1ea14cc1] Subscribed to katello.candlepin.candlepin_events
2023-05-26T11:08:06 [D|sql|1ea14cc1]   User Load (0.4ms)  SELECT "users".* FROM "users" WHERE "users"."lower_login" = $1 LIMIT $2  [["lower_login", "foreman_admin"], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   AuthSource Load (0.2ms)  SELECT "auth_sources".* FROM "auth_sources" WHERE "auth_sources"."id" = $1 LIMIT $2  [["id", 2], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|per|1ea14cc1] Current user set to foreman_admin (admin)
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Organization Load (0.3ms)  SELECT "taxonomies".* FROM "taxonomies" WHERE "taxonomies"."type" = $1 AND "taxonomies"."created_in_katello" != $2 ORDER BY "taxonomies"."title" ASC  [["type", "Organization"], ["created_in_katello", true]]
2023-05-26T11:08:06 [I|app|1ea14cc1] Processing by Api::V2::AnsibleOverrideValuesController#create as */*
2023-05-26T11:08:06 [I|app|1ea14cc1]   Parameters: {"ansible_variable_id"=>"1", "override_value"=>"[FILTERED]", "apiv"=>"v2", "ansible_override_value"=>{"ansible_variable_id"=>"1", "override_value"=>"[FILTERED]"}}
2023-05-26T11:08:06 [D|sql|1ea14cc1]    (0.7ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Setting Load (0.8ms)  SELECT "settings".* FROM "settings" WHERE "settings"."category" IN ($1, $2, $3, $4, $5, $6, $7) AND "settings"."value" IS NOT NULL AND (updated_at >= '2023-05-26 09:06:06.244148')  [["category", "Setting::ForemanTasks"], ["category", "Setting::Bootdisk"], ["category", "Setting::Discovered"], ["category", "Setting::TemplateSync"], ["category", "Setting::RhCloud"], ["category", "Setting::Content"], ["category", "Setting"]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   User Load (0.2ms)  SELECT "users".* FROM "users" WHERE "users"."lower_login" = $1 LIMIT $2  [["lower_login", "user_03508223"], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   PersonalAccessToken Load (0.8ms)  SELECT "personal_access_tokens".* FROM "personal_access_tokens" WHERE "personal_access_tokens"."revoked" = $1 AND (expires_at >= '2023-05-26 09:08:06.214124' OR expires_at IS NULL) AND "personal_access_tokens"."user_id" = $2 AND "personal_access_tokens"."token" = $3 LIMIT $4  [["revoked", false], ["user_id", 7], ["token", "$pbkdf2sha1$50000$902ba3cda1883801594b6e1b452790cc53948fda$GRFyCVq8IW5NhkVrefi+2zzcgellyq/T1bqM9WA9hvP51q+XW6G2"], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   PersonalAccessToken Load (0.4ms)  SELECT "personal_access_tokens".* FROM "personal_access_tokens" WHERE "personal_access_tokens"."revoked" = $1 AND (expires_at >= '2023-05-26 09:08:06.245773' OR expires_at IS NULL) AND "personal_access_tokens"."user_id" = $2 AND "personal_access_tokens"."token" = $3 LIMIT $4  [["revoked", false], ["user_id", 7], ["token", "$2a$09$902ba3cda1883801594b6ePG1FtjM6D.ZltopgOCrl0QtwNuUEala"], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   PersonalAccessToken Load (0.2ms)  SELECT "personal_access_tokens".* FROM "personal_access_tokens" WHERE "personal_access_tokens"."revoked" = $1 AND (expires_at >= '2023-05-26 09:08:06.277588' OR expires_at IS NULL) AND "personal_access_tokens"."user_id" = $2 AND "personal_access_tokens"."token" = $3 LIMIT $4  [["revoked", false], ["user_id", 7], ["token", "2c5096e78cd93748484e64fd5d7f566f30d831c3"], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   AuthSource Load (0.2ms)  SELECT "auth_sources".* FROM "auth_sources" WHERE "auth_sources"."id" = $1 LIMIT $2  [["id", 1], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   CACHE User Load (0.0ms)  SELECT "users".* FROM "users" WHERE "users"."lower_login" = $1 LIMIT $2  [["lower_login", "user_03508223"], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|app|1ea14cc1] Authenticated user user_03508223 against INTERNAL authentication source
2023-05-26T11:08:06 [D|sql|1ea14cc1]   CACHE User Load (0.0ms)  SELECT "users".* FROM "users" WHERE "users"."lower_login" = $1 LIMIT $2  [["lower_login", "foreman_admin"], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   CACHE AuthSource Load (0.0ms)  SELECT "auth_sources".* FROM "auth_sources" WHERE "auth_sources"."id" = $1 LIMIT $2  [["id", 2], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|per|1ea14cc1] Current user set to foreman_admin (admin)
2023-05-26T11:08:06 [D|app|1ea14cc1] Post-login processing for user_03508223
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Katello::Event Update All (1.0ms)  UPDATE "katello_events" SET "in_progress" = $1 WHERE "katello_events"."in_progress" = $2  [["in_progress", false], ["in_progress", true]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   CACHE User Load (0.0ms)  SELECT "users".* FROM "users" WHERE "users"."lower_login" = $1 LIMIT $2  [["lower_login", "foreman_admin"], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   CACHE AuthSource Load (0.0ms)  SELECT "auth_sources".* FROM "auth_sources" WHERE "auth_sources"."id" = $1 LIMIT $2  [["id", 2], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|per|1ea14cc1] Current user set to foreman_admin (admin)
2023-05-26T11:08:06 [I|kat|1ea14cc1] Polling Katello Event Queue
2023-05-26T11:08:06 [D|sql|1ea14cc1]   User Update (1.9ms)  UPDATE "users" SET "last_login_on" = $1 WHERE "users"."id" = $2  [["last_login_on", "2023-05-26 09:08:06.315002"], ["id", 7]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Role Load (0.4ms)  SELECT "roles".* FROM "roles" WHERE "roles"."builtin" = $1 LIMIT $2  [["builtin", 2], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Role Exists? (2.5ms)  SELECT 1 AS one FROM "roles" INNER JOIN "user_roles" ON "roles"."id" = "user_roles"."role_id" WHERE "user_roles"."owner_id" = $1 AND "user_roles"."owner_type" = $2 AND "roles"."id" = $3 LIMIT $4  [["owner_id", 7], ["owner_type", "User"], ["id", 1], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Katello::Event Load (1.3ms)  SELECT "katello_events".* FROM "katello_events" WHERE ("katello_events"."process_after" IS NULL OR "katello_events"."process_after" BETWEEN $1 AND $2) AND "katello_events"."in_progress" = $3 ORDER BY "katello_events"."created_at" ASC LIMIT $4  [["process_after", "4713-01-01 BC"], ["process_after", "2023-05-26 09:08:06.315888"], ["in_progress", false], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Usergroup Load (1.5ms)  SELECT "usergroups".* FROM "usergroups" INNER JOIN "cached_usergroup_members" ON "usergroups"."id" = "cached_usergroup_members"."usergroup_id" WHERE "cached_usergroup_members"."user_id" = $1 ORDER BY usergroups.name  [["user_id", 7]]
2023-05-26T11:08:06 [I|per|1ea14cc1] Current user set to user_03508223 (regular)
2023-05-26T11:08:06 [D|sql|1ea14cc1]    (0.2ms)  SELECT auth_sources.id FROM "auth_sources" WHERE "auth_sources"."type" IN ($1, $2)  [["type", "AuthSourceHidden"], ["type", "ForemanVirtWhoConfigure::AuthSourceHiddenWithAuthentication"]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   User Load (0.2ms)  SELECT "users".* FROM "users" WHERE "users"."auth_source_id" NOT IN (2) AND "users"."lower_login" = $1 LIMIT $2  [["lower_login", "user_03508223"], ["LIMIT", 1]]
2023-05-26T11:08:06 [I|app|1ea14cc1] Authorized user user_03508223(user_03508223)
2023-05-26T11:08:06 [D|app|1ea14cc1] Post-login processing for user_03508223
2023-05-26T11:08:06 [D|sql|1ea14cc1]   User Load (0.1ms)  SELECT "users".* FROM "users" WHERE "users"."lower_login" = $1 LIMIT $2  [["lower_login", "foreman_admin"], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   AuthSource Load (0.2ms)  SELECT "auth_sources".* FROM "auth_sources" WHERE "auth_sources"."id" = $1 LIMIT $2  [["id", 2], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|per|1ea14cc1] Current user set to foreman_admin (admin)
2023-05-26T11:08:06 [D|sql|1ea14cc1]   User Update (0.3ms)  UPDATE "users" SET "last_login_on" = $1 WHERE "users"."id" = $2  [["last_login_on", "2023-05-26 09:08:06.335525"], ["id", 7]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Role Load (0.1ms)  SELECT "roles".* FROM "roles" WHERE "roles"."builtin" = $1 LIMIT $2  [["builtin", 2], ["LIMIT", 1]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Role Exists? (0.2ms)  SELECT 1 AS one FROM "roles" INNER JOIN "user_roles" ON "roles"."id" = "user_roles"."role_id" WHERE "user_roles"."owner_id" = $1 AND "user_roles"."owner_type" = $2 AND "roles"."id" = $3 LIMIT $4  [["owner_id", 7], ["owner_type", "User"], ["id", 1], ["LIMIT", 1]]
2023-05-26T11:08:06 [I|per|1ea14cc1] Current user set to user_03508223 (regular)
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Usergroup Load (0.3ms)  SELECT "usergroups".* FROM "usergroups" INNER JOIN "cached_usergroup_members" ON "usergroups"."id" = "cached_usergroup_members"."usergroup_id" WHERE "cached_usergroup_members"."user_id" = $1 ORDER BY usergroups.name  [["user_id", 7]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   AuthSource Load (0.1ms)  SELECT "auth_sources".* FROM "auth_sources" WHERE "auth_sources"."id" = $1 LIMIT $2  [["id", 1], ["LIMIT", 1]]
2023-05-26T11:08:06 [I|per|1ea14cc1] Current user set to user_03508223 (regular)
2023-05-26T11:08:06 [I|per|1ea14cc1] Current user set to user_03508223 (regular)
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Location Load (0.1ms)  SELECT "taxonomies".* FROM "taxonomies" WHERE "taxonomies"."type" = $1  [["type", "Location"]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Taxonomy Load (0.4ms)  SELECT "taxonomies".* FROM "taxonomies" INNER JOIN "taxable_taxonomies" ON "taxonomies"."id" = "taxable_taxonomies"."taxonomy_id" WHERE "taxable_taxonomies"."taxable_id" = $1 AND "taxable_taxonomies"."taxable_type" = $2 AND "taxonomies"."type" = $3 ORDER BY "taxonomies"."title" ASC  [["taxable_id", 7], ["taxable_type", "User"], ["type", "Location"]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]    (0.2ms)  SELECT "taxonomies"."id" FROM "taxonomies" WHERE (("taxonomies"."ancestry" LIKE '2/%' OR "taxonomies"."ancestry" = '2') OR "taxonomies"."id" = 2) ORDER BY "taxonomies"."title" ASC
2023-05-26T11:08:06 [D|tax|1ea14cc1] Current location set to none
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Organization Load (0.1ms)  SELECT "taxonomies".* FROM "taxonomies" WHERE "taxonomies"."type" = $1  [["type", "Organization"]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Taxonomy Load (0.2ms)  SELECT "taxonomies".* FROM "taxonomies" INNER JOIN "taxable_taxonomies" ON "taxonomies"."id" = "taxable_taxonomies"."taxonomy_id" WHERE "taxable_taxonomies"."taxable_id" = $1 AND "taxable_taxonomies"."taxable_type" = $2 AND "taxonomies"."type" = $3 ORDER BY "taxonomies"."title" ASC  [["taxable_id", 7], ["taxable_type", "User"], ["type", "Organization"]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]    (0.2ms)  SELECT "taxonomies"."id" FROM "taxonomies" WHERE (("taxonomies"."ancestry" LIKE '1/%' OR "taxonomies"."ancestry" = '1') OR "taxonomies"."id" = 1) ORDER BY "taxonomies"."title" ASC
2023-05-26T11:08:06 [D|sql|1ea14cc1]    (0.1ms)  SELECT "taxonomies"."id" FROM "taxonomies" WHERE (("taxonomies"."ancestry" LIKE '5/%' OR "taxonomies"."ancestry" = '5') OR "taxonomies"."id" = 5) ORDER BY "taxonomies"."title" ASC
2023-05-26T11:08:06 [D|tax|1ea14cc1] Current organization set to none
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Role Load (1.2ms)  SELECT DISTINCT "roles".* FROM "roles" INNER JOIN "cached_user_roles" ON "roles"."id" = "cached_user_roles"."role_id" WHERE "cached_user_roles"."user_id" = $1  [["user_id", 7]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]    (0.9ms)  SELECT permissions.name FROM "permissions" INNER JOIN "filterings" ON "permissions"."id" = "filterings"."permission_id" INNER JOIN "filters" ON "filterings"."filter_id" = "filters"."id" WHERE "filters"."role_id" = $1 ORDER BY filters.role_id, filters.id  [["role_id", 1]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]    (0.4ms)  SELECT permissions.name FROM "permissions" INNER JOIN "filterings" ON "permissions"."id" = "filterings"."permission_id" INNER JOIN "filters" ON "filterings"."filter_id" = "filters"."id" WHERE "filters"."role_id" = $1 ORDER BY filters.role_id, filters.id  [["role_id", 34]]
2023-05-26T11:08:06 [D|tax|1ea14cc1] Current location set to none
2023-05-26T11:08:06 [D|tax|1ea14cc1] Current organization set to none
2023-05-26T11:08:06 [D|per|1ea14cc1] checking permission edit_external_variables for class AnsibleVariable
2023-05-26T11:08:06 [D|per|1ea14cc1] organization_ids: []
2023-05-26T11:08:06 [D|per|1ea14cc1] location_ids: []
2023-05-26T11:08:06 [D|sql|1ea14cc1]   Filter Load (1.8ms)  SELECT DISTINCT "filters".* FROM "filters" INNER JOIN "roles" ON "filters"."role_id" = "roles"."id" INNER JOIN "cached_user_roles" ON "roles"."id" = "cached_user_roles"."role_id" INNER JOIN "filterings" ON "filterings"."filter_id" = "filters"."id" INNER JOIN "permissions" ON "permissions"."id" = "filterings"."permission_id" LEFT JOIN taxable_taxonomies ON (filters.id = taxable_taxonomies.taxable_id AND taxable_type = 'Filter') LEFT JOIN taxonomies ON (taxonomies.id = taxable_taxonomies.taxonomy_id) WHERE "cached_user_roles"."user_id" = $1 AND "permissions"."resource_type" = $2 AND "permissions"."name" = $3 AND (taxable_taxonomies.id IS NULL OR (taxonomies.type = 'Organization') OR (taxonomies.type = 'Location'))  [["user_id", 7], ["resource_type", "AnsibleVariable"], ["name", "edit_external_variables"]]
2023-05-26T11:08:06 [D|per|1ea14cc1] 
2023-05-26T11:08:06 [D|per|1ea14cc1] no filters found for given permission
2023-05-26T11:08:06 [D|sql|1ea14cc1]   AnsibleVariable Load (0.5ms)  SELECT "lookup_keys".* FROM "lookup_keys" WHERE "lookup_keys"."type" = $1 AND (1=0) AND "lookup_keys"."id" = $2 ORDER BY lookup_keys.key LIMIT $3  [["type", "AnsibleVariable"], ["id", 1], ["LIMIT", 1]]
2023-05-26T11:08:06 [W|app|1ea14cc1] Action failed
2023-05-26T11:08:06 [I|app|1ea14cc1] Backtrace for 'Action failed' error (NoMethodError): undefined method `lookup_values' for nil:NilClass
 1ea14cc1 | /usr/share/gems/gems/foreman_ansible-7.0.4.1/app/controllers/api/v2/ansible_override_values_controller.rb:29:in `create'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/abstract_controller/base.rb:195:in `process_action'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_controller/metal/rendering.rb:30:in `process_action'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
 1ea14cc1 | /usr/share/gems/gems/activesupport-6.0.6/lib/active_support/callbacks.rb:112:in `block in run_callbacks'
 1ea14cc1 | /usr/share/foreman/app/controllers/concerns/foreman/controller/timezone.rb:10:in `set_timezone'
 1ea14cc1 | /usr/share/gems/gems/activesupport-6.0.6/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
 1ea14cc1 | /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:32:in `clear_thread'
 1ea14cc1 | /usr/share/gems/gems/activesupport-6.0.6/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
 1ea14cc1 | /usr/share/foreman/app/controllers/concerns/foreman/controller/topbar_sweeper.rb:12:in `set_topbar_sweeper_controller'
 1ea14cc1 | /usr/share/gems/gems/activesupport-6.0.6/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
 1ea14cc1 | /usr/share/gems/gems/audited-4.9.0/lib/audited/sweeper.rb:14:in `around'
 1ea14cc1 | /usr/share/gems/gems/activesupport-6.0.6/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
 1ea14cc1 | /usr/share/gems/gems/audited-4.9.0/lib/audited/sweeper.rb:14:in `around'
 1ea14cc1 | /usr/share/gems/gems/activesupport-6.0.6/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
 1ea14cc1 | /usr/share/gems/gems/activesupport-6.0.6/lib/active_support/callbacks.rb:139:in `run_callbacks'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/abstract_controller/callbacks.rb:41:in `process_action'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_controller/metal/rescue.rb:22:in `process_action'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
 1ea14cc1 | /usr/share/gems/gems/activesupport-6.0.6/lib/active_support/notifications.rb:180:in `block in instrument'
 1ea14cc1 | /usr/share/gems/gems/activesupport-6.0.6/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
 1ea14cc1 | /usr/share/gems/gems/activesupport-6.0.6/lib/active_support/notifications.rb:180:in `instrument'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
 1ea14cc1 | /usr/share/gems/gems/activerecord-6.0.6/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/abstract_controller/base.rb:136:in `process'
 1ea14cc1 | /usr/share/gems/gems/actionview-6.0.6/lib/action_view/rendering.rb:39:in `process'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_controller/metal.rb:190:in `dispatch'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_controller/metal.rb:254:in `dispatch'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/routing/route_set.rb:33:in `serve'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/routing/mapper.rb:18:in `block in <class:Constraints>'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/routing/mapper.rb:48:in `serve'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/journey/router.rb:49:in `block in serve'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/journey/router.rb:32:in `each'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/journey/router.rb:32:in `serve'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/routing/route_set.rb:834:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/katello-4.3.0.52/lib/katello/middleware/organization_created_enforcer.rb:18:in `call'
 1ea14cc1 | /usr/share/gems/gems/katello-4.3.0.52/lib/katello/middleware/event_daemon.rb:10:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/apipie-dsl-2.4.0/lib/apipie_dsl/static_dispatcher.rb:67:in `call'
 1ea14cc1 | /usr/share/gems/gems/apipie-rails-0.5.17/lib/apipie/static_dispatcher.rb:66:in `call'
 1ea14cc1 | /usr/share/gems/gems/apipie-rails-0.5.17/lib/apipie/extractor/recorder.rb:137:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/foreman/lib/foreman/middleware/libvirt_connection_cleaner.rb:9:in `call'
 1ea14cc1 | /usr/share/foreman/lib/foreman/middleware/telemetry.rb:10:in `call'
 1ea14cc1 | /usr/share/gems/gems/apipie-rails-0.5.17/lib/apipie/middleware/checksum_in_headers.rb:27:in `call'
 1ea14cc1 | /usr/share/gems/gems/rack-2.2.3.1/lib/rack/tempfile_reaper.rb:15:in `call'
 1ea14cc1 | /usr/share/gems/gems/rack-2.2.3.1/lib/rack/etag.rb:27:in `call'
 1ea14cc1 | /usr/share/gems/gems/rack-2.2.3.1/lib/rack/conditional_get.rb:40:in `call'
 1ea14cc1 | /usr/share/gems/gems/rack-2.2.3.1/lib/rack/head.rb:12:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/http/content_security_policy.rb:18:in `call'
 1ea14cc1 | /usr/share/foreman/lib/foreman/middleware/logging_context_session.rb:22:in `call'
 1ea14cc1 | /usr/share/gems/gems/rack-2.2.3.1/lib/rack/session/abstract/id.rb:266:in `context'
 1ea14cc1 | /usr/share/gems/gems/rack-2.2.3.1/lib/rack/session/abstract/id.rb:260:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/cookies.rb:654:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
 1ea14cc1 | /usr/share/gems/gems/activesupport-6.0.6/lib/active_support/callbacks.rb:101:in `run_callbacks'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
 1ea14cc1 | /usr/share/gems/gems/railties-6.0.6/lib/rails/rack/logger.rb:37:in `call_app'
 1ea14cc1 | /usr/share/gems/gems/railties-6.0.6/lib/rails/rack/logger.rb:28:in `call'
 1ea14cc1 | /usr/share/gems/gems/sprockets-rails-3.2.1/lib/sprockets/rails/quiet_assets.rb:13:in `call'
 1ea14cc1 | /usr/share/foreman/lib/foreman/middleware/logging_context_request.rb:11:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/request_id.rb:27:in `call'
 1ea14cc1 | /usr/share/gems/gems/katello-4.3.0.52/lib/katello/prevent_json_parsing.rb:12:in `call'
 1ea14cc1 | /usr/share/gems/gems/rack-2.2.3.1/lib/rack/method_override.rb:24:in `call'
 1ea14cc1 | /usr/share/gems/gems/rack-2.2.3.1/lib/rack/runtime.rb:22:in `call'
 1ea14cc1 | /usr/share/gems/gems/activesupport-6.0.6/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/executor.rb:14:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/static.rb:126:in `call'
 1ea14cc1 | /usr/share/gems/gems/rack-2.2.3.1/lib/rack/sendfile.rb:110:in `call'
 1ea14cc1 | /usr/share/gems/gems/actionpack-6.0.6/lib/action_dispatch/middleware/host_authorization.rb:97:in `call'
 1ea14cc1 | /usr/share/gems/gems/secure_headers-6.3.0/lib/secure_headers/middleware.rb:11:in `call'
 1ea14cc1 | /usr/share/gems/gems/railties-6.0.6/lib/rails/engine.rb:527:in `call'
 1ea14cc1 | /usr/share/gems/gems/railties-6.0.6/lib/rails/railtie.rb:190:in `public_send'
 1ea14cc1 | /usr/share/gems/gems/railties-6.0.6/lib/rails/railtie.rb:190:in `method_missing'
 1ea14cc1 | /usr/share/gems/gems/rack-2.2.3.1/lib/rack/urlmap.rb:74:in `block in call'
 1ea14cc1 | /usr/share/gems/gems/rack-2.2.3.1/lib/rack/urlmap.rb:58:in `each'
 1ea14cc1 | /usr/share/gems/gems/rack-2.2.3.1/lib/rack/urlmap.rb:58:in `call'
 1ea14cc1 | /usr/share/gems/gems/puma-5.6.2/lib/puma/configuration.rb:252:in `call'
 1ea14cc1 | /usr/share/gems/gems/puma-5.6.2/lib/puma/request.rb:77:in `block in handle_request'
 1ea14cc1 | /usr/share/gems/gems/puma-5.6.2/lib/puma/thread_pool.rb:340:in `with_force_shutdown'
 1ea14cc1 | /usr/share/gems/gems/puma-5.6.2/lib/puma/request.rb:76:in `handle_request'
 1ea14cc1 | /usr/share/gems/gems/puma-5.6.2/lib/puma/server.rb:441:in `process_client'
 1ea14cc1 | /usr/share/gems/gems/puma-5.6.2/lib/puma/thread_pool.rb:147:in `block in spawn_thread'
 1ea14cc1 | /usr/share/gems/gems/logging-2.3.0/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'
2023-05-26T11:08:06 [I|app|1ea14cc1]   Rendering api/v2/errors/custom_error.json.rabl within api/v2/layouts/error_layout
2023-05-26T11:08:06 [I|app|1ea14cc1]   Rendered api/v2/errors/custom_error.json.rabl within api/v2/layouts/error_layout (Duration: 0.8ms | Allocations: 370)
2023-05-26T11:08:06 [I|app|1ea14cc1] Completed 500 Internal Server Error in 204ms (Views: 4.8ms | ActiveRecord: 31.2ms | Allocations: 65118)
2023-05-26T11:08:06 [D|sql|1ea14cc1]    (0.1ms)  BEGIN
2023-05-26T11:08:06 [D|sql|1ea14cc1]   ActiveRecord::SessionStore::Session Update (0.2ms)  UPDATE "sessions" SET "data" = $1, "updated_at" = $2 WHERE "sessions"."id" = $3  [["data", "BAh7CUkiCXVzZXIGOgZFRmkMSSIeYXBpX2F1dGhlbnRpY2F0ZWRfc2Vzc2lv\nbgY7AEZUSSIPZXhwaXJlc19hdAY7AEZsKwcGhXBkSSILbG9jYWxlBjsARkki\nB2VuBjsARg==\n"], ["updated_at", "2023-05-26 09:08:06.397188"], ["id", 8436]]
2023-05-26T11:08:06 [D|sql|1ea14cc1]    (0.3ms)  COMMIT
2023-05-26T11:08:09 [D|sql|1ea14cc1]   Katello::Event Load (0.3ms)  SELECT "katello_events".* FROM "katello_events" WHERE ("katello_events"."process_after" IS NULL OR "katello_events"."process_after" BETWEEN $1 AND $2) AND "katello_events"."in_progress" = $3 ORDER BY "katello_events"."created_at" ASC LIMIT $4  [["process_after", "4713-01-01 BC"], ["process_after", "2023-05-26 09:08:09.331934"], ["in_progress", false], ["LIMIT", 1]]
2023-05-26T11:08:12 [D|sql|1ea14cc1]   Katello::Event Load (0.3ms)  SELECT "katello_events".* FROM "katello_events" WHERE ("katello_events"."process_after" IS NULL OR "katello_events"."process_after" BETWEEN $1 AND $2) AND "katello_events"."in_progress" = $3 ORDER BY "katello_events"."created_at" ASC LIMIT $4  [["process_after", "4713-01-01 BC"], ["process_after", "2023-05-26 09:08:12.335909"], ["in_progress", false], ["LIMIT", 1]]
2023-05-26T11:08:15 [D|sql|1ea14cc1]   Katello::Event Load (0.4ms)  SELECT "katello_events".* FROM "katello_events" WHERE ("katello_events"."process_after" IS NULL OR "katello_events"."process_after" BETWEEN $1 AND $2) AND "katello_events"."in_progress" = $3 ORDER BY "katello_events"."created_at" ASC LIMIT $4  [["process_after", "4713-01-01 BC"], ["process_after", "2023-05-26 09:08:15.338348"], ["in_progress", false], ["LIMIT", 1]]
2023-05-26T11:08:18 [D|sql|1ea14cc1]   Katello::Event Load (0.4ms)  SELECT "katello_events".* FROM "katello_events" WHERE ("katello_events"."process_after" IS NULL OR "katello_events"."process_after" BETWEEN $1 AND $2) AND "katello_events"."in_progress" = $3 ORDER BY "katello_events"."created_at" ASC LIMIT $4  [["process_after", "4713-01-01 BC"], ["process_after", "2023-05-26 09:08:18.341182"], ["in_progress", false], ["LIMIT", 1]]
2023-05-26T11:08:21 [D|sql|1ea14cc1]   Katello::Event Load (0.4ms)  SELECT "katello_events".* FROM "katello_events" WHERE ("katello_events"."process_after" IS NULL OR "katello_events"."process_after" BETWEEN $1 AND $2) AND "katello_events"."in_progress" = $3 ORDER BY "katello_events"."created_at" ASC LIMIT $4  [["process_after", "4713-01-01 BC"], ["process_after", "2023-05-26 09:08:21.344706"], ["in_progress", false], ["LIMIT", 1]]
2023-05-26T11:08:24 [D|sql|1ea14cc1]   Katello::Event Load (0.3ms)  SELECT "katello_events".* FROM "katello_events" WHERE ("katello_events"."process_after" IS NULL OR "katello_events"."process_after" BETWEEN $1 AND $2) AND "katello_events"."in_progress" = $3 ORDER BY "katello_events"."created_at" ASC LIMIT $4  [["process_after", "4713-01-01 BC"], ["process_after", "2023-05-26 09:08:24.348082"], ["in_progress", false], ["LIMIT", 1]]
2023-05-26T11:08:27 [D|sql|1ea14cc1]   Katello::Event Load (0.4ms)  SELECT "katello_events".* FROM "katello_events" WHERE ("katello_events"."process_after" IS NULL OR "katello_events"."process_after" BETWEEN $1 AND $2) AND "katello_events"."in_progress" = $3 ORDER BY "katello_events"."created_at" ASC LIMIT $4  [["process_after", "4713-01-01 BC"], ["process_after", "2023-05-26 09:08:27.351387"], ["in_progress", false], ["LIMIT", 1]]
~~~

Comment 2 momran 2023-05-26 14:31:45 UTC
It turned out that the observed behavior is due to the code in /usr/share/gems/gems/foreman_ansible-7.0.4.1/app/controllers/api/v2/ansible_override_values_controller.rb on the Satellite server. The code refers to the 'edit_external_variables' permission instead of the 'edit_ansible_variables' permission.

Editing /usr/share/gems/gems/foreman_ansible-7.0.4.1/app/controllers/api/v2/ansible_override_values_controller.rb on the Satellite server, and changing the following line:

~~~
        @ansible_variable = AnsibleVariable.authorized(:edit_external_variables).
~~~

to:

~~~
        @ansible_variable = AnsibleVariable.authorized(:edit_ansible_variables).
~~~

then restarting the Satellite services:

  ~~~
  # satellite-maintain service restart
  ~~~

resolved the issue:

~~~
# export JSON_STRING='{"ansible_variable_id": "1", "override_value": { "match": "fqdn=client.example.com", "value": { "purge_unmanaged_files": true }}}'

# curl -v -k -X POST -u user_123:password_123 -H "Content-Type:application/json" -d "$JSON_STRING" https://satellite.example.com/ansible/api/ansible_override_values --insecure
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 10.37.195.118...
* TCP_NODELAY set
* Connected to satellite.example.com (10.37.195.118) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Request CERT (13):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, [no content] (0):
* TLSv1.3 (OUT), TLS handshake, Certificate (11):
* TLSv1.3 (OUT), TLS handshake, [no content] (0):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: C=US; ST=North Carolina; O=Katello; OU=SomeOrgUnit; CN=satellite.example.com
*  start date: Apr 27 14:54:00 2023 GMT
*  expire date: Jan 18 14:54:01 2038 GMT
*  issuer: C=US; ST=North Carolina; L=Raleigh; O=Katello; OU=SomeOrgUnit; CN=satellite.example.com
*  SSL certificate verify ok.
* Server auth using Basic with user 'user_03508223'
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> POST /ansible/api/ansible_override_values HTTP/1.1
> Host: satellite.example.usersys.redhat.com
> Authorization: Basic dXNlcl8wMzUwODIyMzp1c2VyMTIz
> User-Agent: curl/7.61.1
> Accept: */*
> Content-Type:application/json
> Content-Length: 144
> 
* upload completely sent off: 144 out of 144 bytes
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS app data, [no content] (0):
< HTTP/1.1 200 OK
< Date: Fri, 26 May 2023 09:52:17 GMT
< Server: Apache
< Foreman_version: 3.1.1.26
< Foreman_api_version: 2
< Foreman_current_organization: ; ANY
< Foreman_current_location: ; ANY
< Content-Type: application/json; charset=utf-8
< ETag: W/"00cf32e5b68db1ce5afbaa93dea0a202"
< Cache-Control: max-age=0, private, must-revalidate
< X-Request-Id: b41ccc1d-6a03-4cc1-911d-4ae4db7270a0
< X-Runtime: 0.328259
< Strict-Transport-Security: max-age=631139040; includeSubdomains
< X-Frame-Options: sameorigin
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< X-Download-Options: noopen
< X-Permitted-Cross-Domain-Policies: none
< Content-Security-Policy: default-src 'self'; child-src 'self'; connect-src 'self' ws: wss:; img-src 'self' data:; script-src 'unsafe-eval' 'unsafe-inline' 'self'; style-src 'unsafe-inline' 'self'
< Set-Cookie: _session_id=c8554b86386b11d113e502ddb3ddb1b0; path=/; secure; HttpOnly; SameSite=Lax
< Via: 1.1 satellite.example.com
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
< 
* Connection #0 to host satellite.example.com left intact
{"id":2,"match":"fqdn=satellite.example.com","value":{"purge_unmanaged_files":true}}
~~~

Comment 3 nalfassi 2023-05-28 15:34:14 UTC
While the reported issue pertains to the API, it is essentially the same problem as the one reported in BZ #2181595. Once we resolve this issue, it will fix the problem for both the API and the web UI.

*** This bug has been marked as a duplicate of bug 2181595 ***