Bug 2224113 - ACS bulk refresh through API silently sanitizes input ids
Summary: ACS bulk refresh through API silently sanitizes input ids
Keywords:
Status: VERIFIED
Alias: None
Product: Red Hat Satellite
Classification: Red Hat
Component: Alternate Content Sources
Version: 6.13.0
Hardware: Unspecified
OS: Unspecified
unspecified
low
Target Milestone: 6.14.0
Assignee: Samir Jha
QA Contact: Vladimír Sedmík
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-07-19 19:48 UTC by Quinn James
Modified: 2023-08-11 16:06 UTC (History)
5 users (show)

Fixed In Version: rubygem-katello-4.9.0.11-1
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Foreman Issue Tracker 36634 0 Normal New ACS bulk refresh through API silently sanitizes input ids 2023-08-02 14:43:21 UTC
Red Hat Issue Tracker SAT-19050 0 None None None 2023-07-19 19:49:44 UTC

Description Quinn James 2023-07-19 19:48:19 UTC
Description of problem:
When using the API to request a bulk refresh of alternate content sources, invalid ids will be discarded if there is a single valid ACS id in the query.

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

How reproducible:
Always

Steps to Reproduce:
1. Create a Sat instance with an alternate content source, note the id.
2. Start a bulk refresh using the API, including the valid id along with several bogus id's:
`curl --request POST --user admin:changeme -H "Content-type: application/json" <host>/katello/api/alternate_content_sources/bulk/refresh?ids=<valid>,1001,1002,1003`

Actual results:
JSON output informing the user that the valid id alone has been refreshed

Expected results:
An error indicating invalid parameters

Additional info:
n/a

Comment 1 Quinn James 2023-07-19 20:00:01 UTC
I just confirmed this behavior also occurs for bulk delete of alternate content sources.

Comment 2 Samir Jha 2023-08-02 14:43:20 UTC
Created redmine issue https://projects.theforeman.org/issues/36634 from this bug

Comment 3 Bryan Kearney 2023-08-04 16:03:06 UTC
Moving this bug to POST for triage into Satellite since the upstream issue https://projects.theforeman.org/issues/36634 has been resolved.

Comment 5 Vladimír Sedmík 2023-08-11 16:06:58 UTC
Verified in 6.14.0 snap 11

1) Invalid ids are caught on bulk actions and proper error message is displayed:
[root@sat ~]# curl -X POST -su admin:nene -H "Content-type: application/json" https://$(hostname)/katello/api/alternate_content_sources/bulk/refresh --data '{"ids": [1,2,3]}' | jq
{
  "displayMessage": "Could not find alternate content sources with id: [\"3\"] . You either do not have required permissions, or these alternate content sources do not exist.",
  "errors": [
    "Could not find alternate content sources with id: [\"3\"] . You either do not have required permissions, or these alternate content sources do not exist."
  ]
}
[root@sat ~]# curl -X PUT -su admin:nene -H "Content-type: application/json" https://$(hostname)/katello/api/alternate_content_sources/bulk/destroy --data '{"ids": [1,2,3]}' | jq
{
  "displayMessage": "Could not find alternate content sources with id: [\"3\"] . You either do not have required permissions, or these alternate content sources do not exist.",
  "errors": [
    "Could not find alternate content sources with id: [\"3\"] . You either do not have required permissions, or these alternate content sources do not exist."
  ]
}

2) Valid ids are accepted and actions run:
[root@sat ~]# curl -X POST -su admin:nene -H "Content-type: application/json" https://$(hostname)/katello/api/alternate_content_sources/bulk/refresh --data '{"ids": [1,2]}' | jq
{
  "id": "37491c3a-940b-40fa-8f14-585128b92086",
  "label": "Actions::BulkAction",
  "pending": true,
  "action": "Bulk action",
  ...
}
[root@sat ~]# curl -X PUT -su admin:nene -H "Content-type: application/json" https://$(hostname)/katello/api/alternate_content_sources/bulk/destroy --data '{"ids": [1,2]}' | jq
{
  "id": "eda91f3e-62ef-4ada-b65c-0620ab02fc3e",
  "label": "Actions::BulkAction",
  "pending": true,
  "action": "Bulk action",
  ...
}


Note You need to log in before you can comment on or make changes to this bug.