katello 5.0.0.rc2 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/locale/bn/katello.js +63 -15
  3. data/app/assets/javascripts/katello/locale/bn_IN/katello.js +62 -14
  4. data/app/assets/javascripts/katello/locale/ca/katello.js +62 -14
  5. data/app/assets/javascripts/katello/locale/cs/katello.js +63 -15
  6. data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +64 -16
  7. data/app/assets/javascripts/katello/locale/de/katello.js +66 -18
  8. data/app/assets/javascripts/katello/locale/de_AT/katello.js +62 -14
  9. data/app/assets/javascripts/katello/locale/de_DE/katello.js +63 -15
  10. data/app/assets/javascripts/katello/locale/el/katello.js +62 -14
  11. data/app/assets/javascripts/katello/locale/en/katello.js +63 -15
  12. data/app/assets/javascripts/katello/locale/en_GB/katello.js +62 -14
  13. data/app/assets/javascripts/katello/locale/en_US/katello.js +62 -14
  14. data/app/assets/javascripts/katello/locale/es/katello.js +66 -18
  15. data/app/assets/javascripts/katello/locale/et_EE/katello.js +62 -14
  16. data/app/assets/javascripts/katello/locale/fr/katello.js +300 -252
  17. data/app/assets/javascripts/katello/locale/gl/katello.js +62 -14
  18. data/app/assets/javascripts/katello/locale/gu/katello.js +62 -14
  19. data/app/assets/javascripts/katello/locale/he_IL/katello.js +62 -14
  20. data/app/assets/javascripts/katello/locale/hi/katello.js +62 -14
  21. data/app/assets/javascripts/katello/locale/id/katello.js +62 -14
  22. data/app/assets/javascripts/katello/locale/it/katello.js +64 -16
  23. data/app/assets/javascripts/katello/locale/ja/katello.js +378 -330
  24. data/app/assets/javascripts/katello/locale/ka/katello.js +67 -19
  25. data/app/assets/javascripts/katello/locale/kn/katello.js +62 -14
  26. data/app/assets/javascripts/katello/locale/ko/katello.js +297 -249
  27. data/app/assets/javascripts/katello/locale/ml_IN/katello.js +62 -14
  28. data/app/assets/javascripts/katello/locale/mr/katello.js +62 -14
  29. data/app/assets/javascripts/katello/locale/nl_NL/katello.js +62 -14
  30. data/app/assets/javascripts/katello/locale/or/katello.js +62 -14
  31. data/app/assets/javascripts/katello/locale/pa/katello.js +62 -14
  32. data/app/assets/javascripts/katello/locale/pl/katello.js +62 -14
  33. data/app/assets/javascripts/katello/locale/pl_PL/katello.js +62 -14
  34. data/app/assets/javascripts/katello/locale/pt/katello.js +62 -14
  35. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +66 -18
  36. data/app/assets/javascripts/katello/locale/ro/katello.js +62 -14
  37. data/app/assets/javascripts/katello/locale/ro_RO/katello.js +62 -14
  38. data/app/assets/javascripts/katello/locale/ru/katello.js +64 -16
  39. data/app/assets/javascripts/katello/locale/sl/katello.js +62 -14
  40. data/app/assets/javascripts/katello/locale/sv_SE/katello.js +62 -14
  41. data/app/assets/javascripts/katello/locale/ta/katello.js +63 -15
  42. data/app/assets/javascripts/katello/locale/ta_IN/katello.js +62 -14
  43. data/app/assets/javascripts/katello/locale/te/katello.js +62 -14
  44. data/app/assets/javascripts/katello/locale/tr/katello.js +62 -14
  45. data/app/assets/javascripts/katello/locale/vi/katello.js +62 -14
  46. data/app/assets/javascripts/katello/locale/vi_VN/katello.js +62 -14
  47. data/app/assets/javascripts/katello/locale/zh/katello.js +62 -14
  48. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +285 -237
  49. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +64 -16
  50. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +29 -26
  51. data/app/controllers/katello/api/v2/content_view_histories_controller.rb +1 -1
  52. data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +10 -10
  53. data/app/controllers/katello/concerns/registration_commands_controller_extensions.rb +1 -1
  54. data/app/lib/katello/concerns/base_template_scope_extensions.rb +61 -2
  55. data/app/models/katello/concerns/smart_proxy_extensions.rb +1 -1
  56. data/app/views/katello/api/v2/activation_keys/base.json.rabl +18 -18
  57. data/app/views/katello/api/v2/content_facet/base.json.rabl +19 -19
  58. data/app/views/katello/api/v2/content_view_environments/show.json.rabl +10 -10
  59. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +2 -2
  60. data/db/migrate/20220929204746_add_content_view_environment_content_facet.rb +5 -5
  61. data/db/migrate/20240730163043_add_content_view_environment_activation_key.rb +5 -5
  62. data/db/migrate/20260402151630_add_content_view_environment_to_hostgroup_content_facet.rb +4 -4
  63. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-info.html +1 -1
  64. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/new/views/activation-key-new.html +1 -1
  65. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +0 -12
  66. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +0 -12
  67. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +0 -12
  68. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +0 -12
  69. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +0 -12
  70. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +0 -12
  71. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +0 -12
  72. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +0 -12
  73. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +0 -12
  74. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +0 -12
  75. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +0 -12
  76. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +0 -12
  77. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +23 -24
  78. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +0 -12
  79. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +0 -12
  80. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +0 -12
  81. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +0 -12
  82. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +0 -12
  83. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +0 -12
  84. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +20 -30
  85. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +0 -12
  86. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +0 -12
  87. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +31 -39
  88. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +0 -12
  89. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +0 -12
  90. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +0 -12
  91. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +0 -12
  92. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +0 -12
  93. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +0 -12
  94. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +0 -12
  95. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +0 -12
  96. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +0 -12
  97. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +0 -12
  98. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +0 -12
  99. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +0 -12
  100. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +0 -12
  101. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +0 -12
  102. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +0 -12
  103. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +0 -12
  104. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +0 -12
  105. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +0 -12
  106. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +0 -12
  107. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +0 -12
  108. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +0 -12
  109. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +8 -17
  110. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +0 -12
  111. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +8 -8
  112. data/lib/katello/tasks/upgrades/4.20/clean_cve_with_no_cvv.rake +4 -4
  113. data/lib/katello/version.rb +1 -1
  114. data/lib/rubocop/cop/katello/cve_abbreviation.rb +82 -0
  115. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  116. data/locale/bn/katello.po +63 -15
  117. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  118. data/locale/bn_IN/katello.po +62 -14
  119. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  120. data/locale/ca/katello.po +62 -14
  121. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  122. data/locale/cs/katello.po +64 -15
  123. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  124. data/locale/cs_CZ/katello.po +65 -17
  125. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  126. data/locale/de/katello.po +67 -19
  127. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  128. data/locale/de_AT/katello.po +62 -14
  129. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  130. data/locale/de_DE/katello.po +64 -16
  131. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  132. data/locale/el/katello.po +62 -14
  133. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  134. data/locale/en/katello.po +64 -15
  135. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  136. data/locale/en_GB/katello.po +62 -14
  137. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  138. data/locale/en_US/katello.po +62 -14
  139. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  140. data/locale/es/katello.po +68 -21
  141. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  142. data/locale/et_EE/katello.po +62 -14
  143. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  144. data/locale/fr/katello.po +304 -256
  145. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  146. data/locale/gl/katello.po +62 -14
  147. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  148. data/locale/gu/katello.po +62 -14
  149. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  150. data/locale/he_IL/katello.po +62 -14
  151. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  152. data/locale/hi/katello.po +62 -14
  153. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  154. data/locale/id/katello.po +62 -14
  155. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  156. data/locale/it/katello.po +64 -16
  157. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  158. data/locale/ja/katello.po +379 -331
  159. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  160. data/locale/ka/katello.po +67 -19
  161. data/locale/katello.pot +457 -393
  162. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  163. data/locale/kn/katello.po +62 -14
  164. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  165. data/locale/ko/katello.po +300 -251
  166. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  167. data/locale/ml_IN/katello.po +62 -14
  168. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  169. data/locale/mr/katello.po +62 -14
  170. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  171. data/locale/nl_NL/katello.po +62 -14
  172. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  173. data/locale/or/katello.po +62 -14
  174. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  175. data/locale/pa/katello.po +62 -14
  176. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  177. data/locale/pl/katello.po +62 -14
  178. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  179. data/locale/pl_PL/katello.po +62 -14
  180. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  181. data/locale/pt/katello.po +62 -14
  182. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  183. data/locale/pt_BR/katello.po +68 -20
  184. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  185. data/locale/ro/katello.po +62 -14
  186. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  187. data/locale/ro_RO/katello.po +62 -14
  188. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  189. data/locale/ru/katello.po +64 -16
  190. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  191. data/locale/sl/katello.po +62 -14
  192. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  193. data/locale/sv_SE/katello.po +62 -14
  194. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  195. data/locale/ta/katello.po +63 -15
  196. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  197. data/locale/ta_IN/katello.po +62 -14
  198. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  199. data/locale/te/katello.po +62 -14
  200. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  201. data/locale/tr/katello.po +62 -14
  202. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  203. data/locale/vi/katello.po +62 -14
  204. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  205. data/locale/vi_VN/katello.po +62 -14
  206. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  207. data/locale/zh/katello.po +62 -14
  208. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  209. data/locale/zh_CN/katello.po +286 -238
  210. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  211. data/locale/zh_TW/katello.po +64 -16
  212. data/package.json +2 -2
  213. data/webpack/ForemanColumnExtensions/index.js +1 -1
  214. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/AssignHostCVModal.js +3 -3
  215. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +5 -5
  216. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/OrderableAssignments.js +5 -5
  217. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/AssignHostCVModal.test.js +17 -17
  218. data/webpack/components/extensions/Hosts/BulkActions/BulkAssignCVEnvsModal/BulkAssignCVEnvsModal.js +4 -8
  219. data/webpack/components/extensions/Hosts/BulkActions/BulkAssignCVEnvsModal/__tests__/BulkAssignCVEnvsModal.test.js +1 -1
  220. data/webpack/components/extensions/Hosts/BulkActions/BulkAssignCVEnvsModal/index.js +2 -1
  221. data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/BulkChangeHostCollectionsModal.js +5 -10
  222. data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/__tests__/BulkChangeHostCollectionsModal.test.js +6 -24
  223. data/webpack/components/extensions/Hosts/BulkActions/BulkChangeHostCollectionsModal/index.js +2 -1
  224. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/04_ReviewFooter.js +2 -0
  225. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/BulkErrataWizard.js +2 -1
  226. data/webpack/components/extensions/Hosts/BulkActions/BulkManageTracesModal/BulkManageTracesModal.js +4 -0
  227. data/webpack/components/extensions/Hosts/BulkActions/BulkManageTracesModal/index.js +2 -1
  228. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/04_ReviewFooter.js +2 -0
  229. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/BulkPackagesWizard.js +2 -1
  230. data/webpack/components/extensions/Hosts/BulkActions/BulkRepositorySetsWizard/03_ReviewFooter.js +2 -0
  231. data/webpack/components/extensions/Hosts/BulkActions/BulkRepositorySetsWizard/BulkRepositorySetsWizard.js +2 -1
  232. data/webpack/components/extensions/Hosts/BulkActions/BulkSystemPurposeModal/BulkSystemPurposeModal.js +5 -0
  233. data/webpack/components/extensions/Hosts/BulkActions/BulkSystemPurposeModal/index.js +2 -1
  234. data/webpack/components/extensions/Hosts/BulkActions/__tests__/bulkSystemPurposeModal.test.js +6 -1
  235. data/webpack/components/extensions/RegistrationCommands/__tests__/ActivationKeys.test.js +6 -6
  236. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +1 -1
  237. data/webpack/containers/Application/config.js +1 -1
  238. data/webpack/eslint-rules/no-cve-abbreviation.js +121 -0
  239. data/webpack/global_index.js +6 -6
  240. data/webpack/redux/reducers/index.js +0 -2
  241. data/webpack/scenes/ActivationKeys/Details/ActivationKeyDetails.js +2 -2
  242. data/webpack/scenes/ActivationKeys/Details/components/AssignAKCVModal.js +3 -3
  243. data/webpack/scenes/ActivationKeys/Details/components/CreateAKCVModal.js +1 -1
  244. data/webpack/scenes/ActivationKeys/Details/components/{CVEDetailsCard.js → CvEnvDetailsCard.js} +9 -9
  245. data/webpack/scenes/ActivationKeys/Details/components/{CVEDetailsCreateCard.js → CvEnvDetailsCreateCard.js} +10 -10
  246. data/webpack/scenes/ActivationKeys/Details/components/__tests__/{CVEDetailsCreateCard.test.js → CvEnvDetailsCreateCard.test.js} +8 -8
  247. data/webpack/scenes/ContainerImages/Booted/BootedContainerImagesPage.js +2 -2
  248. data/webpack/scenes/ContainerImages/ContainerImagesPage.js +59 -52
  249. data/webpack/scenes/ContainerImages/ContainerImagesPage.scss +27 -4
  250. data/webpack/scenes/ContainerImages/Synced/SyncedContainerImagesPage.js +1 -1
  251. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionContent.js +1 -11
  252. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +9 -9
  253. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +0 -28
  254. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +46 -1
  255. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersionContent.test.js +41 -0
  256. data/webpack/scenes/Hosts/ChangeContentSource/actions.js +2 -2
  257. data/webpack/scenes/Subscriptions/Manifest/CdnTabContent.js +44 -0
  258. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +179 -307
  259. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModalConstants.js +5 -0
  260. data/webpack/scenes/Subscriptions/Manifest/ManifestActions.js +64 -70
  261. data/webpack/scenes/Subscriptions/Manifest/ManifestConstants.js +5 -0
  262. data/webpack/scenes/Subscriptions/Manifest/ManifestHistoryContent.js +61 -0
  263. data/webpack/scenes/Subscriptions/Manifest/ManifestHistoryReducer.js +1 -1
  264. data/webpack/scenes/Subscriptions/Manifest/ManifestTabContent.js +357 -0
  265. data/webpack/scenes/Subscriptions/Manifest/__tests__/ManageManifestModal.test.js +129 -0
  266. data/webpack/scenes/Subscriptions/Manifest/__tests__/ManifestActions.test.js +69 -110
  267. data/webpack/scenes/Subscriptions/Manifest/__tests__/ManifestHistoryReducer.test.js +6 -2
  268. data/webpack/scenes/Subscriptions/Manifest/index.js +16 -1
  269. data/webpack/scenes/Subscriptions/SubscriptionActions.js +79 -145
  270. data/webpack/scenes/Subscriptions/SubscriptionConstants.js +4 -35
  271. data/webpack/scenes/Subscriptions/SubscriptionsColumns.js +90 -0
  272. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +297 -217
  273. data/webpack/scenes/Subscriptions/SubscriptionsPage.scss +40 -30
  274. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsActions.js +11 -8
  275. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsConstants.js +0 -1
  276. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +104 -205
  277. data/webpack/scenes/Subscriptions/__tests__/subscriptions.fixtures.js +12 -8
  278. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTable.js +245 -241
  279. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/SubscriptionsTable.test.js +61 -27
  280. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Table.js +487 -73
  281. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +22 -4
  282. data/webpack/utils/contentViewEnvironmentLabel.js +3 -3
  283. data/webpack/utils/helpers.js +2 -2
  284. metadata +22 -20
  285. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.scss +0 -39
  286. data/webpack/scenes/Subscriptions/Manifest/ManifestHistoryTableSchema.js +0 -47
  287. data/webpack/scenes/Subscriptions/SubscriptionReducer.js +0 -223
  288. data/webpack/scenes/Subscriptions/SubscriptionsSelectors.js +0 -31
  289. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsActions.test.js +0 -297
  290. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsReducer.test.js +0 -244
  291. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsSelectors.test.js +0 -47
  292. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionNameFormatter.js +0 -23
  293. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionTypeFormatter.js +0 -32
  294. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTableSchema.js +0 -169
  295. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/SubscriptionTypeFormatter.test.js +0 -41
  296. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/index.js +0 -2
  297. data/webpack/scenes/Subscriptions/index.js +0 -57
