Uploaded image for project: 'Satellite'
  1. Satellite
  2. SAT-18302

PUT /katello/api/repositories/:id fails when only updating docker_tags_whitelist

XMLWordPrintable

    • Phoenix - Content
    • False
    • Moderate
    • Sprint 119, Sprint 120, Sprint 121, Sprint 122, Sprint 123, Sprint 124, Sprint 125, Sprint 126, Sprint 127, Sprint 128, Sprint 129, Sprint 130, Sprint 131, Sprint 132, Sprint 133, Sprint 134, Sprint 135, Sprint 136, Sprint 137, Sprint 138, Sprint 139, Sprint 140, Sprint 141, Sprint 142
    • None
    • None
    • None
    • None
    • Yes

      Description of problem:
      In Satellite 6.12 (Katello 4.5) the "docker_tags_whitelist" parameter of a repository is deprecated in favor of include_tags/exclude_tags. Nevertheless I would expect that parameter to work.

      Trivial reproducer is something like the following curl call:

      1. curl -k -d ' {"docker_tags_whitelist":["lol"]}

        ' -u admin:changeme -H 'Content-Type: application/json' -X PUT https://localhost/katello/api/repositories/1

        {"displayMessage":"Missing values for repository.","errors":["param is missing or the value is empty: repository"]}

      This has worked on 6.11 and works in 6.11 if I replace docker_tags_whitelist with include_tags.

      The stacktrace in production.log looks like this:
      2022-09-14T11:58:11 [I|app|bbbdb6f8] Started PUT "/katello/api/repositories/1" for 127.0.0.1 at 2022-09-14 11:58:11 +0000
      2022-09-14T11:58:11 [I|app|bbbdb6f8] Processing by Katello::Api::V2::RepositoriesController#update as /
      2022-09-14T11:58:11 [I|app|bbbdb6f8] Parameters: {"docker_tags_whitelist"=>["lol"], "api_version"=>"v2", "id"=>"1", "repository"=>{}}
      2022-09-14T11:58:11 [I|app|bbbdb6f8] Authorized user admin(Admin User)
      2022-09-14T11:58:11 [E|app|bbbdb6f8] ActionController::ParameterMissing: param is missing or the value is empty: repository
      bbbdb6f8 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_controller/metal/strong_parameters.rb:462:in `require'
      bbbdb6f8 | /usr/share/gems/gems/katello-4.5.0.6/app/controllers/katello/api/v2/repositories_controller.rb:534:in `repository_params'
      bbbdb6f8 | /usr/share/gems/gems/katello-4.5.0.6/app/controllers/katello/api/v2/repositories_controller.rb:345:in `update'

      Version-Release number of selected component (if applicable):
      rubygem-katello-4.5.0.6-1.el8sat.noarch
      satellite-6.12.0-2.el8sat.noarch

      How reproducible:
      100%

      Steps to Reproduce:
      1. hammer product create --name lol --organization "Default Organization"
      2. hammer repository create --name lol --content-type docker --product lol --organization "Default Organization"
      3. curl -k -d '

      {"docker_tags_whitelist":["lol"]}

      ' -u admin:changeme -H 'Content-Type: application/json' -X PUT https://localhost/katello/api/repositories/1

      Actual results:

      {"displayMessage":"Missing values for repository.","errors":["param is missing or the value is empty: repository"]}

      Expected results:
      Repository updated

      Additional info:
      This still works via hammer (hammer -d repository update --name lol --product lol --organization "Default Organization" --docker-tags-whitelist lol) because hammer for some (unnecessary) reason sends a slightly different payload

      {"name":"lol", "docker_tags_whitelist":["lol"]}

      and that gets accepted by the API.

              rhn-support-wclark William Clark (Inactive)
              egolov@redhat.com Evgeni Golov
              Vladimír Sedmík Vladimír Sedmík
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: