katello 4.3.0.rc1 → 4.3.0.rc4

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of katello might be problematic. Click here for more details.

Files changed (299) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/katello/api/v2/api_controller.rb +4 -0
  3. data/app/controllers/katello/api/v2/capsule_content_controller.rb +11 -3
  4. data/app/controllers/katello/api/v2/content_uploads_controller.rb +1 -1
  5. data/app/controllers/katello/api/v2/generic_content_units_controller.rb +10 -4
  6. data/app/controllers/katello/api/v2/host_errata_controller.rb +5 -0
  7. data/app/controllers/katello/api/v2/host_packages_controller.rb +2 -0
  8. data/app/controllers/katello/api/v2/host_tracer_controller.rb +4 -0
  9. data/app/controllers/katello/api/v2/repositories_bulk_actions_controller.rb +8 -0
  10. data/app/controllers/katello/api/v2/repositories_controller.rb +35 -3
  11. data/app/controllers/katello/api/v2/repository_sets_controller.rb +2 -2
  12. data/app/controllers/katello/api/v2/root_controller.rb +10 -19
  13. data/app/controllers/katello/concerns/api/v2/bulk_extensions.rb +3 -13
  14. data/app/controllers/katello/concerns/api/v2/registration_controller_extensions.rb +1 -9
  15. data/app/controllers/katello/remote_execution_controller.rb +1 -1
  16. data/app/lib/actions/katello/capsule_content/refresh_repos.rb +1 -1
  17. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +7 -5
  18. data/app/lib/actions/katello/repository/destroy.rb +3 -3
  19. data/app/lib/actions/katello/repository/import_upload.rb +12 -2
  20. data/app/lib/actions/pulp/repository/sync.rb +0 -2
  21. data/app/lib/actions/pulp3/abstract_async_task.rb +16 -4
  22. data/app/lib/actions/pulp3/capsule_content/generate_metadata.rb +5 -4
  23. data/app/lib/actions/pulp3/capsule_content/reclaim_space.rb +25 -0
  24. data/app/lib/actions/pulp3/orchestration/repository/import_repository_upload.rb +36 -0
  25. data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +1 -1
  26. data/app/lib/actions/pulp3/repository/commit_upload.rb +3 -1
  27. data/app/lib/actions/pulp3/repository/import_upload.rb +4 -2
  28. data/app/lib/actions/pulp3/repository/reclaim_space.rb +25 -0
  29. data/app/lib/actions/pulp3/repository/save_artifact.rb +12 -8
  30. data/app/lib/katello/resources/cdn.rb +10 -1
  31. data/app/lib/katello/resources/registry.rb +1 -1
  32. data/app/models/katello/concerns/host_managed_extensions.rb +7 -4
  33. data/app/models/katello/concerns/smart_proxy_extensions.rb +21 -9
  34. data/app/models/katello/content_view_version.rb +1 -6
  35. data/app/models/katello/glue/pulp/repo.rb +1 -2
  36. data/app/models/katello/host_tracer.rb +2 -0
  37. data/app/models/katello/pulp3/repository_reference.rb +7 -0
  38. data/app/models/katello/repository.rb +2 -30
  39. data/app/models/katello/root_repository.rb +3 -44
  40. data/app/models/setting/content.rb +2 -8
  41. data/app/presenters/katello/host_package_presenter.rb +21 -0
  42. data/app/services/katello/bulk_items_helper.rb +35 -0
  43. data/app/services/katello/pulp3/api/core.rb +16 -2
  44. data/app/services/katello/pulp3/content.rb +4 -2
  45. data/app/services/katello/pulp3/pulp_content_unit.rb +9 -3
  46. data/app/services/katello/pulp3/repository.rb +9 -4
  47. data/app/services/katello/pulp3/repository_mirror.rb +1 -1
  48. data/app/services/katello/repository_type.rb +2 -1
  49. data/app/services/katello/smart_proxy_helper.rb +10 -1
  50. data/app/views/foreman/job_templates/change_content_source.erb +42 -0
  51. data/app/views/foreman/job_templates/install_errata.erb +8 -6
  52. data/app/views/foreman/job_templates/resolve_traces.erb +4 -5
  53. data/app/views/foreman/job_templates/resolve_traces_-_katello_ansible_default.erb +3 -5
  54. data/app/views/foreman/smart_proxies/_content_sync.html.erb +17 -4
  55. data/app/views/foreman/smart_proxies/_reclaim_space.html.erb +12 -0
  56. data/app/views/foreman/smart_proxies/show.html.erb +4 -2
  57. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +6 -0
  58. data/app/views/katello/api/v2/{organizations/cdn_configuration.rabl → cdn_configurations/show.json.rabl} +4 -0
  59. data/app/views/katello/api/v2/content_facet/show.json.rabl +8 -0
  60. data/app/views/katello/api/v2/content_view_filters/show.json.rabl +0 -1
  61. data/app/views/katello/api/v2/content_views/base.json.rabl +1 -1
  62. data/app/views/katello/api/v2/host_packages/base.json.rabl +2 -0
  63. data/app/views/katello/api/v2/organizations/show.json.rabl +1 -1
  64. data/app/views/katello/api/v2/repositories/show.json.rabl +0 -3
  65. data/config/routes/api/v2.rb +5 -10
  66. data/db/migrate/20210331180353_katello_pool_organization_id_not_nullable.rb +2 -0
  67. data/db/migrate/20211115215210_drop_ostree_branches.rb +13 -0
  68. data/db/migrate/20211129200124_remove_dependency_solving_algorithm_setting.rb +5 -0
  69. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion-katello-bootstrap.js +1 -2
  70. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion_katello.js +3 -3
  71. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.controller.js +21 -1
  72. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.factory.js +2 -1
  73. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/sync-state.service.js +2 -0
  74. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.routes.js +0 -10
  75. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-versions.html +0 -3
  76. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version-content.controller.js +0 -10
  77. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-versions.module.js +0 -1
  78. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version.html +0 -7
  79. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/content.service.js +0 -5
  80. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.module.js +0 -1
  81. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.routes.js +0 -11
  82. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/fenced-pages.service.js +1 -2
  83. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/product-repositories.controller.js +14 -2
  84. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +2 -4
  85. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.filter.js +0 -10
  86. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-reclaim-space-modal.controller.js +36 -0
  87. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +16 -2
  88. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details-reclaim-space-modal.html +18 -0
  89. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +13 -0
  90. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +1 -1
  91. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +3 -6
  92. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +4 -1
  93. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/os-versions.service.js +1 -0
  94. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/product-repositories-reclaim-space-modal.controller.js +35 -0
  95. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repositories.routes.js +0 -9
  96. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +3 -1
  97. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories-reclaim-space-modal.html +18 -0
  98. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories.html +7 -8
  99. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/pulp-primary/pulp-primary.controller.js +35 -0
  100. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/pulp-primary/pulp-primary.factory.js +18 -0
  101. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/pulp-primary/pulp-primary.module.js +14 -0
  102. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/pulp-primary/pulp-primary.routes.js +16 -0
  103. data/engines/bastion_katello/lib/bastion_katello/engine.rb +0 -1
  104. data/lib/katello/permission_creator.rb +3 -4
  105. data/lib/katello/plugin.rb +4 -10
  106. data/lib/katello/repository_types/ostree.rb +3 -1
  107. data/lib/katello/tasks/reset.rake +2 -2
  108. data/lib/katello/tasks/upgrades/4.3/fix_url_auth.rake +25 -0
  109. data/lib/katello/version.rb +1 -1
  110. data/package.json +1 -0
  111. data/webpack/components/AddedStatusLabel.js +2 -1
  112. data/webpack/components/EditableTextInput/EditableTextInput.js +76 -17
  113. data/webpack/components/EditableTextInput/__tests__/editableTextInput.test.js +82 -0
  114. data/webpack/components/EditableTextInput/editableTextInput.scss +4 -0
  115. data/webpack/components/Packages/index.js +63 -0
  116. data/webpack/components/RoutedTabs/index.js +3 -1
  117. data/webpack/components/Search/Search.js +7 -1
  118. data/webpack/components/SelectAllCheckbox/index.js +2 -2
  119. data/webpack/components/Table/EmptyStateMessage.js +4 -2
  120. data/webpack/components/Table/MainTable.scss +7 -1
  121. data/webpack/components/Table/TableHooks.js +10 -19
  122. data/webpack/components/Table/TableWrapper.js +3 -3
  123. data/webpack/components/WithOrganization/__snapshots__/withOrganization.test.js.snap +3 -3
  124. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard.js +24 -30
  125. data/webpack/components/extensions/HostDetails/HostDetailsConstants.js +1 -0
  126. data/webpack/components/extensions/HostDetails/HostDetailsSelectors.js +16 -0
  127. data/webpack/components/extensions/HostDetails/HostErrata/HostErrataConstants.js +2 -0
  128. data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesActions.js +11 -0
  129. data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesConstants.js +2 -0
  130. data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesSelectors.js +16 -0
  131. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +4 -0
  132. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/constants.js +1 -0
  133. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab.js +119 -25
  134. data/webpack/components/extensions/HostDetails/Tabs/HostTracesConstants.js +1 -0
  135. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab.js +127 -0
  136. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab.scss +11 -0
  137. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +30 -4
  138. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +1 -0
  139. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsActions.js +73 -0
  140. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsConstants.js +2 -0
  141. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsSelectors.js +16 -0
  142. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +347 -0
  143. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.scss +7 -0
  144. data/webpack/components/extensions/HostDetails/Tabs/TracesTab.js +38 -31
  145. data/webpack/components/extensions/HostDetails/Tabs/__tests__/bookmarks.fixtures.json +12 -0
  146. data/webpack/components/extensions/HostDetails/Tabs/__tests__/contentOverrides.fixtures.json +227 -0
  147. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +423 -2
  148. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packages.fixtures.json +28 -0
  149. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +91 -0
  150. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySets.fixtures.json +120 -0
  151. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +307 -0
  152. data/webpack/components/extensions/HostDetails/Tabs/__tests__/resolveErrata.fixtures.json +35 -0
  153. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +55 -9
  154. data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +28 -14
  155. data/webpack/containers/Application/overrides.scss +31 -9
  156. data/webpack/global_index.js +11 -4
  157. data/webpack/redux/reducers/RedHatRepositories/enabled.fixtures.js +0 -2
  158. data/webpack/scenes/Content/ContentConfig.js +23 -7
  159. data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +2 -0
  160. data/webpack/scenes/ContentCredentials/ContentCredentialActions.js +18 -0
  161. data/webpack/scenes/ContentCredentials/ContentCredentialConstants.js +2 -0
  162. data/webpack/scenes/ContentCredentials/ContentCredentialSelectors.js +12 -0
  163. data/webpack/scenes/ContentCredentials/__tests__/contentCredentials.fixtures.js +73 -0
  164. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +8 -12
  165. data/webpack/scenes/ContentViews/Copy/CopyContentViewModal.js +1 -1
  166. data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +1 -1
  167. data/webpack/scenes/ContentViews/Create/ContentViewFormComponents.js +3 -3
  168. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +7 -2
  169. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.scss +7 -0
  170. data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +9 -9
  171. data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +6 -6
  172. data/webpack/scenes/ContentViews/Delete/Steps/CVDeleteEnvironmentsSelection.js +39 -37
  173. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionFinish.js +10 -4
  174. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReview.js +35 -33
  175. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +12 -7
  176. data/webpack/scenes/ContentViews/Delete/__tests__/cvVersionsData.fixtures.json +2 -6
  177. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +13 -14
  178. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +36 -31
  179. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +8 -8
  180. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +108 -41
  181. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +3 -2
  182. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +2 -2
  183. data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterCreateResult.fixtures.json +1 -2
  184. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +1 -4
  185. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +6 -6
  186. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +11 -5
  187. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +6 -9
  188. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +5 -8
  189. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +40 -43
  190. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +2 -2
  191. data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +4 -4
  192. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +6 -8
  193. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +6 -1
  194. data/webpack/scenes/ContentViews/Details/Filters/Rules/ContainerTag/AddEditContainerTagRuleModal.js +1 -1
  195. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +16 -22
  196. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +8 -8
  197. data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +3 -5
  198. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewErrataByDateDetails.fixtures.json +1 -8
  199. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetail.fixtures.json +1 -2
  200. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +5 -9
  201. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvAllRepos.fixtures.json +0 -2
  202. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataDateFilterContent.test.js +1 -9
  203. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +2 -4
  204. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErratumFilterDetails.fixtures.json +1 -2
  205. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailModuleAffectedRepos.fixtures.json +1 -8
  206. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailWithAffectedRepos.fixtures.json +1 -8
  207. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +2 -4
  208. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilterDetails.fixtures.json +1 -2
  209. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvPackageFilterDetail.fixtures.json +1 -3
  210. data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +61 -32
  211. data/webpack/scenes/ContentViews/Details/Repositories/ContentCounts.js +6 -1
  212. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +5 -8
  213. data/webpack/scenes/ContentViews/Details/Repositories/LastSync.js +55 -9
  214. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +2 -0
  215. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.fixtures.json +0 -2
  216. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionContent.js +48 -29
  217. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionEnvironments.js +2 -2
  218. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionErrata.js +9 -7
  219. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionErrata.scss +5 -2
  220. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +38 -9
  221. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +4 -1
  222. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +59 -53
  223. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionDeleteFinish.js +14 -3
  224. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +24 -17
  225. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +3 -3
  226. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/versionsResponseData.fixtures.json +1 -4
  227. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +4 -2
  228. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +134 -32
  229. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionRepositoryCell.js +8 -3
  230. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionComponent.fixtures.json +1 -4
  231. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.fixtures.json +1 -2
  232. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +21 -1
  233. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsCounts.fixtures.json +1 -2
  234. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +22 -1
  235. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionRepositories.fixtures.json +1 -18
  236. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.fixtures.json +5 -5
  237. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +2 -0
  238. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersionsWithTask.fixtures.json +1 -3
  239. data/webpack/scenes/ContentViews/Details/contentViewInfo.scss +0 -4
  240. data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +66 -53
  241. data/webpack/scenes/ContentViews/Publish/CVPublishReview.js +40 -28
  242. data/webpack/scenes/ContentViews/Publish/PublishContentViewWizard.js +3 -3
  243. data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +14 -14
  244. data/webpack/scenes/ContentViews/Publish/cvPublishForm.scss +6 -0
  245. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +53 -12
  246. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +12 -6
  247. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +6 -6
  248. data/webpack/scenes/ContentViews/components/ContentViewIcon.js +12 -7
  249. data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +2 -2
  250. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +26 -27
  251. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.scss +18 -6
  252. data/webpack/scenes/ContentViews/components/WizardHeader.js +44 -0
  253. data/webpack/scenes/ContentViews/components/contentViewIcon.scss +13 -2
  254. data/webpack/scenes/Organizations/OrganizationActions.js +22 -24
  255. data/webpack/scenes/Organizations/OrganizationConstants.js +1 -3
  256. data/webpack/scenes/Organizations/OrganizationReducer.js +0 -7
  257. data/webpack/scenes/Organizations/OrganizationSelectors.js +16 -0
  258. data/webpack/scenes/Organizations/__tests__/OrganizationActions.test.js +1 -21
  259. data/webpack/scenes/Organizations/__tests__/OrganizationReducer.test.js +0 -20
  260. data/webpack/scenes/Organizations/__tests__/organizations.fixtures.js +34 -23
  261. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationForm.js +185 -0
  262. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationForm.scss +3 -0
  263. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +112 -146
  264. data/webpack/scenes/Subscriptions/Manifest/__tests__/CdnConfigurationForm.test.js +114 -0
  265. data/webpack/scenes/Subscriptions/Manifest/__tests__/ManageManifestModal.test.js +121 -31
  266. data/webpack/scenes/Subscriptions/Manifest/index.js +14 -3
  267. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +1 -0
  268. data/webpack/scenes/Tasks/TaskActions.js +4 -3
  269. data/webpack/scenes/Tasks/__tests__/__snapshots__/TaskActions.test.js.snap +1 -0
  270. data/webpack/utils/helpers.js +2 -2
  271. metadata +62 -43
  272. data/app/controllers/katello/api/v2/ostree_branches_controller.rb +0 -16
  273. data/app/lib/actions/pulp/repository/presenters/ostree_presenter.rb +0 -91
  274. data/app/models/katello/ostree_branch.rb +0 -12
  275. data/app/models/katello/repository_ostree_branch.rb +0 -7
  276. data/app/services/katello/pulp/ostree_branch.rb +0 -14
  277. data/app/services/katello/pulp/repository/ostree.rb +0 -48
  278. data/app/views/katello/api/v2/ostree_branches/compare.json.rabl +0 -10
  279. data/app/views/katello/api/v2/ostree_branches/index.json.rabl +0 -7
  280. data/app/views/katello/api/v2/ostree_branches/show.json.rabl +0 -5
  281. data/app/views/katello/api/v2/root/resource_list.json.rabl +0 -3
  282. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-ostree-branches.html +0 -26
  283. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-ostree.html +0 -27
  284. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/ostree-branch-repositories.controller.js +0 -77
  285. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/ostree-branch.controller.js +0 -31
  286. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/views/ostree-branch-info.html +0 -15
  287. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/views/ostree-branch-repositories.html +0 -72
  288. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/views/ostree-branch.html +0 -30
  289. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/ostree-branch.factory.js +0 -27
  290. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/ostree-branches.controller.js +0 -67
  291. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/ostree-branches.module.js +0 -15
  292. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/ostree-branches.routes.js +0 -50
  293. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/views/ostree-branches.html +0 -40
  294. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-ostree-branches.html +0 -40
  295. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/ostree-upstream-sync-policy.service.js +0 -26
  296. data/webpack/components/extensions/HostDetails/Tabs/SubscriptionTab.js +0 -12
  297. data/webpack/scenes/Content/Details/ContentCounts.js +0 -42
  298. data/webpack/scenes/Subscriptions/Manifest/__tests__/SimpleContentAccess.test.js +0 -108
  299. data/webpack/scenes/Subscriptions/Manifest/__tests__/__snapshots__/ManageManifestModal.test.js.snap +0 -158
@@ -1,4 +1,5 @@
1
- import React from 'react';
1
+ import React, { useState, useEffect } from 'react';
2
+ import { useDispatch } from 'react-redux';
2
3
  import PropTypes from 'prop-types';
3
4
  import {
4
5
  GridItem,
@@ -10,52 +11,153 @@ import {
10
11
  Label,
11
12
  Flex,
12
13
  FlexItem,
14
+ Dropdown,
15
+ DropdownItem,
16
+ DropdownToggle,
17
+ DropdownPosition,
13
18
  } from '@patternfly/react-core';
14
19
  import { translate as __ } from 'foremanReact/common/I18n';
15
20
  import EditableTextInput from '../../../../../components/EditableTextInput';
16
21
  import { hasPermission } from '../../../helpers';
22
+ import ContentViewVersionPromote from '../../Promote/ContentViewVersionPromote';
23
+ import getEnvironmentPaths from '../../../components/EnvironmentPaths/EnvironmentPathActions';
24
+ import RemoveCVVersionWizard from '../Delete/RemoveCVVersionWizard';
17
25
 
18
26
  const ContentViewVersionDetailsHeader = ({
19
27
  versionDetails: {
20
- version, description, environments,
28
+ version, description, environments, content_view_id: cvId, id,
21
29
  },
22
30
  onEdit,
23
31
  details: { permissions },
24
- }) => (
25
- <>
26
- <GridItem span={12}>
27
- <TextContent>
28
- <Text component={TextVariants.h2}>{__('Version ')}{version}</Text>
29
- </TextContent>
30
- </GridItem>
31
- <GridItem className="content-view-header-content" span={12}>
32
- <TextContent>
33
- <TextList component={TextListVariants.dl}>
34
- <EditableTextInput
35
- key={description} // This fixes a render issue with the initial value
36
- textArea
37
- label={__('Description')}
38
- attribute="description"
39
- placeholder={__('No description provided')}
40
- onEdit={onEdit}
41
- disabled={!hasPermission(permissions, 'edit_content_views')}
42
- value={description}
43
- />
44
- </TextList>
45
- </TextContent>
46
- <Flex>
47
- {environments?.map(({ name, id }) =>
48
- <FlexItem key={name}><Label isTruncated color="purple" href={`/lifecycle_environments/${id}`}>{name}</Label></FlexItem>)}
49
- </Flex>
50
- </GridItem>
51
- </>
52
- );
32
+ }) => {
33
+ const dispatch = useDispatch();
34
+ useEffect(
35
+ () => {
36
+ dispatch(getEnvironmentPaths());
37
+ },
38
+ [dispatch],
39
+ );
40
+ const [dropdownOpen, setDropdownOpen] = useState(false);
41
+ const [promoting, setPromoting] = useState(false);
42
+ const [removingFromEnv, setRemovingFromEnv] = useState(false);
43
+ const [currentStep, setCurrentStep] = useState(1);
44
+ const [deleteVersion, setDeleteVersion] = useState(false);
45
+ const dropDownItems = [
46
+ <DropdownItem
47
+ key="promote"
48
+ onClick={() => {
49
+ setPromoting(true);
50
+ }}
51
+ >
52
+ {__('Promote')}
53
+ </DropdownItem>,
54
+ <DropdownItem
55
+ key="remove"
56
+ onClick={() => {
57
+ setRemovingFromEnv(true);
58
+ }}
59
+ >
60
+ {__('Remove from environment')}
61
+ </DropdownItem>,
62
+ <DropdownItem
63
+ key="delete"
64
+ onClick={() => {
65
+ setCurrentStep(1);
66
+ setDeleteVersion(true);
67
+ setRemovingFromEnv(true);
68
+ }}
69
+ >
70
+ {__('Delete')}
71
+ </DropdownItem>,
72
+ ];
73
+
74
+ return (
75
+ <>
76
+ <GridItem span={10}>
77
+ <TextContent>
78
+ <Text component={TextVariants.h2}>{__('Version ')}{version}</Text>
79
+ </TextContent>
80
+ </GridItem>
81
+ <GridItem span={2} style={{ display: 'flex' }}>
82
+ <Dropdown
83
+ aria-label="version-action-dropdown"
84
+ position={DropdownPosition.right}
85
+ style={{ marginLeft: 'auto' }}
86
+ toggle={
87
+ <DropdownToggle
88
+ onToggle={setDropdownOpen}
89
+ id="toggle-id"
90
+ >
91
+ {__('Actions')}
92
+ </DropdownToggle>
93
+ }
94
+ isOpen={dropdownOpen}
95
+ dropdownItems={dropDownItems}
96
+ />
97
+ </GridItem>
98
+ <GridItem className="content-view-header-content" span={12}>
99
+ <TextContent>
100
+ <TextList component={TextListVariants.dl}>
101
+ <EditableTextInput
102
+ key={description} // This fixes a render issue with the initial value
103
+ textArea
104
+ label={__('Description')}
105
+ attribute="description"
106
+ placeholder={__('No description')}
107
+ onEdit={onEdit}
108
+ disabled={!hasPermission(permissions, 'edit_content_views')}
109
+ value={description}
110
+ />
111
+ </TextList>
112
+ </TextContent>
113
+ <Flex>
114
+ {environments?.map(({ name, id: envId }) =>
115
+ <FlexItem key={name}><Label isTruncated color="purple" href={`/lifecycle_environments/${envId}`}>{name}</Label></FlexItem>)}
116
+ </Flex>
117
+ </GridItem>
118
+ {promoting &&
119
+ <ContentViewVersionPromote
120
+ cvId={cvId}
121
+ versionIdToPromote={id}
122
+ versionNameToPromote={version}
123
+ versionEnvironments={environments}
124
+ setIsOpen={setPromoting}
125
+ detailsPage
126
+ aria-label="promote_content_view_modal"
127
+ />
128
+ }
129
+ {removingFromEnv &&
130
+ <RemoveCVVersionWizard
131
+ cvId={cvId}
132
+ versionIdToRemove={id}
133
+ versionNameToRemove={version}
134
+ versionEnvironments={environments}
135
+ show={removingFromEnv}
136
+ setIsOpen={setRemovingFromEnv}
137
+ currentStep={currentStep}
138
+ setCurrentStep={setCurrentStep}
139
+ deleteWizard={deleteVersion}
140
+ detailsPage
141
+ aria-label="remove_content_view_version_modal"
142
+ />
143
+ }
144
+ </>
145
+ );
146
+ };
53
147
 
54
148
  ContentViewVersionDetailsHeader.propTypes = {
55
149
  versionDetails: PropTypes.shape({
56
150
  version: PropTypes.string,
57
- environments: PropTypes.arrayOf(PropTypes.shape({ })),
151
+ environments: PropTypes.arrayOf(PropTypes.shape({})),
58
152
  description: PropTypes.string,
153
+ content_view_id: PropTypes.oneOfType([
154
+ PropTypes.string,
155
+ PropTypes.number,
156
+ ]),
157
+ id: PropTypes.oneOfType([
158
+ PropTypes.string,
159
+ PropTypes.number,
160
+ ]),
59
161
  }).isRequired,
60
162
  onEdit: PropTypes.func.isRequired,
61
163
  details: PropTypes.shape({
@@ -8,6 +8,7 @@ import {
8
8
  GridItem,
9
9
  } from '@patternfly/react-core';
10
10
  import InactiveText from '../../../components/InactiveText';
11
+ import ContentConfig from '../../../../Content/ContentConfig';
11
12
 
12
13
  const ContentViewVersionRepositoryCell = ({
13
14
  data: {
@@ -49,9 +50,6 @@ const ContentViewVersionRepositoryCell = ({
49
50
  name: __('Module streams'),
50
51
  url: `products/${id}/repositories/${libraryInstanceId}/content/module_streams`,
51
52
  },
52
- ostree_branch: {
53
- name: __('OStree branches'),
54
- },
55
53
  package: {
56
54
  name: __('Packages'),
57
55
  url: `products/${id}/repositories/${libraryInstanceId}/content/packages`,
@@ -69,6 +67,13 @@ const ContentViewVersionRepositoryCell = ({
69
67
  },
70
68
  };
71
69
 
70
+ ContentConfig().forEach((type) => {
71
+ CONTENT_COUNTS[type.names.singularLabel] = {
72
+ name: type.names.pluralLowercase,
73
+ url: `products/${id}/repositories/${libraryInstanceId}/content/${type.names.pluralLabel}`,
74
+ };
75
+ });
76
+
72
77
  const getContentSpan = (num) => {
73
78
  switch (true) {
74
79
  case num < 4:
@@ -242,7 +242,6 @@
242
242
  "srpm_count": 0,
243
243
  "module_stream_count": 14,
244
244
  "package_count": 22,
245
- "ostree_branch_count": null,
246
245
  "component_view_count": 0,
247
246
  "ansible_collection_repository_count": 1,
248
247
  "deb_repository_count": 0,
@@ -445,7 +444,6 @@
445
444
  "srpm_count": 0,
446
445
  "module_stream_count": 0,
447
446
  "package_count": 0,
448
- "ostree_branch_count": null,
449
447
  "component_view_count": 0,
450
448
  "ansible_collection_repository_count": 0,
451
449
  "deb_repository_count": 1,
@@ -732,7 +730,6 @@
732
730
  "srpm_count": 0,
733
731
  "module_stream_count": 0,
734
732
  "package_count": 0,
735
- "ostree_branch_count": null,
736
733
  "component_view_count": 0,
737
734
  "ansible_collection_repository_count": 0,
738
735
  "deb_repository_count": 0,
@@ -750,4 +747,4 @@
750
747
  }
751
748
  }
752
749
  ]
753
- }
750
+ }
@@ -138,7 +138,6 @@
138
138
  "srpm_count": 0,
139
139
  "module_stream_count": 0,
140
140
  "package_count": 0,
141
- "ostree_branch_count": null,
142
141
  "component_view_count": 0,
143
142
  "ansible_collection_repository_count": 0,
144
143
  "deb_repository_count": 0,
@@ -155,4 +154,4 @@
155
154
  "permissions": {
156
155
  "deletable": true
157
156
  }
158
- }
157
+ }
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { renderWithRedux, patientlyWaitFor } from 'react-testing-lib-wrapper';
3
3
  import { Route } from 'react-router-dom';
4
4
  import { head, last } from 'lodash';
5
- import { nockInstance, assertNockRequest, mockSetting, mockAutocomplete } from '../../../../../../test-utils/nockWrapper';
5
+ import nock, { nockInstance, assertNockRequest, mockSetting, mockAutocomplete } from '../../../../../../test-utils/nockWrapper';
6
6
  import api from '../../../../../../services/api';
7
7
  import { cvVersionDetailsKey } from '../../../../ContentViewsConstants';
8
8
  import ContentViewVersionDetails from '../ContentViewVersionDetails';
@@ -20,12 +20,15 @@ import ContentViewVersionModuleStreamsData from './ContentViewVersionModuleStrea
20
20
  import ContentViewVersionDebPackagesData from './ContentViewVersionDebPackages.fixtures.json';
21
21
  import ContentViewVersionAnsibleCollectionsData from './ContentViewVersionAnsibleCollections.fixtures.json';
22
22
  import ContentViewVersionDockerTagsData from './ContentViewVersionDockerTags.fixtures.json';
23
+ import environmentPathsData from '../../Delete/__tests__/versionRemoveEnvPaths.fixtures';
23
24
 
24
25
  // This changes the api count value so that only the specified tab will show.
25
26
  const getTabSpecificData = key => ({
26
27
  ...ContentViewVersionDetailsData,
27
28
  [key]: ContentViewVersionDetailsCounts[key],
28
29
  });
30
+ let envScope;
31
+ const environmentPathsPath = api.getApiUrl('/organizations/1/environments/paths');
29
32
 
30
33
  const withCVRoute = component => <Route path="/versions/:versionId([0-9]+)">{component}</Route>;
31
34
 
@@ -39,11 +42,23 @@ const renderOptions = {
39
42
  },
40
43
  };
41
44
 
45
+ beforeEach(() => {
46
+ envScope = nockInstance
47
+ .get(environmentPathsPath)
48
+ .query(true)
49
+ .reply(200, environmentPathsData);
50
+ });
51
+
52
+ afterEach(() => {
53
+ assertNockRequest(envScope);
54
+ nock.cleanAll();
55
+ });
42
56
  // This is written separately, as the autocomplete/search scopes are not needed.
43
57
  test('Can show versions details - Components Tab', async (done) => {
44
58
  const { version } = ContentViewVersionDetailsData;
45
59
  const scope = nockInstance
46
60
  .get(cvVersions)
61
+ .times(2)
47
62
  .query(true)
48
63
  .reply(200, getTabSpecificData('component_view_count'));
49
64
 
@@ -72,6 +87,7 @@ test('Can show versions details - Components Tab', async (done) => {
72
87
  .content_view.name)).toBeTruthy();
73
88
  });
74
89
 
90
+ assertNockRequest(scope);
75
91
  assertNockRequest(scope);
76
92
  assertNockRequest(componentScope, done);
77
93
  });
@@ -188,6 +204,7 @@ testConfig.forEach(({
188
204
 
189
205
  const scope = nockInstance
190
206
  .get(cvVersions)
207
+ .times(2)
191
208
  .query(true)
192
209
  .reply(200, getTabSpecificData(countKey));
193
210
 
@@ -219,6 +236,7 @@ testConfig.forEach(({
219
236
  assertNockRequest(autocompleteScope);
220
237
  assertNockRequest(searchDelayScope);
221
238
  assertNockRequest(autoSearchScope);
239
+ assertNockRequest(scope);
222
240
  assertNockRequest(tabScope);
223
241
  assertNockRequest(scope, done);
224
242
  }));
@@ -239,6 +257,7 @@ test('Can change repository selector', async (done) => {
239
257
  const scope = nockInstance
240
258
  .get(cvVersions)
241
259
  .query(true)
260
+ .times(2)
242
261
  .reply(200, {
243
262
  ...getTabSpecificData(countKey),
244
263
  repositories: ContentViewVersionDetailsCounts.repositories,
@@ -284,6 +303,7 @@ test('Can change repository selector', async (done) => {
284
303
  assertNockRequest(autocompleteScope);
285
304
  assertNockRequest(searchDelayScope);
286
305
  assertNockRequest(autoSearchScope);
306
+ assertNockRequest(scope);
287
307
  assertNockRequest(tabScope);
288
308
  assertNockRequest(scope, done);
289
309
  });
@@ -12,7 +12,6 @@
12
12
  "srpm_count": 0,
13
13
  "module_stream_count": 14,
14
14
  "package_count": 22,
15
- "ostree_branch_count": null,
16
15
  "component_view_count": 3,
17
16
  "ansible_collection_repository_count": 1,
18
17
  "deb_repository_count": 1,
@@ -70,4 +69,4 @@
70
69
  "library_instance_id": 22
71
70
  }
72
71
  ]
73
- }
72
+ }
@@ -2,16 +2,20 @@ import React from 'react';
2
2
  import { renderWithRedux, patientlyWaitFor } from 'react-testing-lib-wrapper';
3
3
  import { Route } from 'react-router-dom';
4
4
 
5
- import { nockInstance, assertNockRequest } from '../../../../../../test-utils/nockWrapper';
5
+ import nock, { nockInstance, assertNockRequest } from '../../../../../../test-utils/nockWrapper';
6
6
  import api from '../../../../../../services/api';
7
7
  import { cvVersionDetailsKey } from '../../../../ContentViewsConstants';
8
8
  import ContentViewVersionDetails from '../ContentViewVersionDetails';
9
9
  import ContentViewVersionDetailsEmptyData from './ContentViewVersionDetails.fixtures.json';
10
10
  import cvDetailData from '../../../../__tests__/mockDetails.fixtures.json';
11
+ import environmentPathsData from '../../Delete/__tests__/versionRemoveEnvPaths.fixtures';
11
12
 
12
13
  const withCVRoute = component =>
13
14
  <Route path="/versions/:versionId([0-9]+)">{component}</Route>;
14
15
  const cvVersions = api.getApiUrl('/content_view_versions/73');
16
+ let envScope;
17
+ let versionScope;
18
+ const environmentPathsPath = api.getApiUrl('/organizations/1/environments/paths');
15
19
 
16
20
  const renderOptions = {
17
21
  apiNamespace: cvVersionDetailsKey(3, 73),
@@ -21,6 +25,23 @@ const renderOptions = {
21
25
  },
22
26
  };
23
27
 
28
+ beforeEach(() => {
29
+ envScope = nockInstance
30
+ .get(environmentPathsPath)
31
+ .query(true)
32
+ .reply(200, environmentPathsData);
33
+ versionScope = nockInstance
34
+ .get(cvVersions)
35
+ .query(true)
36
+ .reply(200, ContentViewVersionDetailsEmptyData);
37
+ });
38
+
39
+ afterEach(() => {
40
+ assertNockRequest(envScope);
41
+ assertNockRequest(versionScope);
42
+ nock.cleanAll();
43
+ });
44
+
24
45
  test('Can show versions detail header', async (done) => {
25
46
  const { version } = ContentViewVersionDetailsEmptyData;
26
47
  const scope = nockInstance
@@ -52,7 +52,6 @@
52
52
  },
53
53
  "content_label": "Default_Organization_Nemero_Uno_Producto_Ansible_Collection_uno",
54
54
  "content_counts": {
55
- "ostree_branch": 0,
56
55
  "docker_manifest": 0,
57
56
  "docker_manifest_list": 0,
58
57
  "docker_tag": 0,
@@ -110,7 +109,6 @@
110
109
  },
111
110
  "content_label": "rhel-7-server-ansible-tower-3.3-rpms",
112
111
  "content_counts": {
113
- "ostree_branch": 0,
114
112
  "docker_manifest": 0,
115
113
  "docker_manifest_list": 0,
116
114
  "docker_tag": 0,
@@ -168,7 +166,6 @@
168
166
  },
169
167
  "content_label": "rhel-7-server-ansible-tower-3.4-rpms",
170
168
  "content_counts": {
171
- "ostree_branch": 0,
172
169
  "docker_manifest": 0,
173
170
  "docker_manifest_list": 0,
174
171
  "docker_tag": 0,
@@ -226,7 +223,6 @@
226
223
  },
227
224
  "content_label": "rhel-7-server-ansible-tower-3.5-rpms",
228
225
  "content_counts": {
229
- "ostree_branch": 0,
230
226
  "docker_manifest": 0,
231
227
  "docker_manifest_list": 0,
232
228
  "docker_tag": 0,
@@ -284,7 +280,6 @@
284
280
  },
285
281
  "content_label": "rhel-7-server-ansible-tower-3.6-rpms",
286
282
  "content_counts": {
287
- "ostree_branch": 0,
288
283
  "docker_manifest": 0,
289
284
  "docker_manifest_list": 0,
290
285
  "docker_tag": 0,
@@ -342,7 +337,6 @@
342
337
  },
343
338
  "content_label": "rhel-7-server-ansible-tower-3.8-textonly-rpms",
344
339
  "content_counts": {
345
- "ostree_branch": 0,
346
340
  "docker_manifest": 0,
347
341
  "docker_manifest_list": 0,
348
342
  "docker_tag": 0,
@@ -400,7 +394,6 @@
400
394
  },
401
395
  "content_label": "Default_Organization_Nemero_Uno_Producto_Deb_distro_Uno",
402
396
  "content_counts": {
403
- "ostree_branch": 0,
404
397
  "docker_manifest": 0,
405
398
  "docker_manifest_list": 0,
406
399
  "docker_tag": 0,
@@ -458,7 +451,6 @@
458
451
  },
459
452
  "content_label": "Default_Organization_Nemero_Uno_Producto_Docker_Repo_Dos",
460
453
  "content_counts": {
461
- "ostree_branch": 0,
462
454
  "docker_manifest": 407,
463
455
  "docker_manifest_list": 76,
464
456
  "docker_tag": 162,
@@ -516,7 +508,6 @@
516
508
  },
517
509
  "content_label": "Default_Organization_Nemero_Uno_Producto_Docker_Repo_Uno",
518
510
  "content_counts": {
519
- "ostree_branch": 0,
520
511
  "docker_manifest": 1,
521
512
  "docker_manifest_list": 0,
522
513
  "docker_tag": 1,
@@ -574,7 +565,6 @@
574
565
  },
575
566
  "content_label": "Default_Organization_Nemero_Uno_Producto_File_Repo_Uno",
576
567
  "content_counts": {
577
- "ostree_branch": 0,
578
568
  "docker_manifest": 0,
579
569
  "docker_manifest_list": 0,
580
570
  "docker_tag": 0,
@@ -632,7 +622,6 @@
632
622
  },
633
623
  "content_label": "a-mq-clients-1-for-rhel-5-server-rpms",
634
624
  "content_counts": {
635
- "ostree_branch": 0,
636
625
  "docker_manifest": 0,
637
626
  "docker_manifest_list": 0,
638
627
  "docker_tag": 0,
@@ -690,7 +679,6 @@
690
679
  },
691
680
  "content_label": "a-mq-clients-1-for-rhel-6-server-rpms",
692
681
  "content_counts": {
693
- "ostree_branch": 0,
694
682
  "docker_manifest": 0,
695
683
  "docker_manifest_list": 0,
696
684
  "docker_tag": 0,
@@ -748,7 +736,6 @@
748
736
  },
749
737
  "content_label": "a-mq-clients-1-for-rhel-6-server-rpms",
750
738
  "content_counts": {
751
- "ostree_branch": 0,
752
739
  "docker_manifest": 0,
753
740
  "docker_manifest_list": 0,
754
741
  "docker_tag": 0,
@@ -806,7 +793,6 @@
806
793
  },
807
794
  "content_label": "a-mq-clients-1-for-rhel-7-server-rpms",
808
795
  "content_counts": {
809
- "ostree_branch": 0,
810
796
  "docker_manifest": 0,
811
797
  "docker_manifest_list": 0,
812
798
  "docker_tag": 0,
@@ -864,7 +850,6 @@
864
850
  },
865
851
  "content_label": "Default_Organization_Nemero_Uno_Producto_Module_Stream_Uno",
866
852
  "content_counts": {
867
- "ostree_branch": 0,
868
853
  "docker_manifest": 0,
869
854
  "docker_manifest_list": 0,
870
855
  "docker_tag": 0,
@@ -922,7 +907,6 @@
922
907
  },
923
908
  "content_label": "Default_Organization_Nemero_Uno_Producto_Zoo_Repo_Dos",
924
909
  "content_counts": {
925
- "ostree_branch": 0,
926
910
  "docker_manifest": 0,
927
911
  "docker_manifest_list": 0,
928
912
  "docker_tag": 0,
@@ -980,7 +964,6 @@
980
964
  },
981
965
  "content_label": "Default_Organization_Nemero_Uno_Producto_Zoo_Repo_Uno",
982
966
  "content_counts": {
983
- "ostree_branch": 0,
984
967
  "docker_manifest": 0,
985
968
  "docker_manifest_list": 0,
986
969
  "docker_tag": 0,
@@ -997,4 +980,4 @@
997
980
  "last_sync_words": null
998
981
  }
999
982
  ]
1000
- }
983
+ }
@@ -288,7 +288,8 @@
288
288
  "srpm_count": 0,
289
289
  "module_stream_count": 0,
290
290
  "package_count": 8,
291
- "ostree_branch_count": 0,
291
+ "ostree_ref_count": 2,
292
+ "python_package_count": 80,
292
293
  "errata_counts": {
293
294
  "security": 5,
294
295
  "bugfix": 3,
@@ -442,7 +443,6 @@
442
443
  "srpm_count": 0,
443
444
  "module_stream_count": 0,
444
445
  "package_count": 8,
445
- "ostree_branch_count": 0,
446
446
  "errata_counts": {
447
447
  "security": null,
448
448
  "bugfix": 0,
@@ -582,7 +582,6 @@
582
582
  "srpm_count": 0,
583
583
  "module_stream_count": 0,
584
584
  "package_count": 8,
585
- "ostree_branch_count": 0,
586
585
  "errata_counts": {
587
586
  "security": null,
588
587
  "bugfix": 0,
@@ -713,7 +712,8 @@
713
712
  "srpm_count": 0,
714
713
  "module_stream_count": 0,
715
714
  "package_count": 0,
716
- "ostree_branch_count": 0,
715
+ "ostree_ref_count": 0,
716
+ "python_package_count": 0,
717
717
  "errata_counts": {
718
718
  "security": null,
719
719
  "bugfix": 0,
@@ -725,4 +725,4 @@
725
725
  }
726
726
  }
727
727
  ]
728
- }
728
+ }
@@ -152,6 +152,8 @@ test('Can show additional content and link to list page', async () => {
152
152
  .toHaveAttribute('href', '/content_views/5#/versions/11/files/');
153
153
  expect(getByText('1 Deb packages').closest('a'))
154
154
  .toHaveAttribute('href', '/versions/11/debPackages');
155
+ expect(getByText('80 Python packages')).toBeInTheDocument();
156
+ expect(getByText('2 OSTree refs')).toBeInTheDocument();
155
157
  });
156
158
 
157
159
  assertNockRequest(autocompleteScope);
@@ -550,7 +550,6 @@
550
550
  "srpm_count": 0,
551
551
  "module_stream_count": 0,
552
552
  "package_count": 0,
553
- "ostree_branch_count": null,
554
553
  "errata_counts": {
555
554
  "security": null,
556
555
  "bugfix": 0,
@@ -698,7 +697,6 @@
698
697
  "srpm_count": 0,
699
698
  "module_stream_count": 0,
700
699
  "package_count": 8,
701
- "ostree_branch_count": null,
702
700
  "errata_counts": {
703
701
  "security": null,
704
702
  "bugfix": 0,
@@ -710,4 +708,4 @@
710
708
  }
711
709
  }
712
710
  ]
713
- }
711
+ }
@@ -1,7 +1,3 @@
1
- .foreman-spaced-icon {
2
- margin: 0px 10px;
3
- }
4
-
5
1
  // Keeps spacing in the list even despite contents
6
2
  .foreman-spaced-list {
7
3
  min-height: 40px;