@@ -3,7 +3,7 @@
3
3
  "locale_data": {
4
4
  "katello": {
5
5
  "": {
6
- "Project-Id-Version": "katello 5.0.0.rc1",
6
+ "Project-Id-Version": "katello 5.0.0",
7
7
  "Report-Msgid-Bugs-To": "",
8
8
  "PO-Revision-Date": "2017-12-19 20:14+0000",
9
9
  "Last-Translator": "Bryan Kearney <bryan.kearney@gmail.com>, 2026",
@@ -1359,6 +1359,9 @@
1359
1359
  "Clean Backend Objects": [
1360
1360
  ""
1361
1361
  ],
1362
+ "Clear": [
1363
+ ""
1364
+ ],
1362
1365
  "Clear any previous registration and run subscription-manager with --force.": [
1363
1366
  ""
1364
1367
  ],
@@ -1395,6 +1398,9 @@
1395
1398
  "Collapse all": [
1396
1399
  ""
1397
1400
  ],
1401
+ "Collapse group": [
1402
+ ""
1403
+ ],
1398
1404
  "Comma-separated list of content view environment labels associated with the activation key, in the format of 'lifecycle_environment_label/content_view_label'. Ignored if content_view_environment_ids is specified. Requires allow_multiple_content_views setting to be on.": [
1399
1405
  ""
1400
1406
  ],
@@ -1458,6 +1464,9 @@
1458
1464
  "Configuration updated on Foreman": [
1459
1465
  ""
1460
1466
  ],
1467
+ "Confirm": [
1468
+ "確認"
1469
+ ],
1461
1470
  "Confirm Deletion": [
1462
1471
  ""
1463
1472
  ],
@@ -1725,6 +1734,9 @@
1725
1734
  "Content view environment ID": [
1726
1735
  ""
1727
1736
  ],
1737
+ "Content view environment identifier": [
1738
+ ""
1739
+ ],
1728
1740
  "Content view environments": [
1729
1741
  ""
1730
1742
  ],
@@ -2562,6 +2574,9 @@
2562
2574
  "Download rate limit": [
2563
2575
  ""
2564
2576
  ],
2577
+ "Drag here": [
2578
+ ""
2579
+ ],
2565
2580
  "Due to a change in your organizations, this container name has become ambiguous (org name '%{org_label}'). If you wish to continue using this container name, destroy the organization in conflict with '%{o_name} (id %{o_id}). If you wish to keep both orgs, destroy '%{o_label}/%{prod_label}/%{root_repo_label}' and retry your push using the id format.": [
2566
2581
  ""
2567
2582
  ],
@@ -2613,6 +2628,9 @@
2613
2628
  "Edit details": [
2614
2629
  ""
2615
2630
  ],
2631
+ "Edit entitlements": [
2632
+ ""
2633
+ ],
2616
2634
  "Edit filter rule": [
2617
2635
  ""
2618
2636
  ],
@@ -2844,6 +2862,9 @@
2844
2862
  "Expand All": [
2845
2863
  "全部展開"
2846
2864
  ],
2865
+ "Expand group": [
2866
+ ""
2867
+ ],
2847
2868
  "Expire soon days": [
2848
2869
  ""
2849
2870
  ],
@@ -3184,7 +3205,7 @@
3184
3205
  ""
3185
3206
  ],
3186
3207
  "Generate and Download": [
3187
- "產生與下載"
3208
+ ""
3188
3209
  ],
3189
3210
  "Generate containerfile install command (%s package selected)": [
3190
3211
  "",
@@ -3256,8 +3277,8 @@
3256
3277
  "Greater than": [
3257
3278
  ""
3258
3279
  ],
3259
- "Guests of": [
3260
- "客座"
3280
+ "Guests of %s": [
3281
+ ""
3261
3282
  ],
3262
3283
  "HTTP Proxies": [
3263
3284
  ""
@@ -3382,6 +3403,9 @@
3382
3403
  "Host group IDs": [
3383
3404
  "主機群組 ID"
3384
3405
  ],
3406
+ "Host group identifier": [
3407
+ ""
3408
+ ],
3385
3409
  "Host groups": [
3386
3410
  "主機群組"
3387
3411
  ],
@@ -4673,6 +4697,9 @@
4673
4697
  "Manifest expiring soon": [
4674
4698
  ""
4675
4699
  ],
4700
+ "Manifest history table": [
4701
+ ""
4702
+ ],
4676
4703
  "Manifest imported": [
4677
4704
  ""
4678
4705
  ],
@@ -5432,6 +5459,9 @@
5432
5459
  "One or more processes require restarting": [
5433
5460
  ""
5434
5461
  ],
5462
+ "Only .zip manifest files are accepted": [
5463
+ ""
5464
+ ],
5435
5465
  "Only On Demand repositories may have space reclaimed.": [
5436
5466
  ""
5437
5467
  ],
@@ -5474,9 +5504,6 @@
5474
5504
  "Organization id": [
5475
5505
  "組織 ID"
5476
5506
  ],
5477
- "Organization id not found: '%s'": [
5478
- ""
5479
- ],
5480
5507
  "Organization identifier": [
5481
5508
  "組織識別子"
5482
5509
  ],
@@ -5492,9 +5519,6 @@
5492
5519
  "Organization not found": [
5493
5520
  ""
5494
5521
  ],
5495
- "Organization not found: '%s'": [
5496
- ""
5497
- ],
5498
5522
  "Organization required": [
5499
5523
  "需要的組織"
5500
5524
  ],
@@ -5786,9 +5810,6 @@
5786
5810
  "Product id as listed from a host's installed products, \\\\\\n this is not the same product id as the products api returns": [
5787
5811
  ""
5788
5812
  ],
5789
- "Product id not found: '%s'": [
5790
- ""
5791
- ],
5792
5813
  "Product label": [
5793
5814
  ""
5794
5815
  ],
@@ -5804,9 +5825,6 @@
5804
5825
  "Product name as listed from a host's installed products": [
5805
5826
  "來自主機已安裝產品的產品名稱"
5806
5827
  ],
5807
- "Product not found: '%s'": [
5808
- ""
5809
- ],
5810
5828
  "Product the repository belongs to": [
5811
5829
  "產品的軟體庫屬於"
5812
5830
  ],
@@ -6515,6 +6533,9 @@
6515
6533
  "Requested access to '%s' is denied": [
6516
6534
  ""
6517
6535
  ],
6536
+ "Requested repository name is unknown to the registry.": [
6537
+ ""
6538
+ ],
6518
6539
  "Requirements is not valid yaml.": [
6519
6540
  ""
6520
6541
  ],
@@ -6797,6 +6818,12 @@
6797
6818
  "Saving alternate content source...": [
6798
6819
  ""
6799
6820
  ],
6821
+ "Saving subscription quantities...": [
6822
+ ""
6823
+ ],
6824
+ "Saving...": [
6825
+ "正在儲存…"
6826
+ ],
6800
6827
  "Scan": [
6801
6828
  ""
6802
6829
  ],
@@ -7133,6 +7160,9 @@
7133
7160
  "Show a content view component": [
7134
7161
  ""
7135
7162
  ],
7163
+ "Show a content view environment": [
7164
+ ""
7165
+ ],
7136
7166
  "Show a content view's history": [
7137
7167
  "顯示內容視域的歷史紀錄"
7138
7168
  ],
@@ -8722,6 +8752,9 @@
8722
8752
  "Upgrade via remote execution": [
8723
8753
  ""
8724
8754
  ],
8755
+ "Upload": [
8756
+ "上傳"
8757
+ ],
8725
8758
  "Upload Content Credential contents": [
8726
8759
  ""
8727
8760
  ],
@@ -8731,6 +8764,9 @@
8731
8764
  "Upload a subscription manifest": [
8732
8765
  "上傳訂閱清單"
8733
8766
  ],
8767
+ "Upload a zip file": [
8768
+ ""
8769
+ ],
8734
8770
  "Upload content": [
8735
8771
  ""
8736
8772
  ],
@@ -9103,6 +9139,9 @@
9103
9139
  "You currently have no content views to display": [
9104
9140
  ""
9105
9141
  ],
9142
+ "You do not have permission to view this organization.": [
9143
+ ""
9144
+ ],
9106
9145
  "You do not have permissions to delete %s": [
9107
9146
  "您沒有刪除 %s 的權限"
9108
9147
  ],
@@ -9535,6 +9574,12 @@
9535
9574
  "has already been taken for a product in this organization.": [
9536
9575
  "已經為此組織的產品使用。"
9537
9576
  ],
9577
+ "has already been taken for this activation key": [
9578
+ ""
9579
+ ],
9580
+ "has already been taken for this host": [
9581
+ ""
9582
+ ],
9538
9583
  "has already been taken for this product.": [
9539
9584
  "已經為此產品使用。"
9540
9585
  ],
@@ -9622,6 +9667,9 @@
9622
9667
  "label of the repository": [
9623
9668
  ""
9624
9669
  ],
9670
+ "latest": [
9671
+ ""
9672
+ ],
9625
9673
  "limit to only repositories with this download policy": [
9626
9674
  ""
9627
9675
  ],
@@ -109,7 +109,8 @@ module Katello
109
109
 
110
110
  return true if authenticate_from_request(request.headers['Authorization'])
111
111
 
112
- unauthorized
112
+ unauthorized unless performed?
113
+ false
113
114
  end
114
115
 
115
116
  def static_index_authorize
@@ -204,7 +205,7 @@ module Katello
204
205
  :bad_request
205
206
  )
206
207
  end
207
- org = Organization.where("LOWER(label) = '#{org_label}'") # convert to lowercase
208
+ org = visible_organizations.where("LOWER(label) = LOWER(?)", org_label)
208
209
  # reject ambiguous orgs (possible due to lowercase conversion)
209
210
  if org.length > 1
210
211
  # Determine if the repo already exists in one of the possible products. If yes,
@@ -238,11 +239,7 @@ module Katello
238
239
  )
239
240
  end
240
241
  if org.length == 0
241
- return render_podman_error(
242
- "NAME_UNKNOWN",
243
- _("Organization not found: '%s'") % org_label,
244
- :not_found
245
- )
242
+ return render_push_name_unknown
246
243
  end
247
244
  @organization = org.first
248
245
  true
@@ -257,13 +254,9 @@ module Katello
257
254
  :bad_request
258
255
  )
259
256
  end
260
- @organization = Organization.find_by_id(org_id.to_i)
257
+ @organization = visible_organizations.find_by_id(org_id.to_i)
261
258
  if @organization.nil?
262
- return render_podman_error(
263
- "NAME_UNKNOWN",
264
- _("Organization id not found: '%s'") % org_id,
265
- :not_found
266
- )
259
+ return render_push_name_unknown
267
260
  end
268
261
  true
269
262
  end
@@ -307,11 +300,7 @@ module Katello
307
300
  )
308
301
  end
309
302
  if product.length == 0
310
- return render_podman_error(
311
- "NAME_UNKNOWN",
312
- _("Product not found: '%s'") % prod_label,
313
- :not_found
314
- )
303
+ return render_push_name_unknown
315
304
  end
316
305
  @product = product.first
317
306
  true
@@ -326,19 +315,16 @@ module Katello
326
315
  :bad_request
327
316
  )
328
317
  end
329
- @product = @organization.products.find_by_id(prod_id.to_i)
318
+ @product = @organization.products.readable.find_by_id(prod_id.to_i)
330
319
  if @product.nil?
331
- return render_podman_error(
332
- "NAME_UNKNOWN",
333
- _("Product id not found: '%s'") % prod_id,
334
- :not_found
335
- )
320
+ return render_push_name_unknown
336
321
  end
337
322
  true
338
323
  end
339
324
 
340
325
  def get_matching_products_from_org(organization, product_label)
341
- return organization.products.where("LOWER(label) = '#{product_label}'") # convert to lowercase
326
+ # The actual push permission (sync_products) is checked in create_container_repo_if_needed.
327
+ return organization.products.readable.where("LOWER(label) = LOWER(?)", product_label)
342
328
  end
343
329
 
344
330
  def get_root_repo_from_product(product, root_repo_name)
@@ -386,7 +372,7 @@ module Katello
386
372
  return render_podman_error(
387
373
  'DENIED',
388
374
  _("Requested access to '%s' is denied") % @container_name,
389
- :not_found
375
+ :forbidden
390
376
  )
391
377
  end
392
378
 
@@ -885,6 +871,23 @@ module Katello
885
871
  render_podman_error("NAME_UNKNOWN", _("%s was not found!") % item, :not_found)
886
872
  end
887
873
 
874
+ def render_push_name_unknown
875
+ # Uniform response for any organization/product that the current user cannot see.
876
+ # Collapsing "does not exist" and "not visible" into a single 404 NAME_UNKNOWN
877
+ # follows the OCI distribution spec guidance to return NAME_UNKNOWN rather than
878
+ # disclosing the existence of resources the client may not access.
879
+ render_podman_error("NAME_UNKNOWN", _("Requested repository name is unknown to the registry."), :not_found)
880
+ end
881
+
882
+ def visible_organizations
883
+ # Organizations visible to the current user. Used to scope push validation so that
884
+ # organizations the user cannot see are indistinguishable from organizations that do
885
+ # not exist. The actual push permission (sync_products) is checked later in
886
+ # create_container_repo_if_needed, which returns DENIED for visible but non-syncable
887
+ # products.
888
+ ::Organization.my_organizations
889
+ end
890
+
888
891
  def static_index
889
892
  repos = Repository.readable_docker_catalog(@host)
890
893
  return render json: { 'Registry' => request_url, 'Results' => [] } if repos.empty?
@@ -17,7 +17,7 @@ module Katello
17
17
  private
18
18
 
19
19
  def find_content_view
20
- @view = ContentView.find(params[:content_view_id]) if params[:content_view_id]
20
+ @view = ContentView.readable.find(params[:content_view_id]) if params[:content_view_id]
21
21
  end
22
22
  end
23
23
  end
@@ -47,18 +47,18 @@ module Katello
47
47
 
48
48
  def handle_content_view_environments_for_create
49
49
  # validations should occur before the action so that the request can fail and not render multiple responses
50
- cves = validate_content_view_environment_params
50
+ cvenvs = validate_content_view_environment_params
51
51
  yield
52
52
  # Skip if the create action didn't persist the host
53
53
  return unless @host&.persisted?
54
54
  # Reload so @host.content_facet reflects what the create action saved
55
55
  @host.reload
56
- set_content_view_environments(cves)
56
+ set_content_view_environments(cvenvs)
57
57
  end
58
58
 
59
59
  def handle_content_view_environments_for_update
60
- cves = validate_content_view_environment_params
61
- set_content_view_environments(cves)
60
+ cvenvs = validate_content_view_environment_params
61
+ set_content_view_environments(cvenvs)
62
62
  end
63
63
 
64
64
  def validate_content_view_environment_params
@@ -66,20 +66,20 @@ module Katello
66
66
  return if content_facet_attributes.blank?
67
67
  return unless cvenv_params[:content_view_environments].present? || cvenv_params[:content_view_environment_ids].present?
68
68
 
69
- cves = ::Katello::ContentViewEnvironment.fetch_content_view_environments(
69
+ cvenvs = ::Katello::ContentViewEnvironment.fetch_content_view_environments(
70
70
  labels: cvenv_params[:content_view_environments],
71
71
  ids: cvenv_params[:content_view_environment_ids],
72
72
  organization: find_organization || @host&.organization)
73
- if cves.blank?
73
+ if cvenvs.blank?
74
74
  handle_errors(labels: cvenv_params[:content_view_environments],
75
75
  ids: cvenv_params[:content_view_environment_ids])
76
76
  end
77
- cves
77
+ cvenvs
78
78
  end
79
79
 
80
80
  # rubocop:disable Naming/AccessorMethodName
81
- def set_content_view_environments(cves)
82
- return if cves.blank?
81
+ def set_content_view_environments(cvenvs)
82
+ return if cvenvs.blank?
83
83
  if @host.blank?
84
84
  Rails.logger.debug "No host; not assigning content view environments"
85
85
  return
@@ -87,7 +87,7 @@ module Katello
87
87
  content_facet = Katello::Host::ContentFacet.new(host: @host)
88
88
  @host.content_facet = content_facet
89
89
  end
90
- @host.content_facet.content_view_environments = cves
90
+ @host.content_facet.content_view_environments = cvenvs
91
91
  end
92
92
  # rubocop:enable Naming/AccessorMethodName
93
93
 
@@ -7,7 +7,7 @@ module Katello
7
7
  aks = ActivationKey.authorized(:view_activation_keys)
8
8
  .where(organization_id: registration_params[:organization_id])
9
9
  .order(:name)
10
- .map { |ak| { name: ak.name, cves: ak.content_view_environments.map(&:label).join(', ') } }
10
+ .map { |ak| { name: ak.name, cvEnvs: ak.content_view_environments.map(&:label).join(', ') } }
11
11
 
12
12
  lces = KTEnvironment.readable
13
13
  .where(organization_id: registration_params[:organization_id])
@@ -150,7 +150,7 @@ module Katello
150
150
  returns array_of: 'Erratum', desc: 'Filtered applicable errata for the host'
151
151
  end
152
152
  def host_applicable_errata_filtered(host, filter = '')
153
- host.applicable_errata.includes(:cves).search_for(filter)
153
+ host.applicable_errata.search_for(filter)
154
154
  end
155
155
 
156
156
  apipie :method, 'Returns filtered installable errata for the host' do
@@ -160,7 +160,66 @@ module Katello
160
160
  end
161
161
  def host_installable_errata_filtered(host, filter = '')
162
162
  return [] if host.content_facet.nil?
163
- host.installable_errata.includes(:cves).search_for(filter)
163
+ host.installable_errata.search_for(filter)
164
+ end
165
+
166
+ apipie :method, 'Loads all host-errata-CVE pairs for a group of hosts' do
167
+ required :hosts, 'Array', desc: 'Batch of host objects from load_hosts'
168
+ keyword :installability, ['applicable', 'installable'], desc: 'Whether to return applicable or installable errata', default: 'applicable'
169
+ keyword :errata_filter, String, desc: 'Optional filter to apply on errata', default: ''
170
+ returns object_of: Hash, desc: 'Hash with :errata_by_host and :cves_by_erratum mappings'
171
+ example 'load_errata_and_cves_by_host(hosts) # => { errata_by_host: { 2 => [<Erratum "RHEA-2012:0055">] }, cves_by_erratum: { "RHEA-2012:0055" => ["CVE-2012-0055"] } }'
172
+ end
173
+ def load_errata_and_cves_by_host(hosts, installability: 'applicable', errata_filter: '')
174
+ host_ids = hosts.map(&:id)
175
+ facet_to_host = Katello::Host::ContentFacet.where(host_id: host_ids).pluck(:id, :host_id).to_h
176
+
177
+ query = Katello::Erratum
178
+ .select('katello_errata.*, katello_content_facet_errata.content_facet_id')
179
+ .joins(content_facet_errata: :content_facet)
180
+ .where(katello_content_facets: { host_id: host_ids })
181
+
182
+ query = query.search_for(errata_filter) if errata_filter.present?
183
+
184
+ if installability == 'installable'
185
+ query = query
186
+ .joins(:repository_errata)
187
+ .joins("INNER JOIN katello_content_facet_repositories ON katello_content_facet_repositories.repository_id = katello_repository_errata.repository_id AND katello_content_facet_repositories.content_facet_id = katello_content_facets.id")
188
+ .distinct
189
+ end
190
+
191
+ # Deduplicate errata by id
192
+ facet_errata_pairs = query.pluck('katello_errata.id', 'katello_content_facet_errata.content_facet_id')
193
+ unique_erratum_ids = facet_errata_pairs.map(&:first).uniq
194
+ errata_map = Katello::Erratum.where(id: unique_erratum_ids).index_by(&:id)
195
+ errata_id_map = errata_map.transform_values(&:errata_id)
196
+
197
+ errata_by_host = {}
198
+ facet_errata_pairs.each do |erratum_id, content_facet_id|
199
+ erratum = errata_map[erratum_id]
200
+ next unless erratum
201
+
202
+ host_id = facet_to_host[content_facet_id]
203
+ errata_by_host[host_id] ||= []
204
+ errata_by_host[host_id] << erratum
205
+ end
206
+
207
+ cves_by_erratum_id = Katello::ErratumCve
208
+ .where(erratum_id: errata_id_map.keys)
209
+ .pluck(:erratum_id, :cve_id)
210
+ .group_by(&:first)
211
+ .transform_values { |pairs| pairs.map(&:last) }
212
+
213
+ cves_by_erratum = {}
214
+ cves_by_erratum_id.each do |db_id, cve_list|
215
+ errata_id_string = errata_id_map[db_id]
216
+ cves_by_erratum[errata_id_string] = cve_list if errata_id_string
217
+ end
218
+
219
+ {
220
+ errata_by_host: errata_by_host,
221
+ cves_by_erratum: cves_by_erratum,
222
+ }
164
223
  end
165
224
 
166
225
  apipie :method, 'Returns version of the latest applicable RPM package' do
@@ -474,7 +474,7 @@ module Katello
474
474
  end
475
475
 
476
476
  def pulp_primary?
477
- !pulp_mirror?
477
+ pulp3_enabled? && !pulp_mirror?
478
478
  end
479
479
 
480
480
  def supported_pulp_types
@@ -8,30 +8,30 @@ node :multi_content_view_environment do |ak|
8
8
  end
9
9
 
10
10
  child :content_view_environments => :content_view_environments do
11
- node :content_view do |cve|
11
+ node :content_view do |cvenv|
12
12
  {
13
- id: cve.content_view&.id,
14
- name: cve.content_view&.name,
15
- label: cve.content_view&.label,
16
- composite: cve.content_view&.composite,
17
- rolling: cve.content_view&.rolling,
18
- content_view_version: cve.content_view_version&.version,
19
- content_view_version_id: cve.content_view_version&.id,
20
- content_view_version_latest: cve.content_view_version&.latest?,
21
- content_view_default: cve.content_view&.default?,
22
- content_view_environment_id: cve.id,
13
+ id: cvenv.content_view&.id,
14
+ name: cvenv.content_view&.name,
15
+ label: cvenv.content_view&.label,
16
+ composite: cvenv.content_view&.composite,
17
+ rolling: cvenv.content_view&.rolling,
18
+ content_view_version: cvenv.content_view_version&.version,
19
+ content_view_version_id: cvenv.content_view_version&.id,
20
+ content_view_version_latest: cvenv.content_view_version&.latest?,
21
+ content_view_default: cvenv.content_view&.default?,
22
+ content_view_environment_id: cvenv.id,
23
23
  }
24
24
  end
25
- node :lifecycle_environment do |cve|
25
+ node :lifecycle_environment do |cvenv|
26
26
  {
27
- id: cve.lifecycle_environment&.id,
28
- name: cve.lifecycle_environment&.name,
29
- label: cve.lifecycle_environment&.label,
30
- lifecycle_environment_library: cve.lifecycle_environment&.library?,
27
+ id: cvenv.lifecycle_environment&.id,
28
+ name: cvenv.lifecycle_environment&.name,
29
+ label: cvenv.lifecycle_environment&.label,
30
+ lifecycle_environment_library: cvenv.lifecycle_environment&.library?,
31
31
  }
32
32
  end
33
- node :label do |cve|
34
- cve.label
33
+ node :label do |cvenv|
34
+ cvenv.label
35
35
  end
36
36
  end
37
37
 
@@ -9,32 +9,32 @@ attributes :upgradable_rpm_count => :upgradable_package_count
9
9
  attributes :applicable_module_stream_count, :upgradable_module_stream_count
10
10
 
11
11
  child :content_view_environments => :content_view_environments do
12
- node :content_view do |cve|
12
+ node :content_view do |cvenv|
13
13
  {
14
- id: cve.content_view&.id,
15
- name: cve.content_view&.name,
16
- label: cve.content_view&.label,
17
- composite: cve.content_view&.composite,
18
- rolling: cve.content_view&.rolling,
19
- content_view_version: cve.content_view_version&.version,
20
- content_view_version_id: cve.content_view_version&.id,
21
- content_view_version_latest: cve.content_view_version&.latest?,
22
- content_view_default: cve.content_view&.default?,
14
+ id: cvenv.content_view&.id,
15
+ name: cvenv.content_view&.name,
16
+ label: cvenv.content_view&.label,
17
+ composite: cvenv.content_view&.composite,
18
+ rolling: cvenv.content_view&.rolling,
19
+ content_view_version: cvenv.content_view_version&.version,
20
+ content_view_version_id: cvenv.content_view_version&.id,
21
+ content_view_version_latest: cvenv.content_view_version&.latest?,
22
+ content_view_default: cvenv.content_view&.default?,
23
23
  }
24
24
  end
25
- node :lifecycle_environment do |cve|
25
+ node :lifecycle_environment do |cvenv|
26
26
  {
27
- id: cve.lifecycle_environment&.id,
28
- name: cve.lifecycle_environment&.name,
29
- label: cve.lifecycle_environment&.label,
30
- lifecycle_environment_library: cve.lifecycle_environment&.library?,
27
+ id: cvenv.lifecycle_environment&.id,
28
+ name: cvenv.lifecycle_environment&.name,
29
+ label: cvenv.lifecycle_environment&.label,
30
+ lifecycle_environment_library: cvenv.lifecycle_environment&.library?,
31
31
  }
32
32
  end
33
- node :label do |cve|
34
- cve.label
33
+ node :label do |cvenv|
34
+ cvenv.label
35
35
  end
36
- node :id do |cve|
37
- cve.id
36
+ node :id do |cvenv|
37
+ cvenv.id
38
38
  end
39
39
  end
40
40
 
@@ -8,28 +8,28 @@ child :organization => :organization do
8
8
  attributes :name, :label, :id
9
9
  end
10
10
 
11
- node :content_view do |cve|
12
- cve.content_view&.slice(:id, :name, :label, :default)
11
+ node :content_view do |cvenv|
12
+ cvenv.content_view&.slice(:id, :name, :label, :default)
13
13
  end
14
14
 
15
- node :lifecycle_environment do |cve|
16
- cve.environment&.slice(:id, :name, :label, :library)
15
+ node :lifecycle_environment do |cvenv|
16
+ cvenv.environment&.slice(:id, :name, :label, :library)
17
17
  end
18
18
 
19
- node :environment do |cve|
20
- cve.environment&.slice(:id, :name, :label, :library)
19
+ node :environment do |cvenv|
20
+ cvenv.environment&.slice(:id, :name, :label, :library)
21
21
  end
22
22
 
23
23
  child :activation_keys => :activation_keys do
24
24
  attributes :id, :name, :label
25
25
  end
26
26
 
27
- node :activation_keys_count do |cve|
28
- cve.activation_keys.count
27
+ node :activation_keys_count do |cvenv|
28
+ cvenv.activation_keys.count
29
29
  end
30
30
 
31
- node :hosts_count do |cve|
32
- cve.hosts.count
31
+ node :hosts_count do |cvenv|
32
+ cvenv.hosts.count
33
33
  end
34
34
 
35
35
  child :hostgroups => :hostgroups do
@@ -91,10 +91,10 @@ child :sorted_organization_readable_environments => :environments do
91
91
  end
92
92
 
93
93
  node :hostgroup_count do |env|
94
- cve_ids = version.content_view&.content_view_environments&.where(environment_id: env.id)&.select(:id) || []
94
+ cvenv_ids = version.content_view&.content_view_environments&.where(environment_id: env.id)&.select(:id) || []
95
95
  ::Hostgroup.authorized('view_hostgroups').in_environments(env).where(
96
96
  'katello_hostgroup_content_facets.content_view_environment_id IN (?)',
97
- cve_ids
97
+ cvenv_ids
98
98
  ).count
99
99
  end
100
100
  end