Bug 1395229 - It is not possible to use empty list as value for optional parameters via API
Summary: It is not possible to use empty list as value for optional parameters via API
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Satellite
Classification: Red Hat
Component: API
Version: 6.3.0
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: Unspecified
Assignee: Kavita
QA Contact: Swapnil Abnave
URL:
Whiteboard:
: 1379944 (view as bug list)
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2016-11-15 13:32 UTC by Stanislav Tkachenko
Modified: 2019-04-01 20:27 UTC (History)
7 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-02-21 16:49:54 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Foreman Issue Tracker 17343 0 Normal Closed It is not possible to use empty list as value for optional parameters via API 2020-03-03 13:48:17 UTC

Description Stanislav Tkachenko 2016-11-15 13:32:51 UTC
Description of problem:
Some entities has optional array parameters that allow nil value. Previously it was possible to send empty list '[]' as value to clear all values, but now according to dLobatog it is not possible because of a new security mechanism in Rails.

Though it affects all the optional parameters, some example entities/parameters are: smart_proxies.locations, location.smart_proxies, organization.smart_proxies, organization.hostgroup_ids.


# Update with empty list
> Making HTTP PUT request to https://sat6.com/katello/api/v2/organizations/39 with options {'verify': False, 'auth': ('admin', 'changeme'), 'headers': {'content-type': 'application/json'}} and data {"organization": {"smart_proxy_ids": []}}.

# Response
> Received HTTP 200 response: 
{
  "name":"XWsKJtxSBN",
  "id":39,
  "smart_proxies":[
    {
      "name":"sat6.com",
      "id":1,
      "url":"https://sat6.com:9090"
    },
    {
      "name":"Oa5c2S",
      "id":11,
      "url":"https://sat6.com:11629"
    }
}

Version-Release number of selected component (if applicable):
Satellite 6.3.0 Snap 6.0, Foreman 1.13.1-1

How reproducible:
Always

Steps to Reproduce:
1. Create entity that has optional array parameters
2. Update that parameter with some value
3. Update that parameter one more time with empty list
4. Check that values from point 2 not changed

Actual results:
When updating with empty list nothing happens, optional parameter has all previous values

Expected results:
All values should be cleared

Additional info:

Comment 2 Bryan Kearney 2016-11-25 09:04:53 UTC
Moving this bug to POST for triage into Satellite 6 since the upstream issue http://projects.theforeman.org/issues/17343 has been resolved.

Comment 3 Roman Plevka 2016-11-29 10:50:19 UTC
Found a workaround: send [""] instead of []

Comment 4 Marek Hulan 2016-12-02 10:26:16 UTC
*** Bug 1379944 has been marked as a duplicate of this bug. ***

Comment 5 Tomas Strachota 2017-01-05 13:02:18 UTC
*** Bug 1408940 has been marked as a duplicate of this bug. ***

Comment 6 Swapnil Abnave 2017-08-03 15:00:41 UTC
Verified smart_proxy_ids and domain_ids, getting unassigned.

Satellite 6.3 SNAP 9

* satellite-6.3.0-16.0.beta.el7sat.noarch
* foreman-1.15.2-1.el7sat.noarch
* katello-3.4.2-1.el7sat.noarch

Comment 7 Satellite Program 2018-02-21 16:49:54 UTC
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA.

For information on the advisory, and where to find the updated files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2018:0336


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