Pulp: Issueshttps://pulp.plan.io/https://pulp.plan.io/favicon.ico2019-07-24T12:58:57ZPulp
Planio Docker Support - Test #5181 (CLOSED - COMPLETE): Removing docker manifests from a docker reposito...https://pulp.plan.io/issues/51812019-07-24T12:58:57Zbherring
<a name="Original-Dev-Problem"></a>
<h3 >Original Dev Problem<a href="#Original-Dev-Problem" class="wiki-anchor">¶</a></h3>
<p>Removing all docker manifests from a large docker repo seems to take a long time:</p>
<p>~300 manifests takes ~2 minutes<br>
~2000 manifests takes ~30-40 minutes</p>
<a name="Reproducer"></a>
<h3 >Reproducer:<a href="#Reproducer" class="wiki-anchor">¶</a></h3>
<p>1. Create and sync a docker repo such as: <a href="https://quay.io" class="external">https://quay.io</a> datawire/ambassador<br>
2. Remove all docker manifests from the repo: pulp-admin docker repo remove manifest --repo-id=1-docker-dev-7915f7d0-7a98-4131-9c41-1be7b578d442 --not id=foo</p>
<a name="Discussion-with-asmacado"></a>
<h3 >Discussion with asmacado<a href="#Discussion-with-asmacado" class="wiki-anchor">¶</a></h3>
<ul>
<li>A lot of the delay were caused by the sequential removals</li>
<li>If there was an outage while the task was on-going, the removal was left in a non-deterministic state</li>
<li>The timing model for removal for general use cases grew incredibly fast</li>
</ul>
<a name="Solutions-with-the-new-refactor"></a>
<h3 >Solutions with the new refactor:<a href="#Solutions-with-the-new-refactor" class="wiki-anchor">¶</a></h3>
<ul>
<li>All BLOBS and MANIFESTS are all removed at once</li>
<li>Higher level units are all removed second</li>
<li>Timing shrank from 300 ~=1hr to 300 ~=a few seconds</li>
</ul>
<a name="Concerns"></a>
<h3 >Concerns:<a href="#Concerns" class="wiki-anchor">¶</a></h3>
<ul>
<li>This refactor would affect removals and syncs</li>
<li>The removal, if interrupted, would leave Orphans which could affect upstream verification</li>
</ul>
<a name="Actions"></a>
<h3 >Actions:<a href="#Actions" class="wiki-anchor">¶</a></h3>
<a name="Upstream"></a>
<h4 >Upstream<a href="#Upstream" class="wiki-anchor">¶</a></h4>
<ul>
<li>Need an upstream verification that ensures there is no change in functionality with remove units and sync units</li>
</ul>
<a name="Downstream"></a>
<h4 >Downstream<a href="#Downstream" class="wiki-anchor">¶</a></h4>
<ul>
<li>Need to verify downstream verification are not affected by this change/patch</li>
<li>BZ verification will just be the removal of a large number of repos takes a short amount of time</li>
</ul>
<a name="Test-Permutations"></a>
<h3 >Test Permutations<a href="#Test-Permutations" class="wiki-anchor">¶</a></h3>
<a name="Remove"></a>
<h4 >Remove<a href="#Remove" class="wiki-anchor">¶</a></h4>
<p>Variables:</p>
<ul>
<li>(Permutations) Shared or Not Shared [manifest_lists, manifests]</li>
<li>type_ids": ['docker_tag', 'docker_manifest_list', 'docker_manifest', 'docker_blob']</li>
</ul>
<p>Verification Scenarios:</p>
<ul>
<li>For Not Shared, remove $REMOVAL_TYPES and verify all units have been removed</li>
<li>For Shared, remove $REMOVAL_TYPES and verify only non-shared units have been removed. Shared units should remain.</li>
</ul>
<p>Note:</p>
<ul>
<li>Removal Criteria short-cut for relevant type_id being removed.</li>
</ul>
<pre><code> criteria = {
"type_ids": ['docker_tag', 'docker_manifest_list', 'docker_manifest', 'docker_blob'],
"filters": {"unit": {"_id": {"$in": all_units}}},
}
</code></pre>
<ul>
<li>There are already tests covering tag removal</li>
</ul> Pulp - Test #5034 (CLOSED - COMPLETE): PULP_MANIFEST does not update correctly to publish files w...https://pulp.plan.io/issues/50342019-06-25T19:24:19Zbherring
<p>PULP_MANIFEST does not update correctly when delete an unit</p>
<p>PULP_MANIFEST does not update correctly to publish files with iso_distributor via fast-forward (refer to the issue[1]) when deleting an unit.</p>
<p>Reproducing steps:<br>
1. Create an iso repo<br>
2. Upload an iso to the repo<br>
3. Delete the iso and check the iso and PULP_MANIFEST, the iso file was removed but metadata is still in PULP_MANIFEST</p>
<p>[1] <a href="https://pulp.plan.io/issues/4708" class="external">https://pulp.plan.io/issues/4708</a>.</p> RPM Support - Test #4952 (CLOSED - COMPLETE): Missing rpms in erratum pkglist when an erratum app...https://pulp.plan.io/issues/49522019-06-11T12:15:26Zbherring
<p>Description of problem:<br>
Pulp will returns wrong 'pkglist' if an erratum exists in multiple repositories and user syncs multiple of these repositories</p>
<p>For example:<br>
Erratum 'RHSA-2019:1235' exists in both 'rhel-7-server-rpms' repo and 'rhel-7-server-optional-debug-rpms' repo with the following 'pkglist' respectively</p>
<p>rhel-7-server-rpms:<br>
"ruby-libs-2.0.0.648-35.el7_6.x86_64.rpm",<br>
"ruby-libs-2.0.0.648-35.el7_6.i686.rpm",<br>
"ruby-2.0.0.648-35.el7_6.x86_64.rpm",<br>
"rubygem-bigdecimal-1.2.0-35.el7_6.x86_64.rpm",<br>
"rubygem-psych-2.0.0-35.el7_6.x86_64.rpm",<br>
"rubygem-rdoc-4.0.0-35.el7_6.noarch.rpm",<br>
"ruby-irb-2.0.0.648-35.el7_6.noarch.rpm",<br>
"rubygem-io-console-0.4.2-35.el7_6.x86_64.rpm",<br>
"rubygems-2.0.14.1-35.el7_6.noarch.rpm",<br>
"rubygem-json-1.7.7-35.el7_6.x86_64.rpm"</p>
<p>rhel-7-server-optional-debug-rpms:<br>
"ruby-debuginfo-2.0.0.648-35.el7_6.x86_64.rpm",</p>
<p>After syncing these 2 repos to the Satellite, Pulp will only list the 'ruby-debuginfo rpm' in the erratum 'pkglist'. Pulp will calculate the wrong applicability for the consumer because the erratum is listing only 1 rpm.</p>
<p>Test in "foreman-rake console":</p>
<ol>
<li>Before enabling debug repo, the erratum shows 10 packages:<br>
pp Katello::pulp_server.resources.repository.unit_search("046aa6b4-6369-4ef7-a3f7-3959250bd86f", {:type_ids => ['erratum'], filters: {unit: {"errata_id": "RHSA-2019:1235"}}})[0]['metadata']['pkglist'][0]['packages'].size<br>
10</li>
</ol>
<ol>
<li>After enabling and sync debug repo. the erratum shows only 1 package.<br>
pp Katello::pulp_server.resources.repository.unit_search("046aa6b4-6369-4ef7-a3f7-3959250bd86f", {:type_ids => ['erratum'], filters: {unit: {"errata_id": "RHSA-2019:1235"}}})[0]['metadata']['pkglist'][0]['packages'].size<br>
1</li>
</ol>
<p>pp Katello::pulp_server.resources.repository.unit_search("046aa6b4-6369-4ef7-a3f7-3959250bd86f", {:type_ids => ['erratum'], filters: {unit: {"errata_id": "RHSA-2019:1235"}}})[0]['metadata']['pkglist'][0]['packages'][0]['filename']<br>
"ruby-debuginfo-2.0.0.648-35.el7_6.x86_64.rpm"</p>
<p>exit</p>
<p>Steps to Reproduce:<br>
1. Ensure you have a RHEL 7 client with older ruby version. Lets say Client 'A'.<br>
2. Enable and sync 'rhel-7-server-rpms' repo<br>
3. Go to Web UI -> Hosts -> Content Hosts -> Client 'A' -> Errata tab -> Filter "id = RHSA-2019:1235" should show this erratum is applicable/installable.<br>
4. Enable and sync 'rhel-7-server-optional-debug-rpms' repo<br>
5. Now need to do something so that we can FORCE recalculate the applicability for Client 'A'</p>
<p>On client 'A' do:<br>
subscription-manager repos --enable="rhel-7-server-optional-debug-rpms"<br>
katello-enabled-repos-upload -f</p>
<p>6. Wait for the regenerate applicability task to finish<br>
7. Go to Web UI -> Hosts -> Content Hosts -> Client 'A' -> Errata tab -> Filter "id = RHSA-2019:1235" shows empty result.</p>
<p>Actual results:<br>
Errata RHSA-2019:1235 is not applicable to Client A</p>
<p>Expected results:<br>
Errata RHSA-2019:1235 is applicable to the Client A</p> Pulp - Test #4942 (CLOSED - COMPLETE): [EPIC] - Pulp2 - 2.20 https://pulp.plan.io/issues/49422019-06-10T12:33:32Zbherring
<a name="Information"></a>
<h2 >Information<a href="#Information" class="wiki-anchor">¶</a></h2>
<p>As new issues are added for release candidate to P2 for 2.20, compiling all of those issues as related issues to this parent issue.</p>
<p>This ticket allows the release shepherd to keep up with the status of each ticket as QE is heading to Dev Freeze to attempt to stay ahead.</p>
<a name="Current-Topics"></a>
<h3 >Current Topics<a href="#Current-Topics" class="wiki-anchor">¶</a></h3>
<p>These topics will be a subset of Dev release notes.</p>
<p>Just here for quick FYI on scanning:</p>
<ul>
<li>Modularity</li>
<li>Unit Copy Duplication</li>
<li>Issue with libsolv even in building: <a href="https://bugzilla.redhat.com/show_bug.cgi?id=1718015" class="external">https://bugzilla.redhat.com/show_bug.cgi?id=1718015</a>
</li>
</ul> Docker Support - Test #4941 (CLOSED - COMPLETE): Pulp 2 Nightly Regression: Dockerv1 Interface de...https://pulp.plan.io/issues/49412019-06-10T11:36:24Zbherring
<a name="Problem"></a>
<h2 >Problem<a href="#Problem" class="wiki-anchor">¶</a></h2>
<ul>
<li>Nightly CI is now failing for docker v1</li>
<li>Started: June 7, 2019</li>
</ul>
<a name="Solution"></a>
<h2 >Solution<a href="#Solution" class="wiki-anchor">¶</a></h2>
<ul>
<li>Remove deprecated/unsupported DockerV1 testing from Pulp-2-Testing</li>
</ul> Python Support - Test #4748 (CLOSED - DUPLICATE): Improve Publications functional testshttps://pulp.plan.io/issues/47482019-04-30T12:13:07Zamacdona@redhat.comaustin@redhat.com
<p>The tests written during the feature change are a stopgap, and have some problems:<br>
<a href="https://github.com/pulp/pulp_python/pull/242/" class="external">https://github.com/pulp/pulp_python/pull/242/</a></p>
<p>The tests need to be broken up. Currently they are fragile and fully dependent on each other to pass. Ideally, the preparation should be moved to the setup of each class, but this could cause slow tests since a lot of steps need to be in place before a publication can be created. Please have a look at the utilities, they probably need to be refactored.</p> RPM Support - Test #4727 (CLOSED - COMPLETE): rpm_rsync_distributor is broken for yum_repo_metada...https://pulp.plan.io/issues/47272019-04-23T19:41:52Zbherring
<p>rpm_rsync_distributor doesn't work at all for units of type yum_repo_metadata_file. It will publish broken symlinks to the remote host.</p>
<p>This is due to the following interaction between yum_distributor and rpm_rsync_distributor:</p>
<p>First, in yum_distributor, the metadata file is <strong>symlinked</strong> from repo publish dir to storage path:</p>
<pre><code class="python syntaxhl" data-language="python"><span class="k">class</span> <span class="nc">PublishMetadataStep</span><span class="p">(</span><span class="n">platform_steps</span><span class="p">.</span><span class="n">UnitModelPluginStep</span><span class="p">):</span>
<span class="p">...</span>
<span class="k">def</span> <span class="nf">process_main</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">item</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="s">"""
Copy the metadata file into place and add it to the repomd file.
:param item: The unit to process
:type item: pulp.server.db.model.ContentUnit
"""</span>
<span class="n">unit</span> <span class="o">=</span> <span class="n">item</span>
<span class="c1"># Copy the file to the location on disk where the published repo is built
</span> <span class="n">publish_location_relative_path</span> <span class="o">=</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="p">.</span><span class="n">get_working_dir</span><span class="p">(),</span>
<span class="n">REPO_DATA_DIR_NAME</span><span class="p">)</span>
<span class="n">metadata_file_name</span> <span class="o">=</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">basename</span><span class="p">(</span><span class="n">unit</span><span class="p">.</span><span class="n">_storage_path</span><span class="p">)</span>
<span class="n">link_path</span> <span class="o">=</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">publish_location_relative_path</span><span class="p">,</span> <span class="n">metadata_file_name</span><span class="p">)</span>
<span class="n">plugin_misc</span><span class="p">.</span><span class="n">create_symlink</span><span class="p">(</span><span class="n">unit</span><span class="p">.</span><span class="n">_storage_path</span><span class="p">,</span> <span class="n">link_path</span><span class="p">)</span>
<span class="c1"># Add the proper relative reference to the metadata file to repomd
</span> <span class="bp">self</span><span class="p">.</span><span class="n">parent</span><span class="p">.</span><span class="n">repomd_file_context</span><span class="p">.</span>\
<span class="n">add_metadata_file_metadata</span><span class="p">(</span><span class="n">unit</span><span class="p">.</span><span class="n">data_type</span><span class="p">,</span> <span class="n">link_path</span><span class="p">)</span>
</code></pre>
<p>That results in a yum repo with a symlink as in following example:</p>
<pre><code>$ ls -l /var/lib/pulp/published/yum/master/yum_distributor/rhel-ha-for-rhel-7-for-system-z-rpms__7Server__s390x/1552949091.82/repodata/
total 200
-rw-r--r--. 1 apache apache 2087 Mar 18 22:44 29e7003fe4c25a3291e80c16006ca0edc315c8b89f930f8be9f435bb10c1000b-updateinfo.xml.gz
-rw-r--r--. 1 apache apache 160494 Mar 18 22:44 792d01f805670173c58c8c55b1b960576de6b72215bd61d845b077af254d7e14-other.xml.gz
-rw-r--r--. 1 apache apache 16643 Mar 18 22:44 79f6997620d82b1085fb9dc22499b81d1b4ccb8a6113372039273d0dbab5be9f-filelists.xml.gz
lrwxrwxrwx. 1 apache apache 153 Mar 18 22:44 85771b84-06dd-4e4d-9e88-1b1d5616b3cc -> /var/lib/pulp/content/units/yum_repo_metadata_file/6b/74066bca70043c0cec6f1c43bc973a4bb84aa9ff6579757b8b0a9be1bcf81b/85771b84-06dd-4e4d-9e88-1b1d5616b3cc
-rw-r--r--. 1 apache apache 124 Mar 18 22:44 a27718cc28ec6d71432e0ef3e6da544b7f9d93f6bb7d0a55aacd592d03144b70-comps.xml
-rw-r--r--. 1 apache apache 3575 Mar 18 22:44 a57cc25570ba03b0c7fc82ad4502fad14fb20b404f065801563bc58ea8340eda-primary.xml.gz
-rw-r--r--. 1 apache apache 2405 Mar 18 22:44 repomd.xml
</code></pre>
<p>Then, rpm_rsync_distributor performs rsync of repodata directory <strong>with links=True</strong>, meaning rsync --links, meaning "copy symlinks as symlinks":</p>
<pre><code class="python syntaxhl" data-language="python"> <span class="bp">self</span><span class="p">.</span><span class="n">add_child</span><span class="p">(</span><span class="n">RSyncPublishStep</span><span class="p">(</span><span class="s">"Rsync step (repodata)"</span><span class="p">,</span>
<span class="n">repodata_file_list</span><span class="p">,</span>
<span class="s">"%s/"</span> <span class="o">%</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">master_dir</span><span class="p">,</span> <span class="s">'repodata'</span><span class="p">),</span>
<span class="s">"%s/"</span> <span class="o">%</span> <span class="n">os</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">remote_repo_path</span><span class="p">,</span> <span class="s">'repodata'</span><span class="p">),</span>
<span class="n">exclude</span><span class="o">=</span><span class="p">[</span><span class="s">".*"</span><span class="p">,</span> <span class="s">"repodata.old"</span><span class="p">],</span>
<span class="n">config</span><span class="o">=</span><span class="n">config</span><span class="p">,</span> <span class="n">links</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
<span class="n">delete</span><span class="o">=</span><span class="bp">self</span><span class="p">.</span><span class="n">config</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="s">"delete"</span><span class="p">)))</span>
</code></pre>
<p>This indeed rsyncs the symlink onto the remote host exactly as it is:</p>
<pre><code>$ ls -l /mnt/redhat/cdn/content/dist/rhel/system-z/7/7Server/s390x/highavailability/os/repodata | grep 85771b84-06dd-4e4d-9e88-1b1d5616b3cc
lrwxrwxrwx. 1 vagrant vagrant 153 Mar 18 22:44 85771b84-06dd-4e4d-9e88-1b1d5616b3cc -> /var/lib/pulp/content/units/yum_repo_metadata_file/6b/74066bca70043c0cec6f1c43bc973a4bb84aa9ff6579757b8b0a9be1bcf81b/85771b84-06dd-4e4d-9e88-1b1d5616b3cc
</code></pre>
<p>That's a broken symlink to /var/lib/pulp, which is not expected to exist on the remote. Hence the file is not able to be accessed and the published repo is incomplete.</p>
<a name="Steps-to-reproduce"></a>
<h3 >Steps to reproduce<a href="#Steps-to-reproduce" class="wiki-anchor">¶</a></h3>
<p>- Create a repo with yum_distributor, rpm_rsync_distributor<br>
- Add any yum_repo_metadata_file to the repo<br>
- Publish the repo with yum_distributor and then rpm_rsync_distributor</p>
<a name="Expected-result"></a>
<h3 >Expected result<a href="#Expected-result" class="wiki-anchor">¶</a></h3>
<p>All yum_repo_metadata_file in the repo are accessible in the repo published to remote host via rpm_rsync_distributor</p>
<a name="Actual-result"></a>
<h3 >Actual result<a href="#Actual-result" class="wiki-anchor">¶</a></h3>
<p>All yum_repo_metadata_file in published repo are broken symlinks.</p> Pulp - Test #4659 (CLOSED - DUPLICATE): Add RHEL to the ansible-pulp molecule CIhttps://pulp.plan.io/issues/46592019-04-09T15:14:09Zamacdona@redhat.comaustin@redhat.com
<p><strong>Ticket moved to GitHub</strong>: "pulp/pulpcore/1822":<a href="https://github.com/pulp/pulpcore/issues/1822" class="external">https://github.com/pulp/pulpcore/issues/1822</a></p>
<hr>
<p>Unlike the other OSes that are currently tested, RHEL needs some additional steps, notably, enabling the subscription.</p>
<p>This test will be complete when RHEL is included in the test matrix for the ansible installer.</p> RPM Support - Test #4632 (CLOSED - COMPLETE): Publish YumMetadataFiles as files and not symlinkshttps://pulp.plan.io/issues/46322019-04-03T12:06:21Zbherring
<p>YumMetadata File should be copied, not symlinked into the publish location. (check the associated bz for more info.)</p> RPM Support - Test #4566 (CLOSED - COMPLETE): Improve performance of rpm duplicate nevra checkhttps://pulp.plan.io/issues/45662019-03-25T12:53:30Zbherring
<p>In current versions of Pulp 2.x, uploading an RPM to a repo will remove other RPMs with the same NEVRA.</p>
<p>Currently, we are upgrading from an old version of Pulp 2.7, and I've found that performance of import_uploaded_unit tasks for RPMs has regressed significantly. In Pulp 2.7, imports would usually take around 0.5s. In Pulp 2-master, imports to the same repos have taken from 8 to 130 seconds, depending on the size of the repo.</p>
<p>By debugging I've found most of the time is spent in this duplicate check (remove_unit_duplicate_nevra).</p>
<p>This issue is for improving the performance of remove_unit_duplicate_nevra to reduce the severity of the performance regression.</p> RPM Support - Test #4548 (CLOSED - COMPLETE): Ensure modular_errata.py includes cases for --recur...https://pulp.plan.io/issues/45482019-03-18T16:46:33Zbherring
<a name="Parent-Tickets"></a>
<h3 >Parent Tickets<a href="#Parent-Tickets" class="wiki-anchor">¶</a></h3>
<ul>
<li><a class="issue tracker-3 status-11 priority-6 priority-default closed parent" title="Story: Implement modularity content dependency solving (CLOSED - CURRENTRELEASE)" href="https://pulp.plan.io/issues/3740">#3740</a> && <a class="issue tracker-2 status-11 priority-6 priority-default closed" title="Task: Document how to use the newly added recursive_conservative (CLOSED - CURRENTRELEASE)" href="https://pulp.plan.io/issues/4371">#4371</a></li>
</ul>
<a name="Affected-Files"></a>
<h3 >Affected File(s)<a href="#Affected-Files" class="wiki-anchor">¶</a></h3>
<ul>
<li>test_modular_errata.py::ManageModularErrataTestCase::test_copy_errata</li>
</ul>
<a name="Update"></a>
<h3 >Update<a href="#Update" class="wiki-anchor">¶</a></h3>
<ul>
<li>Evaluate if the following are covered already and if any additional updates are required
<ul>
<li>Ensure test_modular_errata test includes --recursive and --recursive_conservative cases</li>
<li>Ensure that <strong>latest</strong> RPM copy test case is included</li>
</ul>
</li>
</ul> RPM Support - Test #4547 (CLOSED - COMPLETE): Ensure rich_weak_deps test includes --recursive and...https://pulp.plan.io/issues/45472019-03-18T16:31:47Zbherring
<a name="Parent-Tickets"></a>
<h3 >Parent Tickets<a href="#Parent-Tickets" class="wiki-anchor">¶</a></h3>
<ul>
<li><a class="issue tracker-3 status-11 priority-6 priority-default closed parent" title="Story: Implement modularity content dependency solving (CLOSED - CURRENTRELEASE)" href="https://pulp.plan.io/issues/3740">#3740</a> --> <a class="issue tracker-3 status-11 priority-6 priority-default closed child" title="Story: As a user, I have dependency solving when copying modules (CLOSED - CURRENTRELEASE)" href="https://pulp.plan.io/issues/4162">#4162</a> --> <a class="issue tracker-5 status-13 priority-7 priority-high2 closed child" title="Test: Implement modularity content dependency solving (CLOSED - COMPLETE)" href="https://pulp.plan.io/issues/4364">#4364</a></li>
</ul>
<a name="Affected-Files"></a>
<h3 >Affected File(s)<a href="#Affected-Files" class="wiki-anchor">¶</a></h3>
<ul>
<li>test_rich_weak_dependencies.py::CopyRecursiveUnitsTestCase</li>
</ul>
<a name="Update"></a>
<h3 >Update<a href="#Update" class="wiki-anchor">¶</a></h3>
<ul>
<li>Ensure rich_weak_deps test includes --recursive and --recursive_conservative cases</li>
<li>Ensure that <strong>latest</strong> RPM copy test case is included in rick and weak logic</li>
</ul>
<a name="Notes"></a>
<h3 >Notes<a href="#Notes" class="wiki-anchor">¶</a></h3>
<p>Milan created the following fixture for this test case:</p>
<ul>
<li><a href="https://repos.fedorapeople.org/pulp/pulp/fixtures/rpm-richnweak-deps/" class="external">https://repos.fedorapeople.org/pulp/pulp/fixtures/rpm-richnweak-deps/</a></li>
</ul>
<p>The fixture seems to follow the same missing logic as other tests before documentation was provided:</p>
<ul>
<li>Check if there is an older RPM on the remote REPO, if --recursive is used, the newer RPM is copied as wlel</li>
<li>If both flags are used, ensure only conservative logic works (does not upload the latest RPM)</li>
<li>If modules are included in the fixture, ensure all modules and erratum are copied. RPMS still obey the flags logic</li>
</ul> Docker Support - Test #4129 (CLOSED - COMPLETE): Test sync of a repository that returns a 403 res...https://pulp.plan.io/issues/41292018-11-06T19:56:22Zamacdona@redhat.comaustin@redhat.com
<p>This test will require the creation of a new fixture for pulp_docker that is a corrupted repository. This fixture is primarily intended to test <a href="https://pulp.plan.io/issues/2966" class="external">https://pulp.plan.io/issues/2966</a> (pulp 2) but could also be useful for testing pulp 3.</p>
<p>From 2966, it appears that a 403 can be caused by a missing symlink in the published repository.</p> Docker Support - Test #4128 (CLOSED - COMPLETE): Test sync of a repository that is missing blobshttps://pulp.plan.io/issues/41282018-11-06T19:52:42Zamacdona@redhat.comaustin@redhat.com
<p>This test will require the creation of a new fixture for pulp_docker that is a corrupted repository. This fixture is primarily intended to test <a href="https://pulp.plan.io/issues/2849" class="external">https://pulp.plan.io/issues/2849</a> (pulp 2) but could also be useful for testing pulp 3.</p>
<p>The "corrupted repository" can be a fully published non-corrupt repository that is simply missing one or more Images referenced by or or more of the Image Manifests.</p> Pulp - Test #3634 (CLOSED - COMPLETE): Write functional tests for task delete and cancel codehttps://pulp.plan.io/issues/36342018-04-30T20:59:51Zamacdona@redhat.comaustin@redhat.com
<p>Tests should successfully delete tasks in final states, and should not be able to delete tasks in waiting or running states.</p>
<p>Tests should successfully cancel tasks in waiting and running states, but should not be able to cancel tasks in final states.</p>