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

Capsule container repo complete sync fails with 'find' nil error

XMLWordPrintable

    • None
    • None
    • None
    • None

      Description of problem:

      When running a complete sync on a capsule with a container repo in it, there is an error:

       

      undefined method `find' for nil:NilClass 
      
      ---
      - "/usr/share/gems/gems/katello-4.20.0.pre.master/app/services/katello/pulp3/task.rb:84:in
        `task_group_href'"
      - "/usr/share/gems/gems/katello-4.20.0.pre.master/app/lib/actions/pulp3/abstract_async_task.rb:147:in
        `block in add_task_groups'"
      - "/usr/share/gems/gems/katello-4.20.0.pre.master/app/lib/actions/pulp3/abstract_async_task.rb:146:in
        `each'"
      - "/usr/share/gems/gems/katello-4.20.0.pre.master/app/lib/actions/pulp3/abstract_async_task.rb:146:in
        `add_task_groups'"
      - "/usr/share/gems/gems/katello-4.20.0.pre.master/app/lib/actions/pulp3/abstract_async_task.rb:129:in
        `external_task='"
      - "/usr/share/gems/gems/dynflow-1.9.3/lib/dynflow/action/polling.rb:84:in `initiate_external_action'"
      ...

       

       

      How reproducible:

      Likely 100%

      Is this issue a regression from an earlier version:

      Yes

      Steps to Reproduce:

      In my case, I was testing N-2 capsules, which I think should not be necessary. But:

      1. Create a Satellite stream with a 6.17 capsule

      2. Sync a container repo normally to the capsule (it should pass)

      3. Sync the capsule now using "complete sync"

      Actual behavior:
      Dynflow error

      Expected behavior:
      Sync passes fine

      Business Impact / Additional info:

      This relates to https://issues.redhat.com/browse/SAT-39251, but now the Pulp container plugin is the problem.

      If you look in Dynflow for the normal container sync, you'll find that the RefreshRepos step has an output like:

      ---
      pulp_tasks: []
      task_groups: []

      This is because the bindings are incorrectly returning no information for the task:

      irb(main):002:0> ::Katello::Repository.find(2).backend_service(SmartProxy.first).refresh_mirror_entities
      => [#<PulpContainerClient::ContainerContainerRemoteResponse:0x00007f8eec0a2710 @name=nil, @upstream_name=nil, @url=nil>]
       

      The root cause is that Satellite is using Pulp's generated API bindings from rubygems, but they technically only work with the latest version of Pulpcore. To fix this, unless we start generating the bindings ourselves, we'll need to either (a) pin the pulp container bindings indefinitely (bad idea for fixes/security), or (b) patch the bindings ourselves from Katello.

              iballou@redhat.com Ian Ballou
              iballou@redhat.com Ian Ballou
              Samir Jha Samir Jha
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: