katello 4.11.0 → 4.11.1

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 (192) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/locale/bn/katello.js +17 -14
  3. data/app/assets/javascripts/katello/locale/bn_IN/katello.js +17 -14
  4. data/app/assets/javascripts/katello/locale/ca/katello.js +17 -14
  5. data/app/assets/javascripts/katello/locale/cs/katello.js +17 -14
  6. data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +20 -14
  7. data/app/assets/javascripts/katello/locale/de/katello.js +31 -16
  8. data/app/assets/javascripts/katello/locale/de_AT/katello.js +17 -14
  9. data/app/assets/javascripts/katello/locale/de_DE/katello.js +17 -14
  10. data/app/assets/javascripts/katello/locale/el/katello.js +17 -14
  11. data/app/assets/javascripts/katello/locale/en/katello.js +17 -14
  12. data/app/assets/javascripts/katello/locale/en_GB/katello.js +17 -14
  13. data/app/assets/javascripts/katello/locale/en_US/katello.js +17 -14
  14. data/app/assets/javascripts/katello/locale/es/katello.js +31 -16
  15. data/app/assets/javascripts/katello/locale/et_EE/katello.js +17 -14
  16. data/app/assets/javascripts/katello/locale/fr/katello.js +31 -16
  17. data/app/assets/javascripts/katello/locale/gl/katello.js +17 -14
  18. data/app/assets/javascripts/katello/locale/gu/katello.js +17 -14
  19. data/app/assets/javascripts/katello/locale/he_IL/katello.js +17 -14
  20. data/app/assets/javascripts/katello/locale/hi/katello.js +17 -14
  21. data/app/assets/javascripts/katello/locale/id/katello.js +17 -14
  22. data/app/assets/javascripts/katello/locale/it/katello.js +17 -14
  23. data/app/assets/javascripts/katello/locale/ja/katello.js +31 -16
  24. data/app/assets/javascripts/katello/locale/ka/katello.js +27 -15
  25. data/app/assets/javascripts/katello/locale/kn/katello.js +17 -14
  26. data/app/assets/javascripts/katello/locale/ko/katello.js +31 -16
  27. data/app/assets/javascripts/katello/locale/locale/katello.js +319 -187
  28. data/app/assets/javascripts/katello/locale/ml_IN/katello.js +17 -14
  29. data/app/assets/javascripts/katello/locale/mr/katello.js +17 -14
  30. data/app/assets/javascripts/katello/locale/nl_NL/katello.js +17 -14
  31. data/app/assets/javascripts/katello/locale/or/katello.js +17 -14
  32. data/app/assets/javascripts/katello/locale/pa/katello.js +17 -14
  33. data/app/assets/javascripts/katello/locale/pl/katello.js +17 -14
  34. data/app/assets/javascripts/katello/locale/pl_PL/katello.js +17 -14
  35. data/app/assets/javascripts/katello/locale/pt/katello.js +17 -14
  36. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +31 -16
  37. data/app/assets/javascripts/katello/locale/ro/katello.js +17 -14
  38. data/app/assets/javascripts/katello/locale/ro_RO/katello.js +17 -14
  39. data/app/assets/javascripts/katello/locale/ru/katello.js +31 -16
  40. data/app/assets/javascripts/katello/locale/sl/katello.js +17 -14
  41. data/app/assets/javascripts/katello/locale/sv_SE/katello.js +17 -14
  42. data/app/assets/javascripts/katello/locale/ta/katello.js +17 -14
  43. data/app/assets/javascripts/katello/locale/ta_IN/katello.js +17 -14
  44. data/app/assets/javascripts/katello/locale/te/katello.js +17 -14
  45. data/app/assets/javascripts/katello/locale/tr/katello.js +17 -14
  46. data/app/assets/javascripts/katello/locale/vi/katello.js +17 -14
  47. data/app/assets/javascripts/katello/locale/vi_VN/katello.js +17 -14
  48. data/app/assets/javascripts/katello/locale/zh/katello.js +17 -14
  49. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +31 -16
  50. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +31 -16
  51. data/app/controllers/katello/concerns/api/v2/registration_controller_extensions.rb +1 -0
  52. data/app/lib/actions/katello/content_view/incremental_updates.rb +28 -15
  53. data/app/lib/actions/pulp3/repository/save_version.rb +13 -1
  54. data/app/models/katello/concerns/host_managed_extensions.rb +9 -7
  55. data/app/models/katello/concerns/smart_proxy_extensions.rb +5 -5
  56. data/app/models/katello/content_view_module_stream_filter.rb +1 -1
  57. data/app/models/katello/glue/candlepin/pool.rb +2 -7
  58. data/app/views/foreman/job_templates/install_errata_-_katello_ansible_default.erb +4 -4
  59. data/app/views/foreman/job_templates/install_errata_by_search_query_-_katello_ansible_default.erb +24 -0
  60. data/app/views/foreman/job_templates/install_packages_by_search_query_-_katello_ansible_default.erb +28 -0
  61. data/app/views/foreman/job_templates/remove_packages_by_search_query_-_katello_ansible_default.erb +26 -0
  62. data/app/views/foreman/job_templates/update_packages_by_search_query_-_katello_ansible_default.erb +33 -0
  63. data/app/views/overrides/activation_keys/_host_tab_pane.html.erb +4 -2
  64. data/app/views/overrides/organizations/_edit_override.html.erb +2 -1
  65. data/db/migrate/20240122150431_remove_content_counts_index.rb +5 -0
  66. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-info.html +1 -4
  67. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +10 -6
  68. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +332 -71
  69. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +332 -64
  70. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +508 -232
  71. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +361 -90
  72. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +311 -57
  73. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +336 -68
  74. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +332 -64
  75. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +343 -73
  76. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +8 -8
  77. data/lib/katello/version.rb +1 -1
  78. data/locale/bn/katello.po +16 -13
  79. data/locale/bn_IN/katello.po +16 -13
  80. data/locale/ca/katello.po +16 -13
  81. data/locale/cs/katello.po +16 -13
  82. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  83. data/locale/cs_CZ/katello.po +16 -13
  84. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  85. data/locale/de/katello.po +17 -14
  86. data/locale/de_AT/katello.po +16 -13
  87. data/locale/de_DE/katello.po +16 -13
  88. data/locale/el/katello.po +16 -13
  89. data/locale/en/katello.po +16 -13
  90. data/locale/en_GB/katello.po +16 -13
  91. data/locale/en_US/katello.po +16 -13
  92. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  93. data/locale/es/katello.po +17 -14
  94. data/locale/et_EE/katello.po +16 -13
  95. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  96. data/locale/fr/katello.po +17 -14
  97. data/locale/gl/katello.po +16 -13
  98. data/locale/gu/katello.po +16 -13
  99. data/locale/he_IL/katello.po +16 -13
  100. data/locale/hi/katello.po +16 -13
  101. data/locale/id/katello.po +16 -13
  102. data/locale/it/katello.po +16 -13
  103. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  104. data/locale/ja/katello.po +17 -14
  105. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  106. data/locale/ka/katello.po +16 -13
  107. data/locale/katello.pot +388 -370
  108. data/locale/kn/katello.po +16 -13
  109. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  110. data/locale/ko/katello.po +17 -14
  111. data/locale/ml_IN/katello.po +16 -13
  112. data/locale/mr/katello.po +16 -13
  113. data/locale/nl_NL/katello.po +16 -13
  114. data/locale/or/katello.po +16 -13
  115. data/locale/pa/katello.po +16 -13
  116. data/locale/pl/katello.po +16 -13
  117. data/locale/pl_PL/katello.po +16 -13
  118. data/locale/pt/katello.po +16 -13
  119. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  120. data/locale/pt_BR/katello.po +17 -14
  121. data/locale/ro/katello.po +16 -13
  122. data/locale/ro_RO/katello.po +16 -13
  123. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  124. data/locale/ru/katello.po +17 -14
  125. data/locale/sl/katello.po +16 -13
  126. data/locale/sv_SE/katello.po +16 -13
  127. data/locale/ta/katello.po +16 -13
  128. data/locale/ta_IN/katello.po +16 -13
  129. data/locale/te/katello.po +16 -13
  130. data/locale/tr/katello.po +16 -13
  131. data/locale/vi/katello.po +16 -13
  132. data/locale/vi_VN/katello.po +16 -13
  133. data/locale/zh/katello.po +16 -13
  134. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  135. data/locale/zh_CN/katello.po +17 -14
  136. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  137. data/locale/zh_TW/katello.po +17 -14
  138. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +6 -5
  139. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +1 -1
  140. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +3 -1
  141. data/webpack/components/extensions/RegistrationCommands/index.js +9 -0
  142. data/webpack/redux/actions/RedHatRepositories/helpers.js +3 -3
  143. data/webpack/scenes/ContentViews/Details/Repositories/ContentCounts.js +1 -1
  144. metadata +7 -50
  145. data/locale/bn/katello.po.time_stamp +0 -0
  146. data/locale/bn_IN/katello.po.time_stamp +0 -0
  147. data/locale/ca/katello.po.time_stamp +0 -0
  148. data/locale/cs/katello.po.time_stamp +0 -0
  149. data/locale/cs_CZ/katello.po.time_stamp +0 -0
  150. data/locale/de/katello.po.time_stamp +0 -0
  151. data/locale/de_AT/katello.po.time_stamp +0 -0
  152. data/locale/de_DE/katello.po.time_stamp +0 -0
  153. data/locale/el/katello.po.time_stamp +0 -0
  154. data/locale/en/katello.po.time_stamp +0 -0
  155. data/locale/en_GB/katello.po.time_stamp +0 -0
  156. data/locale/en_US/katello.po.time_stamp +0 -0
  157. data/locale/es/katello.po.time_stamp +0 -0
  158. data/locale/et_EE/katello.po.time_stamp +0 -0
  159. data/locale/fr/katello.po.time_stamp +0 -0
  160. data/locale/gl/katello.po.time_stamp +0 -0
  161. data/locale/gu/katello.po.time_stamp +0 -0
  162. data/locale/he_IL/katello.po.time_stamp +0 -0
  163. data/locale/hi/katello.po.time_stamp +0 -0
  164. data/locale/id/katello.po.time_stamp +0 -0
  165. data/locale/it/katello.po.time_stamp +0 -0
  166. data/locale/ja/katello.po.time_stamp +0 -0
  167. data/locale/ka/katello.po.time_stamp +0 -0
  168. data/locale/kn/katello.po.time_stamp +0 -0
  169. data/locale/ko/katello.po.time_stamp +0 -0
  170. data/locale/ml_IN/katello.po.time_stamp +0 -0
  171. data/locale/mr/katello.po.time_stamp +0 -0
  172. data/locale/nl_NL/katello.po.time_stamp +0 -0
  173. data/locale/or/katello.po.time_stamp +0 -0
  174. data/locale/pa/katello.po.time_stamp +0 -0
  175. data/locale/pl/katello.po.time_stamp +0 -0
  176. data/locale/pl_PL/katello.po.time_stamp +0 -0
  177. data/locale/pt/katello.po.time_stamp +0 -0
  178. data/locale/pt_BR/katello.po.time_stamp +0 -0
  179. data/locale/ro/katello.po.time_stamp +0 -0
  180. data/locale/ro_RO/katello.po.time_stamp +0 -0
  181. data/locale/ru/katello.po.time_stamp +0 -0
  182. data/locale/sl/katello.po.time_stamp +0 -0
  183. data/locale/sv_SE/katello.po.time_stamp +0 -0
  184. data/locale/ta/katello.po.time_stamp +0 -0
  185. data/locale/ta_IN/katello.po.time_stamp +0 -0
  186. data/locale/te/katello.po.time_stamp +0 -0
  187. data/locale/tr/katello.po.time_stamp +0 -0
  188. data/locale/vi/katello.po.time_stamp +0 -0
  189. data/locale/vi_VN/katello.po.time_stamp +0 -0
  190. data/locale/zh/katello.po.time_stamp +0 -0
  191. data/locale/zh_CN/katello.po.time_stamp +0 -0
  192. data/locale/zh_TW/katello.po.time_stamp +0 -0
@@ -2278,9 +2278,6 @@
2278
2278
  "Sync a repository": [
2279
2279
  ""
2280
2280
  ],
2281
- "temporarily override feed URL for sync": [
2282
- ""
2283
- ],
2284
2281
  "perform an incremental import": [
2285
2282
  ""
2286
2283
  ],
@@ -2290,7 +2287,7 @@
2290
2287
  "Force a sync and validate the checksums of all content. Only used with yum repositories.": [
2291
2288
  ""
2292
2289
  ],
2293
- "source URL is malformed": [
2290
+ "attempted to sync a non-library repository.": [
2294
2291
  ""
2295
2292
  ],
2296
2293
  "attempted to sync without a feed URL": [
@@ -2461,6 +2458,9 @@
2461
2458
  "Check if the specified organization is eligible for Simple Content Access. %s": [
2462
2459
  ""
2463
2460
  ],
2461
+ "This endpoint is deprecated and will be removed in Katello 4.12. All organizations are now eligible for Simple Content Access.": [
2462
+ ""
2463
+ ],
2464
2464
  "Check if the specified organization has Simple Content Access enabled. %s": [
2465
2465
  ""
2466
2466
  ],
@@ -2710,12 +2710,6 @@
2710
2710
  "Sending a list of included IDs is not allowed when all items are being selected.": [
2711
2711
  ""
2712
2712
  ],
2713
- "No hosts have been specified.": [
2714
- ""
2715
- ],
2716
- "No hosts matched search, or action unauthorized for selected hosts.": [
2717
- ""
2718
- ],
2719
2713
  "Value must either be a boolean or 'default' for 'enabled'": [
2720
2714
  ""
2721
2715
  ],
@@ -2734,6 +2728,9 @@
2734
2728
  "Kickstart repository ID": [
2735
2729
  ""
2736
2730
  ],
2731
+ "Deleted %{host_count} %{hosts}": [
2732
+ ""
2733
+ ],
2737
2734
  "Alter a host's host collections": [
2738
2735
  ""
2739
2736
  ],
@@ -2893,6 +2890,9 @@
2893
2890
  "Organization %s is being deleted.": [
2894
2891
  ""
2895
2892
  ],
2893
+ "Simple Content Access will be required for all organizations in Katello 4.12.": [
2894
+ ""
2895
+ ],
2896
2896
  "Error connecting. Got: %s": [
2897
2897
  ""
2898
2898
  ],
@@ -3325,6 +3325,9 @@
3325
3325
  "Cannot skip metadata check on non-yum/deb repositories.": [
3326
3326
  ""
3327
3327
  ],
3328
+ "Unable to sync repo. This repository is not a library instance repository.": [
3329
+ ""
3330
+ ],
3328
3331
  "Disable": [
3329
3332
  ""
3330
3333
  ],
@@ -4633,7 +4636,7 @@
4633
4636
  "Repository has already been cloned to %{cv_name} in environment %{to_env}": [
4634
4637
  ""
4635
4638
  ],
4636
- "Repository cannot be deleted since it has already been included in a published Content View. Please delete all Content View versions containing this repository before attempting to delete it.": [
4639
+ "Repository cannot be deleted since it has already been included in a published Content View. Please delete all Content View versions containing this repository before attempting to delete it or use --remove-from-content-view-versions flag to automatically remove the repository from all published versions.": [
4637
4640
  ""
4638
4641
  ],
4639
4642
  "This is not a linked repository": [
@@ -5375,9 +5378,6 @@
5375
5378
  "Generate and Download": [
5376
5379
  ""
5377
5380
  ],
5378
- "Simple Content Access will be required for all organizations in Katello 4.12.": [
5379
- ""
5380
- ],
5381
5381
  "Alternate Content Source HTTP Proxy": [
5382
5382
  ""
5383
5383
  ],
@@ -8505,6 +8505,9 @@
8505
8505
  "No repositories enabled.": [
8506
8506
  ""
8507
8507
  ],
8508
+ "Debian packages": [
8509
+ ""
8510
+ ],
8508
8511
  "Synced": [
8509
8512
  ""
8510
8513
  ],
@@ -2279,9 +2279,6 @@
2279
2279
  "Sync a repository": [
2280
2280
  "同步軟體庫"
2281
2281
  ],
2282
- "temporarily override feed URL for sync": [
2283
- "临时覆盖 feed 网址以进行同步"
2284
- ],
2285
2282
  "perform an incremental import": [
2286
2283
  "执行增量导入"
2287
2284
  ],
@@ -2291,8 +2288,8 @@
2291
2288
  "Force a sync and validate the checksums of all content. Only used with yum repositories.": [
2292
2289
  "强制一个同步并验证所有内容的 checksums。仅用于yum仓库。"
2293
2290
  ],
2294
- "source URL is malformed": [
2295
- "来源 URL 格式错误"
2291
+ "attempted to sync a non-library repository.": [
2292
+ ""
2296
2293
  ],
2297
2294
  "attempted to sync without a feed URL": [
2298
2295
  "尝试在没有 Feed URL 的情况下进行同步"
@@ -2462,6 +2459,9 @@
2462
2459
  "Check if the specified organization is eligible for Simple Content Access. %s": [
2463
2460
  ""
2464
2461
  ],
2462
+ "This endpoint is deprecated and will be removed in Katello 4.12. All organizations are now eligible for Simple Content Access.": [
2463
+ ""
2464
+ ],
2465
2465
  "Check if the specified organization has Simple Content Access enabled. %s": [
2466
2466
  ""
2467
2467
  ],
@@ -2711,12 +2711,6 @@
2711
2711
  "Sending a list of included IDs is not allowed when all items are being selected.": [
2712
2712
  "当选择所有项目时,不允许发送包含 ID 的列表。"
2713
2713
  ],
2714
- "No hosts have been specified.": [
2715
- "没有指定主机。"
2716
- ],
2717
- "No hosts matched search, or action unauthorized for selected hosts.": [
2718
- ""
2719
- ],
2720
2714
  "Value must either be a boolean or 'default' for 'enabled'": [
2721
2715
  "值需要是一个布尔值,或 'default' 代表 'enabled'"
2722
2716
  ],
@@ -2735,6 +2729,9 @@
2735
2729
  "Kickstart repository ID": [
2736
2730
  "Kickstart 仓库 ID"
2737
2731
  ],
2732
+ "Deleted %{host_count} %{hosts}": [
2733
+ ""
2734
+ ],
2738
2735
  "Alter a host's host collections": [
2739
2736
  "更改主机的主机集合"
2740
2737
  ],
@@ -2894,6 +2891,9 @@
2894
2891
  "Organization %s is being deleted.": [
2895
2892
  "机构 %s 已被删除。"
2896
2893
  ],
2894
+ "Simple Content Access will be required for all organizations in Katello 4.12.": [
2895
+ ""
2896
+ ],
2897
2897
  "Error connecting. Got: %s": [
2898
2898
  "连接错误。获得:%s"
2899
2899
  ],
@@ -3326,6 +3326,9 @@
3326
3326
  "Cannot skip metadata check on non-yum/deb repositories.": [
3327
3327
  ""
3328
3328
  ],
3329
+ "Unable to sync repo. This repository is not a library instance repository.": [
3330
+ ""
3331
+ ],
3329
3332
  "Disable": [
3330
3333
  "禁用"
3331
3334
  ],
@@ -4634,8 +4637,8 @@
4634
4637
  "Repository has already been cloned to %{cv_name} in environment %{to_env}": [
4635
4638
  "仓库已被克隆到环境 %{to_env} 中的 %{cv_name}"
4636
4639
  ],
4637
- "Repository cannot be deleted since it has already been included in a published Content View. Please delete all Content View versions containing this repository before attempting to delete it.": [
4638
- "因为已包含在已发布的“内容视图”中,因此无法删除仓库。在尝试删除它之前,删除包含该仓库的所有内容视图版本。"
4640
+ "Repository cannot be deleted since it has already been included in a published Content View. Please delete all Content View versions containing this repository before attempting to delete it or use --remove-from-content-view-versions flag to automatically remove the repository from all published versions.": [
4641
+ ""
4639
4642
  ],
4640
4643
  "This is not a linked repository": [
4641
4644
  "没有连接的仓库"
@@ -5375,9 +5378,6 @@
5375
5378
  "Generate and Download": [
5376
5379
  "生成并下载"
5377
5380
  ],
5378
- "Simple Content Access will be required for all organizations in Katello 4.12.": [
5379
- ""
5380
- ],
5381
5381
  "Alternate Content Source HTTP Proxy": [
5382
5382
  "备用内容源 HTTP 代理"
5383
5383
  ],
@@ -8504,6 +8504,9 @@
8504
8504
  "No repositories enabled.": [
8505
8505
  "没有启用的仓库。"
8506
8506
  ],
8507
+ "Debian packages": [
8508
+ ""
8509
+ ],
8507
8510
  "Synced": [
8508
8511
  ""
8509
8512
  ],
@@ -8998,6 +9001,18 @@
8998
9001
  ],
8999
9002
  "Verify checksum": [
9000
9003
  "验证校验和"
9004
+ ],
9005
+ "No hosts have been specified.": [
9006
+ "没有指定主机。"
9007
+ ],
9008
+ "#~ \"Repository cannot be deleted since it has already been included in a published\"#~ \" Content View. Please delete all Content View versions containing this reposit\"#~ \"ory before attempting to delete it.\"": [
9009
+ "因为已包含在已发布的“内容视图”中,因此无法删除仓库。在尝试删除它之前,删除包含该仓库的所有内容视图版本。"
9010
+ ],
9011
+ "source URL is malformed": [
9012
+ "来源 URL 格式错误"
9013
+ ],
9014
+ "temporarily override feed URL for sync": [
9015
+ "临时覆盖 feed 网址以进行同步"
9001
9016
  ]
9002
9017
  }
9003
9018
  }
@@ -2279,9 +2279,6 @@
2279
2279
  "Sync a repository": [
2280
2280
  "同步軟體庫"
2281
2281
  ],
2282
- "temporarily override feed URL for sync": [
2283
- "暫時覆寫同步的 feed URL"
2284
- ],
2285
2282
  "perform an incremental import": [
2286
2283
  "進行累進匯入"
2287
2284
  ],
@@ -2291,8 +2288,8 @@
2291
2288
  "Force a sync and validate the checksums of all content. Only used with yum repositories.": [
2292
2289
  ""
2293
2290
  ],
2294
- "source URL is malformed": [
2295
- "來源 URL 格式錯誤"
2291
+ "attempted to sync a non-library repository.": [
2292
+ ""
2296
2293
  ],
2297
2294
  "attempted to sync without a feed URL": [
2298
2295
  "試圖在沒有 feed URL 的情況下同步"
@@ -2462,6 +2459,9 @@
2462
2459
  "Check if the specified organization is eligible for Simple Content Access. %s": [
2463
2460
  ""
2464
2461
  ],
2462
+ "This endpoint is deprecated and will be removed in Katello 4.12. All organizations are now eligible for Simple Content Access.": [
2463
+ ""
2464
+ ],
2465
2465
  "Check if the specified organization has Simple Content Access enabled. %s": [
2466
2466
  ""
2467
2467
  ],
@@ -2711,12 +2711,6 @@
2711
2711
  "Sending a list of included IDs is not allowed when all items are being selected.": [
2712
2712
  ""
2713
2713
  ],
2714
- "No hosts have been specified.": [
2715
- "未指定主機。"
2716
- ],
2717
- "No hosts matched search, or action unauthorized for selected hosts.": [
2718
- ""
2719
- ],
2720
2714
  "Value must either be a boolean or 'default' for 'enabled'": [
2721
2715
  ""
2722
2716
  ],
@@ -2735,6 +2729,9 @@
2735
2729
  "Kickstart repository ID": [
2736
2730
  ""
2737
2731
  ],
2732
+ "Deleted %{host_count} %{hosts}": [
2733
+ ""
2734
+ ],
2738
2735
  "Alter a host's host collections": [
2739
2736
  ""
2740
2737
  ],
@@ -2894,6 +2891,9 @@
2894
2891
  "Organization %s is being deleted.": [
2895
2892
  "組織 %s 已被刪除。"
2896
2893
  ],
2894
+ "Simple Content Access will be required for all organizations in Katello 4.12.": [
2895
+ ""
2896
+ ],
2897
2897
  "Error connecting. Got: %s": [
2898
2898
  "連線錯誤。收到:%s"
2899
2899
  ],
@@ -3326,6 +3326,9 @@
3326
3326
  "Cannot skip metadata check on non-yum/deb repositories.": [
3327
3327
  ""
3328
3328
  ],
3329
+ "Unable to sync repo. This repository is not a library instance repository.": [
3330
+ ""
3331
+ ],
3329
3332
  "Disable": [
3330
3333
  "停用"
3331
3334
  ],
@@ -4634,8 +4637,8 @@
4634
4637
  "Repository has already been cloned to %{cv_name} in environment %{to_env}": [
4635
4638
  "軟體庫已經複製給 %{cv_name} 於環境 %{to_env} 中"
4636
4639
  ],
4637
- "Repository cannot be deleted since it has already been included in a published Content View. Please delete all Content View versions containing this repository before attempting to delete it.": [
4638
- "無法刪除軟體庫,因為它已被包含在一個已發佈的內容視域中。請在嘗試刪除此軟體庫之前,刪除所有包含了此軟體庫的內容視域版本。"
4640
+ "Repository cannot be deleted since it has already been included in a published Content View. Please delete all Content View versions containing this repository before attempting to delete it or use --remove-from-content-view-versions flag to automatically remove the repository from all published versions.": [
4641
+ ""
4639
4642
  ],
4640
4643
  "This is not a linked repository": [
4641
4644
  ""
@@ -5376,9 +5379,6 @@
5376
5379
  "Generate and Download": [
5377
5380
  "產生與下載"
5378
5381
  ],
5379
- "Simple Content Access will be required for all organizations in Katello 4.12.": [
5380
- ""
5381
- ],
5382
5382
  "Alternate Content Source HTTP Proxy": [
5383
5383
  ""
5384
5384
  ],
@@ -8505,6 +8505,9 @@
8505
8505
  "No repositories enabled.": [
8506
8506
  ""
8507
8507
  ],
8508
+ "Debian packages": [
8509
+ ""
8510
+ ],
8508
8511
  "Synced": [
8509
8512
  ""
8510
8513
  ],
@@ -8999,6 +9002,18 @@
8999
9002
  ],
9000
9003
  "Verify checksum": [
9001
9004
  ""
9005
+ ],
9006
+ "No hosts have been specified.": [
9007
+ "未指定主機。"
9008
+ ],
9009
+ "#~ \"Repository cannot be deleted since it has already been included in a published\"#~ \" Content View. Please delete all Content View versions containing this reposit\"#~ \"ory before attempting to delete it.\"": [
9010
+ "無法刪除軟體庫,因為它已被包含在一個已發佈的內容視域中。請在嘗試刪除此軟體庫之前,刪除所有包含了此軟體庫的內容視域版本。"
9011
+ ],
9012
+ "source URL is malformed": [
9013
+ "來源 URL 格式錯誤"
9014
+ ],
9015
+ "temporarily override feed URL for sync": [
9016
+ "暫時覆寫同步的 feed URL"
9002
9017
  ]
9003
9018
  }
9004
9019
  }
@@ -11,6 +11,7 @@ module Katello
11
11
  fail ActiveRecord::RecordNotFound, msg
12
12
  end
13
13
  @host.assign_attributes(host_params('host'))
14
+ @host.owner = User.current
14
15
  @host.save!
15
16
  else
16
17
  super
@@ -4,28 +4,41 @@ module Actions
4
4
  class IncrementalUpdates < Actions::EntryAction
5
5
  include Helpers::Presenter
6
6
 
7
+ def version_environments_by_cv_id(version_environments)
8
+ by_content_view = {}
9
+ version_environments.each do |version_environment|
10
+ by_content_view[version_environment[:content_view_version].content_view.id] ||= []
11
+ by_content_view[version_environment[:content_view_version].content_view.id] << version_environment
12
+ end
13
+ by_content_view
14
+ end
15
+
7
16
  def plan(version_environments, composite_version_environments, content, dep_solve, hosts, description)
8
17
  old_new_version_map = {}
9
18
  output_for_version_ids = []
10
19
 
11
20
  sequence do
12
21
  concurrence do
13
- version_environments.each do |version_environment|
14
- version = version_environment[:content_view_version]
15
- if version.content_view.generated?
16
- fail _("Cannot perform an incremental update on a Generated Content View Version (%{name} version version %{version}") %
17
- {:name => version.content_view.name, :version => version.version}
22
+ version_environments_by_cv_id(version_environments).each_value do |version_environments_for_cv|
23
+ sequence do
24
+ version_environments_for_cv.each do |version_environment|
25
+ version = version_environment[:content_view_version]
26
+ if version.content_view.generated?
27
+ fail _("Cannot perform an incremental update on a Generated Content View Version (%{name} version version %{version}") %
28
+ {:name => version.content_view.name, :version => version.version}
29
+ end
30
+
31
+ if version.content_view.composite?
32
+ fail _("Cannot perform an incremental update on a Composite Content View Version (%{name} version version %{version}") %
33
+ {:name => version.content_view.name, :version => version.version}
34
+ end
35
+
36
+ action = plan_action(ContentViewVersion::IncrementalUpdate, version,
37
+ version_environment[:environments], :resolve_dependencies => dep_solve, :content => content, :description => description)
38
+ old_new_version_map[version] = action.new_content_view_version
39
+ output_for_version_ids << {:version_id => action.new_content_view_version.id, :output => action.output}
40
+ end
18
41
  end
19
-
20
- if version.content_view.composite?
21
- fail _("Cannot perform an incremental update on a Composite Content View Version (%{name} version version %{version}") %
22
- {:name => version.content_view.name, :version => version.version}
23
- end
24
-
25
- action = plan_action(ContentViewVersion::IncrementalUpdate, version,
26
- version_environment[:environments], :resolve_dependencies => dep_solve, :content => content, :description => description)
27
- old_new_version_map[version] = action.new_content_view_version
28
- output_for_version_ids << {:version_id => action.new_content_view_version.id, :output => action.output}
29
42
  end
30
43
  end
31
44
 
@@ -34,7 +34,12 @@ module Actions
34
34
  repo.update(:version_href => version_href)
35
35
  end
36
36
  else
37
- output[:contents_changed] = false
37
+ # get publication and check if repo-version and publication match. Otherwise, contents_changed: false
38
+ if !repo.repository_type.pulp3_skip_publication && fetch_current_published_version_href(repo) != repo.version_href
39
+ output[:contents_changed] = true
40
+ else
41
+ output[:contents_changed] = false
42
+ end
38
43
  end
39
44
  end
40
45
 
@@ -44,6 +49,13 @@ module Actions
44
49
  repo_href = repo_backend_service.repository_reference.repository_href
45
50
  repo_backend_service.api.repositories_api.read(repo_href).latest_version_href
46
51
  end
52
+
53
+ def fetch_current_published_version_href(repo)
54
+ # Fetch latest Pulp 3 repo version
55
+ return nil if repo.publication_href.nil?
56
+ repo_backend_service = repo.backend_service(SmartProxy.pulp_primary)
57
+ repo_backend_service.api.publications_api.read(repo.publication_href).repository_version
58
+ end
47
59
  end
48
60
  end
49
61
  end
@@ -219,6 +219,8 @@ module Katello
219
219
  if !new_record? && !build && self.changes.key?('build')
220
220
  queue.create(id: "refresh_content_host_status_#{id}", name: _("Refresh Content Host Statuses for %s") % self,
221
221
  priority: 300, action: [self, :refresh_content_host_status])
222
+ else
223
+ true
222
224
  end
223
225
  end
224
226
 
@@ -230,14 +232,14 @@ module Katello
230
232
  true
231
233
  end
232
234
 
233
- def reset_content_host_status
234
- logger.debug "Scheduling host status cleanup"
235
- queue.create(id: "reset_content_host_status_#{id}", name: _("Mark Content Host Statuses as Unknown for %s") % self,
236
- priority: 200, action: [self, :reset_katello_status])
237
- end
238
-
239
235
  def queue_reset_content_host_status
240
- should_reset_content_host_status? && reset_content_host_status
236
+ if should_reset_content_host_status?
237
+ logger.debug "Scheduling host status cleanup"
238
+ queue.create(id: "reset_content_host_status_#{id}", name: _("Mark Content Host Statuses as Unknown for %s") % self,
239
+ priority: 200, action: [self, :reset_katello_status])
240
+ else
241
+ true
242
+ end
241
243
  end
242
244
 
243
245
  def should_reset_content_host_status?
@@ -436,9 +436,9 @@ module Katello
436
436
 
437
437
  def last_complete_sync_task
438
438
  ForemanTasks::Task.for_resource(self).where(:label => 'Actions::Katello::CapsuleContent::Sync').order(started_at: :desc).detect do |task|
439
- task.input.with_indifferent_access[:options][:environment_id].nil? &&
440
- task.input.with_indifferent_access[:options][:content_view_id].nil? &&
441
- task.input.with_indifferent_access[:options][:repository_id].nil?
439
+ task.input.with_indifferent_access.dig(:options, :environment_id).nil? &&
440
+ task.input.with_indifferent_access.dig(:options, :content_view_id).nil? &&
441
+ task.input.with_indifferent_access.dig(:options, :repository_id).nil?
442
442
  end
443
443
  end
444
444
 
@@ -479,11 +479,11 @@ module Katello
479
479
  end
480
480
 
481
481
  def last_env_sync_task(env)
482
- last_env_sync_task = sync_tasks.order(ended_at: :desc).detect { |task| task.input.with_indifferent_access[:options][:environment_id] == env.id || task.input.with_indifferent_access[:options][:environment_ids]&.include?(env.id) }
482
+ last_env_sync_task = sync_tasks.order(ended_at: :desc).detect { |task| task.input.with_indifferent_access.dig(:options, :environment_id) == env.id || task.input.with_indifferent_access.dig(:options, :environment_ids)&.include?(env.id) }
483
483
 
484
484
  # env_ids_task_exists checks if any full syncs have run since we started tracking env_ids at time of sync.
485
485
  # If yes, return last_env_sync_task which checks for env_id specific sync + full syncs which contain env as part of env_ids
486
- env_ids_task_exists = sync_tasks.order(ended_at: :desc).any? { |task| task.input.with_indifferent_access[:options][:environment_ids] }
486
+ env_ids_task_exists = sync_tasks.order(ended_at: :desc).any? { |task| task.input.with_indifferent_access.dig(:options, :environment_ids) }
487
487
  return last_env_sync_task if env_ids_task_exists
488
488
 
489
489
  if (last_complete_sync_task&.ended_at && last_env_sync_task&.ended_at)
@@ -29,7 +29,7 @@ module Katello
29
29
  if self.original_module_streams
30
30
  module_ids.concat(repo.module_streams_without_errata.map(&:id))
31
31
  end
32
- modules_streams = ModuleStream.where(id: module_ids).includes(:rpms)
32
+ modules_streams = ModuleStream.in_repositories(repo).where(id: module_ids).includes(:rpms)
33
33
  content_unit_ids += modules_streams.pluck(:pulp_id).flatten.uniq
34
34
  if dependents && !modules_streams.empty?
35
35
  rpms = modules_streams.map(&:rpms).flatten
@@ -129,7 +129,6 @@ module Katello
129
129
  providers.any?
130
130
  end
131
131
 
132
- # rubocop:disable Metrics/MethodLength,Metrics/AbcSize
133
132
  # rubocop:disable Metrics/CyclomaticComplexity
134
133
  def import_data(index_hosts_and_activation_keys = false)
135
134
  pool_attributes = {}.with_indifferent_access
@@ -161,11 +160,7 @@ module Katello
161
160
  pool_attributes[:unmapped_guest] = true
162
161
  end
163
162
 
164
- if subscription.try(:redhat?)
165
- pool_attributes[:virt_who] = pool_attributes['virt_limit'] != "0" && pool_attributes['virt_limit'].present?
166
- else
167
- pool_attributes[:virt_who] = false
168
- end
163
+ pool_attributes[:virt_who] = (pool_attributes['virt_limit'].present? && pool_attributes['virt_limit'] != "0")
169
164
 
170
165
  pool_attributes['stack_id'] = pool_json['stackId']
171
166
  exceptions = pool_attributes.keys.map(&:to_sym) - self.attribute_names.map(&:to_sym)
@@ -175,7 +170,7 @@ module Katello
175
170
  self.create_product_associations
176
171
  self.import_hosts if index_hosts_and_activation_keys
177
172
  end
178
- # rubocop:enable Metrics/MethodLength,Metrics/AbcSize
173
+ # rubocop:enable
179
174
 
180
175
  def create_product_associations
181
176
  products = self.backend_data["providedProducts"] + self.backend_data["derivedProvidedProducts"]
@@ -15,9 +15,9 @@ kind: job_template
15
15
  %>
16
16
 
17
17
  <% if @host.operatingsystem.family == 'Suse' -%>
18
- <% advisories = input(:errata).split(',').join(' ') -%>
19
- <%= render_template('Run Command - Ansible Default', :command => "zypper -n install -t patch #{advisories}") %>
18
+ <% advisories = input(:errata).split(',').join(' ') -%>
19
+ <%= render_template('Run Command - Ansible Default', :command => "zypper -n install -t patch #{advisories}") %>
20
20
  <% else -%>
21
- <% advisories = input(:errata).split(',').map { |e| "--advisory=#{e}" }.join(' ') -%>
22
- <%= render_template('Run Command - Ansible Default', :command => "yum -y update-minimal #{advisories}") %>
21
+ <% advisories = input(:errata).split(',').map { |e| "--advisory=#{e}" }.join(' ') -%>
22
+ <%= render_template('Run Command - Ansible Default', :command => "yum -y update-minimal #{advisories}") %>
23
23
  <% end -%>
@@ -0,0 +1,24 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Install errata by search query - Katello Ansible Default
4
+ job_category: Katello
5
+ description_format: 'Install errata %{Errata search query}'
6
+ feature: katello_errata_install_by_search
7
+ provider_type: Ansible
8
+ template_inputs:
9
+ - name: Errata search query
10
+ description: Filter criteria for errata to be installed.
11
+ input_type: user
12
+ required: false
13
+ %>
14
+
15
+ <% advisory_ids = @host.advisory_ids(search: input("Errata search query")) -%>
16
+ <% render_error(N_("No errata matching given search query")) if !input("Errata search query").blank? && advisory_ids.blank? -%>
17
+ # RESOLVED_ERRATA_IDS=<%= advisory_ids.join(',') %>
18
+
19
+ <% if @host.operatingsystem.family == 'Suse' -%>
20
+ <%= render_template('Run Command - Ansible Default', :command => "zypper -n install -t patch #{advisory_ids.join(' ')}") %>
21
+ <% else -%>
22
+ <% advisories = advisory_ids.map { |e| "--advisory=#{e}" }.join(' ') -%>
23
+ <%= render_template('Run Command - Ansible Default', :command => "yum -y update-minimal #{advisories}") %>
24
+ <% end -%>
@@ -0,0 +1,28 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Install packages by search query - Katello Ansible Default
4
+ job_category: Katello
5
+ description_format: 'Install package(s) %{Package search query}'
6
+ feature: katello_package_install_by_search
7
+ provider_type: Ansible
8
+ template_inputs:
9
+ - name: Package search query
10
+ description: Filter criteria for packages to be installed. IMPORTANT- If left blank, the job will attempt to install all possible packages.
11
+ input_type: user
12
+ required: false
13
+ %>
14
+ <% package_names = @host.package_names_for_job_template(
15
+ action: 'install',
16
+ search: input('Package search query')
17
+ ) -%>
18
+ ---
19
+ - hosts: all
20
+ tasks:
21
+ - package:
22
+ <% if package_names.empty? -%>
23
+ name: []
24
+ <% else -%>
25
+ name: <%= indent(10) { to_yaml(package_names).gsub(/---/, "") } -%>
26
+ state: present
27
+ <% end -%>
28
+
@@ -0,0 +1,26 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Remove packages by search query - Katello Ansible Default
4
+ job_category: Katello
5
+ description_format: 'Remove package(s) %{Packages search query}'
6
+ feature: katello_package_remove_by_search
7
+ provider_type: Ansible
8
+ template_inputs:
9
+ - name: Packages search query
10
+ description: Filter criteria for packages to be removed.
11
+ input_type: user
12
+ required: false
13
+ %>
14
+ <% package_names = @host.package_names_for_job_template(
15
+ action: 'remove',
16
+ search: input('Packages search query')
17
+ ) -%>
18
+ ---
19
+ - hosts: all
20
+ tasks:
21
+ - package:
22
+ name:
23
+ <% package_names.each do |package_name| -%>
24
+ - <%= package_name %>
25
+ <% end -%>
26
+ state: absent
@@ -0,0 +1,33 @@
1
+ <%#
2
+ kind: job_template
3
+ name: Update packages by search query - Katello Ansible Default
4
+ job_category: Katello
5
+ description_format: 'Update package(s) %{Packages search query}'
6
+ feature: katello_package_remove_by_search
7
+ provider_type: Ansible
8
+ template_inputs:
9
+ - name: Packages search query
10
+ description: Filter criteria for packages to be updated.
11
+ input_type: user
12
+ required: false
13
+ - name: Selected update versions
14
+ description: JSON string of selected package versions to be updated, in the format [ nvra ]. Leave blank to upgrade to latest available version.
15
+ input_type: user
16
+ required: false
17
+ value_type: plain
18
+ %>
19
+ <% package_names = @host.package_names_for_job_template(
20
+ action: 'update',
21
+ search: input('Packages search query'),
22
+ versions: input('Selected update versions')
23
+ ) -%>
24
+ <% if package_names.empty? -%>
25
+ <%= render_template('Run Command - Ansible Default', :command => "yum -y update") %>
26
+ <% else -%>
27
+ ---
28
+ - hosts: all
29
+ tasks:
30
+ - package:
31
+ name: <%= indent(10) { to_yaml(package_names).gsub(/---/, "") } -%>
32
+ state: latest
33
+ <% end -%>