katello 3.9.1 → 3.10.0.rc1

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 (229) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +28 -12
  3. data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +12 -3
  4. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +4 -13
  5. data/app/controllers/katello/api/v2/content_credentials_controller.rb +1 -1
  6. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +1 -1
  7. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +6 -4
  8. data/app/controllers/katello/api/v2/content_views_controller.rb +8 -3
  9. data/app/controllers/katello/api/v2/gpg_keys_controller.rb +2 -1
  10. data/app/controllers/katello/api/v2/host_module_streams_controller.rb +39 -0
  11. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +20 -11
  12. data/app/controllers/katello/api/v2/module_streams_controller.rb +2 -1
  13. data/app/controllers/katello/api/v2/repository_sets_controller.rb +17 -8
  14. data/app/controllers/katello/application_controller.rb +0 -2
  15. data/app/controllers/katello/concerns/hosts_controller_extensions.rb +5 -2
  16. data/app/lib/actions/candlepin/consumer/attach_subscription.rb +0 -2
  17. data/app/lib/actions/candlepin/consumer/remove_subscription.rb +0 -2
  18. data/app/lib/actions/katello/capsule_content/create_repos.rb +1 -25
  19. data/app/lib/actions/katello/capsule_content/sync.rb +1 -1
  20. data/app/lib/actions/katello/content_view/promote.rb +2 -5
  21. data/app/lib/actions/katello/content_view/promote_to_environment.rb +2 -5
  22. data/app/lib/actions/katello/content_view/publish.rb +1 -4
  23. data/app/lib/actions/katello/content_view_puppet_environment/create.rb +6 -10
  24. data/app/lib/actions/katello/content_view_version/export.rb +0 -2
  25. data/app/lib/actions/katello/content_view_version/incremental_update.rb +19 -1
  26. data/app/lib/actions/katello/environment/publish_repositories.rb +2 -1
  27. data/app/lib/actions/katello/gpg_key/update.rb +17 -0
  28. data/app/lib/actions/katello/host/attach_subscriptions.rb +0 -2
  29. data/app/lib/actions/katello/host/erratum/install.rb +6 -0
  30. data/app/lib/actions/katello/host/generate_applicability.rb +0 -2
  31. data/app/lib/actions/katello/host/hypervisors_update.rb +11 -6
  32. data/app/lib/actions/katello/host/package/install.rb +6 -0
  33. data/app/lib/actions/katello/host/package/remove.rb +6 -0
  34. data/app/lib/actions/katello/host/package/update.rb +7 -1
  35. data/app/lib/actions/katello/host/package_group/install.rb +6 -0
  36. data/app/lib/actions/katello/host/package_group/remove.rb +6 -0
  37. data/app/lib/actions/katello/host/recalculate_errata_status.rb +0 -2
  38. data/app/lib/actions/katello/host/remove_subscriptions.rb +0 -2
  39. data/app/lib/actions/katello/host/update.rb +1 -0
  40. data/app/lib/actions/katello/host/update_content_overrides.rb +0 -2
  41. data/app/lib/actions/katello/host/upload_package_profile.rb +13 -12
  42. data/app/lib/actions/katello/host/upload_profiles.rb +70 -0
  43. data/app/lib/actions/katello/product/reindex_subscriptions.rb +0 -2
  44. data/app/lib/actions/katello/product/repositories_certs_reset.rb +4 -4
  45. data/app/lib/actions/katello/product/repositories_gpg_reset.rb +2 -2
  46. data/app/lib/actions/katello/repository/check_matching_content.rb +18 -6
  47. data/app/lib/actions/katello/repository/clone_deb_content.rb +1 -1
  48. data/app/lib/actions/katello/repository/clone_to_environment.rb +3 -5
  49. data/app/lib/actions/katello/repository/clone_to_version.rb +2 -3
  50. data/app/lib/actions/katello/repository/clone_yum_content.rb +1 -2
  51. data/app/lib/actions/katello/repository/clone_yum_metadata.rb +2 -2
  52. data/app/lib/actions/katello/repository/create.rb +1 -31
  53. data/app/lib/actions/katello/repository/destroy.rb +1 -2
  54. data/app/lib/actions/katello/repository/export.rb +0 -2
  55. data/app/lib/actions/katello/repository/fetch_pxe_files.rb +0 -2
  56. data/app/lib/actions/katello/repository/filtered_index_content.rb +0 -2
  57. data/app/lib/actions/katello/repository/finish_upload.rb +0 -2
  58. data/app/lib/actions/katello/repository/import_upload.rb +0 -2
  59. data/app/lib/actions/katello/repository/index_content.rb +0 -1
  60. data/app/lib/actions/katello/repository/index_package_groups.rb +0 -2
  61. data/app/lib/actions/katello/repository/instance_update.rb +21 -0
  62. data/app/lib/actions/katello/repository/remove_content.rb +0 -2
  63. data/app/lib/actions/katello/repository/sync.rb +0 -1
  64. data/app/lib/actions/katello/repository/update.rb +0 -2
  65. data/app/lib/actions/katello/upstream_subscriptions/bind_entitlement.rb +0 -2
  66. data/app/lib/actions/katello/upstream_subscriptions/bind_entitlements.rb +0 -2
  67. data/app/lib/actions/katello/upstream_subscriptions/remove_entitlement.rb +0 -1
  68. data/app/lib/actions/katello/upstream_subscriptions/remove_entitlements.rb +0 -2
  69. data/app/lib/actions/katello/upstream_subscriptions/update_entitlement.rb +0 -1
  70. data/app/lib/actions/katello/upstream_subscriptions/update_entitlements.rb +0 -2
  71. data/app/lib/actions/pulp/abstract.rb +13 -14
  72. data/app/lib/actions/pulp/repository/create.rb +13 -211
  73. data/app/lib/actions/pulp/repository/create_in_plan.rb +4 -18
  74. data/app/lib/actions/pulp/repository/refresh.rb +7 -70
  75. data/app/lib/actions/pulp/repository/sync.rb +1 -2
  76. data/app/lib/katello/capsule_content.rb +3 -3
  77. data/app/lib/katello/resources/candlepin/consumer.rb +1 -1
  78. data/app/lib/katello/resources/candlepin/product.rb +1 -1
  79. data/app/lib/katello/validators/hostgroup_kickstart_repository_validator.rb +1 -1
  80. data/app/models/katello/available_module_stream.rb +11 -0
  81. data/app/models/katello/concerns/content_facet_host_extensions.rb +1 -0
  82. data/app/models/katello/concerns/host_managed_extensions.rb +56 -0
  83. data/app/models/katello/concerns/hostgroup_extensions.rb +17 -0
  84. data/app/models/katello/concerns/redhat_extensions.rb +20 -6
  85. data/app/models/katello/concerns/search_by_repository_name.rb +0 -1
  86. data/app/models/katello/concerns/smart_proxy_extensions.rb +26 -12
  87. data/app/models/katello/content_facet_applicable_module_stream.rb +7 -0
  88. data/app/models/katello/content_view_puppet_environment.rb +14 -35
  89. data/app/models/katello/erratum.rb +54 -24
  90. data/app/models/katello/erratum_package.rb +6 -0
  91. data/app/models/katello/glue/pulp/repo.rb +5 -228
  92. data/app/models/katello/gpg_key.rb +1 -0
  93. data/app/models/katello/host/content_facet.rb +38 -83
  94. data/app/models/katello/host_available_module_stream.rb +47 -0
  95. data/app/models/katello/module_stream.rb +18 -0
  96. data/app/models/katello/module_stream_erratum_package.rb +6 -0
  97. data/app/models/katello/product.rb +0 -2
  98. data/app/models/katello/product_content.rb +1 -0
  99. data/app/models/katello/repository.rb +15 -6
  100. data/app/models/katello/root_repository.rb +1 -1
  101. data/app/models/katello/rpm.rb +5 -17
  102. data/app/services/katello/applicable_content_helper.rb +111 -0
  103. data/app/services/katello/managed_content_medium_provider.rb +7 -0
  104. data/app/services/katello/pulp/consumer.rb +13 -7
  105. data/app/services/katello/pulp/repository.rb +157 -4
  106. data/app/services/katello/pulp/repository/deb.rb +47 -0
  107. data/app/services/katello/pulp/repository/docker.rb +43 -0
  108. data/app/services/katello/pulp/repository/file.rb +31 -0
  109. data/app/services/katello/pulp/repository/ostree.rb +40 -0
  110. data/app/services/katello/pulp/repository/puppet.rb +43 -0
  111. data/app/services/katello/pulp/repository/yum.rb +61 -0
  112. data/app/services/katello/repository_type.rb +1 -1
  113. data/app/views/katello/api/v2/content_facet/base.json.rabl +1 -0
  114. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +0 -1
  115. data/app/views/katello/api/v2/errata/_counts.json.rabl +0 -1
  116. data/app/views/katello/api/v2/errata/show.json.rabl +9 -3
  117. data/app/views/katello/api/v2/host_collections/delta_activation_keys.rabl +0 -1
  118. data/app/views/katello/api/v2/host_module_streams/base.json.rabl +8 -0
  119. data/app/views/katello/api/v2/host_module_streams/index.json.rabl +7 -0
  120. data/app/views/katello/api/v2/packages/backend.json.rabl +0 -1
  121. data/app/views/katello/api/v2/repositories/show.json.rabl +6 -6
  122. data/app/views/katello/layouts/react.html.erb +2 -2
  123. data/app/views/overrides/activation_keys/_host_synced_content_select.html.erb +0 -1
  124. data/config/routes/api/rhsm.rb +1 -0
  125. data/config/routes/overrides.rb +4 -0
  126. data/db/migrate/20181008201422_add_modules_to_errata_packages.rb +29 -0
  127. data/db/migrate/20181017181806_available_module_streams.rb +34 -0
  128. data/db/migrate/20181027014323_add_applicable_modules.rb +24 -0
  129. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/module-stream-actions.service.js +2 -1
  130. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/views/content-credential-info.html +1 -1
  131. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/new/views/new-content-credential.html +1 -0
  132. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-host-bulk-module-streams-modal.html +2 -2
  133. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +37 -22
  134. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +4 -1
  135. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-module-streams.controller.js +27 -7
  136. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-module-streams.html +29 -0
  137. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/errata-details.html +15 -1
  138. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +1 -1
  139. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-promotion.controller.js +0 -1
  140. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-publish.controller.js +1 -2
  141. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-versions.controller.js +3 -1
  142. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.controller.js +1 -1
  143. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-promotion.html +0 -15
  144. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +0 -14
  145. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/erratum.controller.js +19 -0
  146. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-info.html +0 -12
  147. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-packages.html +36 -0
  148. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum.html +7 -0
  149. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/errata.routes.js +9 -0
  150. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-module-streams.factory.js +18 -0
  151. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +4 -2
  152. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +2 -2
  153. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/bastion_katello.scss +13 -0
  154. data/lib/katello/permissions/host_permissions.rb +3 -0
  155. data/lib/katello/repository_types/deb.rb +3 -1
  156. data/lib/katello/repository_types/docker.rb +3 -1
  157. data/lib/katello/repository_types/file.rb +1 -0
  158. data/lib/katello/repository_types/ostree.rb +3 -1
  159. data/lib/katello/repository_types/puppet.rb +3 -1
  160. data/lib/katello/repository_types/yum.rb +3 -1
  161. data/lib/katello/tasks/delete_orphaned_content.rake +1 -1
  162. data/lib/katello/tasks/reset.rake +1 -0
  163. data/lib/katello/tasks/test.rake +14 -0
  164. data/lib/katello/tasks/unify_hosts.rake +2 -0
  165. data/lib/katello/tasks/virt_who_report.rake +2 -1
  166. data/lib/katello/version.rb +1 -1
  167. data/locale/Makefile +52 -17
  168. data/locale/update-i18n +22 -0
  169. data/package.json +11 -1
  170. data/webpack/__mocks__/foremanReact/components/common/EmptyState.js +8 -0
  171. data/webpack/move_to_foreman/components/common/table/components/Table.js +2 -1
  172. data/webpack/move_to_pf/react-bootstrap-select/index.js +4 -2
  173. data/webpack/move_to_pf/test-utils/testHelpers.js +9 -0
  174. data/webpack/redux/OrganizationProducts/OrganizationProductsActions.js +24 -0
  175. data/webpack/redux/OrganizationProducts/OrganizationProductsConstants.js +5 -0
  176. data/webpack/redux/OrganizationProducts/OrganizationProductsReducer.js +38 -0
  177. data/webpack/redux/OrganizationProducts/OrganizationProductsSelectors.js +7 -0
  178. data/webpack/redux/OrganizationProducts/__tests__/OrganizationProductsActions.test.js +47 -0
  179. data/webpack/redux/OrganizationProducts/__tests__/OrganizationProductsReducer.test.js +33 -0
  180. data/webpack/redux/OrganizationProducts/__tests__/OrganizationProductsSelectors.test.js +19 -0
  181. data/webpack/redux/OrganizationProducts/__tests__/__snapshots__/OrganizationProductsActions.test.js.snap +49 -0
  182. data/webpack/redux/OrganizationProducts/__tests__/__snapshots__/OrganizationProductsReducer.test.js.snap +36 -0
  183. data/webpack/redux/OrganizationProducts/__tests__/__snapshots__/OrganizationProductsSelectors.test.js.snap +9 -0
  184. data/webpack/redux/OrganizationProducts/index.js +13 -0
  185. data/webpack/redux/actions/RedHatRepositories/enabled.js +7 -1
  186. data/webpack/redux/actions/RedHatRepositories/helpers.js +4 -0
  187. data/webpack/redux/actions/RedHatRepositories/sets.js +2 -0
  188. data/webpack/redux/reducers/RedHatRepositories/enabled.fixtures.js +8 -2
  189. data/webpack/redux/reducers/RedHatRepositories/enabled.js +1 -1
  190. data/webpack/redux/reducers/RedHatRepositories/sets.fixtures.js +12 -3
  191. data/webpack/redux/reducers/index.js +2 -0
  192. data/webpack/scenes/RedHatRepositories/components/SearchBar.js +68 -33
  193. data/webpack/scenes/RedHatRepositories/index.js +13 -2
  194. data/webpack/scenes/RedHatRepositories/index.scss +26 -0
  195. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +1 -1
  196. data/webpack/scenes/Subscriptions/Manifest/__tests__/__snapshots__/ManageManifestModal.test.js.snap +1 -1
  197. data/webpack/scenes/Subscriptions/SubscriptionActions.js +18 -2
  198. data/webpack/scenes/Subscriptions/SubscriptionConstants.js +8 -0
  199. data/webpack/scenes/Subscriptions/SubscriptionHelpers.js +15 -0
  200. data/webpack/scenes/Subscriptions/SubscriptionReducer.js +22 -14
  201. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +39 -90
  202. data/webpack/scenes/Subscriptions/SubscriptionsSelectors.js +14 -0
  203. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +1 -3
  204. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/__snapshots__/UpstreamSubscriptionsPage.test.js.snap +0 -1
  205. data/webpack/scenes/Subscriptions/__tests__/SubscriptionHelpers.test.js +84 -0
  206. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsActions.test.js +26 -1
  207. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +5 -0
  208. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsReducer.test.js +177 -75
  209. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsSelectors.test.js +29 -0
  210. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionHelpers.test.js.snap +31 -0
  211. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +32 -0
  212. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +18 -96
  213. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsReducer.test.js.snap +511 -0
  214. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsSelectors.test.js.snap +26 -0
  215. data/webpack/scenes/Subscriptions/__tests__/subscriptions.fixtures.js +6 -1
  216. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +3 -21
  217. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +113 -0
  218. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.test.js +47 -0
  219. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/__snapshots__/SubscriptionsToolbar.test.js.snap +504 -0
  220. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/index.js +1 -0
  221. data/webpack/scenes/Subscriptions/index.js +15 -4
  222. metadata +59 -14
  223. data/app/lib/actions/pulp/repository/associate_distributor.rb +0 -20
  224. data/app/lib/actions/pulp/repository/associate_importer.rb +0 -23
  225. data/app/lib/actions/pulp/repository/delete_distributor.rb +0 -18
  226. data/app/lib/actions/pulp/repository/refresh_distributor.rb +0 -19
  227. data/app/lib/actions/pulp/repository/update_importer.rb +0 -33
  228. data/app/lib/katello/bulk_actions.rb +0 -63
  229. data/webpack/move_to_foreman/components/common/EmptyState/index.js +0 -68
@@ -16,6 +16,8 @@ angular.module('Bastion.errata').controller('ErratumController', ['$scope', 'Err
16
16
  loading: true
17
17
  };
18
18
 
19
+ $scope.moduleStreamShowMap = {};
20
+
19
21
  if ($scope.errata) {
20
22
  $scope.panel.loading = false;
21
23
  }
@@ -26,5 +28,22 @@ angular.module('Bastion.errata').controller('ErratumController', ['$scope', 'Err
26
28
  $scope.panel.loading = false;
27
29
  ApiErrorHandler.handleGETRequestErrors(response, $scope);
28
30
  });
31
+
32
+ $scope.showModuleStreamList = function (moduleStreamId) {
33
+ return (!$scope.moduleStreamShowMap.hasOwnProperty(moduleStreamId) ||
34
+ $scope.moduleStreamShowMap[moduleStreamId]);
35
+ };
36
+
37
+ $scope.toggleModuleStreamList = function (moduleStreamId) {
38
+ if ($scope.moduleStreamShowMap.hasOwnProperty(moduleStreamId)) {
39
+ $scope.moduleStreamShowMap[moduleStreamId] = !$scope.moduleStreamShowMap[moduleStreamId];
40
+ } else {
41
+ $scope.moduleStreamShowMap[moduleStreamId] = false;
42
+ }
43
+ };
44
+
45
+ $scope.moduleStreamChevron = function (moduleStreamId) {
46
+ return $scope.showModuleStreamList(moduleStreamId) ? 'down' : 'right';
47
+ };
29
48
  }
30
49
  ]);
@@ -43,16 +43,4 @@
43
43
  <h3 translate>Solution</h3>
44
44
  <p class="info-paragraph">{{ errata.solution }}</p>
45
45
  </div>
46
-
47
- <div data-block="right-column">
48
- <h3 translate>Affected Packages</h3>
49
-
50
- <ul class="list-unstyled">
51
- <li ng-repeat="package in errata.packages">
52
- <a href="/packages?search={{package}}">
53
- {{ package }}
54
- </a>
55
- </li>
56
- </ul>
57
- </div>
58
46
  </div>
@@ -0,0 +1,36 @@
1
+ <span page-title ng-model="errata">{{ 'Packages for Errata: ' | translate }} {{ errata.title }}</span>
2
+
3
+ <div data-extend-template="layouts/two-column-details.html">
4
+ <div data-block="left-column">
5
+ <h3 translate>Independent Packages</h3>
6
+ <ul>
7
+ <p ng-show="!errata.packages.length" >No Packages to show</p>
8
+ <li ng-show="errata.packages.length" ng-repeat="package in errata.packages">
9
+ <a href="/packages?search={{package}}">
10
+ {{ package }}
11
+ </a>
12
+ </li>
13
+ </ul>
14
+ </div>
15
+
16
+ <div data-block="right-column">
17
+ <h3 translate>Module Stream Packages</h3>
18
+ <ul class="list-unstyled">
19
+ <p ng-show="!errata.module_streams.length" >No Packages to show</p>
20
+ <li ng-show="errata.module_streams.length" ng-repeat="moduleStream in errata.module_streams">
21
+ <i class="fa fa-chevron-{{ moduleStreamChevron(moduleStream.id) }} cursor-pointer selected-icon"
22
+ ng-click="toggleModuleStreamList(moduleStream.id)"></i>
23
+ <a href="/module_streams/{{ moduleStream.id }}">
24
+ <b>{{ moduleStream.name + ":" + moduleStream.stream }}</b>
25
+ </a>
26
+ <ul ng-show="showModuleStreamList(moduleStream.id)">
27
+ <li ng-repeat="package in moduleStream.packages">
28
+ <a href="/packages?search={{package}}">
29
+ {{ package }}
30
+ </a>
31
+ </li>
32
+ </ul>
33
+ </li>
34
+ </ul>
35
+ </div>
36
+ </div>
@@ -28,6 +28,13 @@
28
28
  </span>
29
29
  </a>
30
30
  </li>
31
+ <li ng-class="{active: isState('erratum.packages') || isState('erratum.module_stream_packages')}">
32
+ <a ui-sref="erratum.packages">
33
+ <span translate>
34
+ Packages
35
+ </span>
36
+ </a>
37
+ </li>
31
38
  </ul>
32
39
  </nav>
33
40
 
@@ -134,5 +134,14 @@ angular.module('Bastion.errata').config(['$stateProvider', function ($stateProvi
134
134
  label: "{{ task.id }}",
135
135
  parent: 'erratum.info'
136
136
  }
137
+ })
138
+ .state('erratum.packages', {
139
+ url: '/packages',
140
+ permission: ['view_products', 'view_content_views'],
141
+ templateUrl: 'errata/details/views/erratum-packages.html',
142
+ ncyBreadcrumb: {
143
+ label: "{{ 'Packages' | translate }}",
144
+ parent: 'erratum.info'
145
+ }
137
146
  });
138
147
  }]);
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @ngdoc service
3
+ * @name Bastion.hosts.factory:HostModuleStream
4
+ *
5
+ * @requires BastionResource
6
+ *
7
+ * @description
8
+ * Provides a BastionResource for the packages of a single content host
9
+ */
10
+ angular.module('Bastion.hosts').factory('HostModuleStream',
11
+ ['BastionResource', function (BastionResource) {
12
+
13
+ return BastionResource('api/v2/hosts/:id/module_streams/:action', {id: '@id'}, {
14
+ autocomplete: {method: 'GET', isArray: true, params: {action: 'auto_complete_search'}}
15
+ });
16
+
17
+ }]
18
+ );
@@ -113,7 +113,7 @@
113
113
  on-save="save(repository)">
114
114
  </dd>
115
115
  </span>
116
- <span ng-show="repository.content_type === 'yum' || repository.content_type === 'puppet'">
116
+ <span ng-show="repository.content_type === 'yum' || repository.content_type === 'deb' || repository.content_type === 'puppet'">
117
117
  <dt translate>Mirror on Sync</dt>
118
118
  <dd bst-edit-checkbox="repository.mirror_on_sync"
119
119
  formatter="booleanToYesNo"
@@ -188,7 +188,7 @@
188
188
  </dd>
189
189
  </span>
190
190
 
191
- <span ng-if="repository.content_type === 'yum' && !product.redhat">
191
+ <span ng-if="(repository.content_type === 'yum' && !product.redhat) || repository.content_type === 'deb'">
192
192
  <dt translate>GPG Key</dt>
193
193
  <dd bst-edit-select="repository.gpg_key.name"
194
194
  readonly="product.redhat ||denied('edit_products', product)"
@@ -196,6 +196,8 @@
196
196
  options="gpgKeys()"
197
197
  on-save="save(repository)">
198
198
  </dd>
199
+ </span>
200
+ <span ng-if="repository.content_type === 'yum' && !product.redhat">
199
201
  <dt translate>SSL CA Cert</dt>
200
202
  <dd bst-edit-select="repository.ssl_ca_cert.name"
201
203
  readonly="product.redhat ||denied('edit_products', product)"
@@ -180,7 +180,7 @@
180
180
  </p>
181
181
  </div>
182
182
 
183
- <div class="checkbox" ng-if="repository.content_type === 'yum' || repository.content_type === 'puppet'">
183
+ <div class="checkbox" ng-if="repository.content_type === 'yum' || repository.content_type === 'deb' || repository.content_type === 'puppet'">
184
184
  <label>
185
185
  <input id="mirror_on_sync" name="mirror_on_sync" ng-model="repository.mirror_on_sync" type="checkbox"/>
186
186
  <span translate>Mirror on Sync</span>
@@ -224,7 +224,7 @@
224
224
  </label>
225
225
  </div>
226
226
 
227
- <div bst-form-group label="{{ 'GPG Key' | translate }}" ng-show="repository.content_type === 'yum'">
227
+ <div bst-form-group label="{{ 'GPG Key' | translate }}" ng-show="repository.content_type === 'yum' || repository.content_type === 'deb'">
228
228
  <select id="gpg_key_id"
229
229
  name="gpg_key_id"
230
230
  ng-model="repository.gpg_key_id"
@@ -47,3 +47,16 @@
47
47
  .drop-down-check-box {
48
48
  margin-left: 10px
49
49
  };
50
+
51
+ .cursor-pointer {
52
+ cursor: pointer;
53
+ }
54
+
55
+ .kat-clearfix::after {
56
+ clear: both;
57
+ }
58
+
59
+ .kat-inline {
60
+ float: left;
61
+ padding-right: 5px;
62
+ }
@@ -26,6 +26,7 @@ Foreman::AccessControl.permission(:edit_hosts).actions.concat [
26
26
  'katello/api/v2/hosts_bulk_actions/environment_content_view',
27
27
  'katello/api/v2/hosts_bulk_actions/release_version',
28
28
  'katello/api/rhsm/candlepin_dynflow_proxy/upload_package_profile',
29
+ 'katello/api/rhsm/candlepin_dynflow_proxy/upload_profiles',
29
30
  'katello/api/rhsm/candlepin_proxies/regenerate_identity_certificates',
30
31
  'katello/api/rhsm/candlepin_proxies/hypervisors_update',
31
32
  'katello/api/rhsm/candlepin_proxies/async_hypervisors_update',
@@ -39,6 +40,8 @@ Foreman::AccessControl.permission(:view_hosts).actions.concat [
39
40
  'katello/api/v2/host_errata/index',
40
41
  'katello/api/v2/host_errata/show',
41
42
  'katello/api/v2/host_errata/auto_complete_search',
43
+ 'katello/api/v2/host_module_streams/index',
44
+ 'katello/api/v2/host_module_streams/auto_complete_search',
42
45
  'katello/api/v2/host_subscriptions/index',
43
46
  'katello/api/v2/host_subscriptions/events',
44
47
  'katello/api/v2/host_subscriptions/product_content',
@@ -1 +1,3 @@
1
- Katello::RepositoryTypeManager.register(::Katello::Repository::DEB_TYPE)
1
+ Katello::RepositoryTypeManager.register(::Katello::Repository::DEB_TYPE) do
2
+ service_class Katello::Pulp::Repository::Deb
3
+ end
@@ -1 +1,3 @@
1
- Katello::RepositoryTypeManager.register(::Katello::Repository::DOCKER_TYPE)
1
+ Katello::RepositoryTypeManager.register(::Katello::Repository::DOCKER_TYPE) do
2
+ service_class Katello::Pulp::Repository::Docker
3
+ end
@@ -1,3 +1,4 @@
1
1
  Katello::RepositoryTypeManager.register(::Katello::Repository::FILE_TYPE) do
2
2
  allow_creation_by_user true
3
+ service_class Katello::Pulp::Repository::File
3
4
  end
@@ -1 +1,3 @@
1
- Katello::RepositoryTypeManager.register(::Katello::Repository::OSTREE_TYPE)
1
+ Katello::RepositoryTypeManager.register(::Katello::Repository::OSTREE_TYPE) do
2
+ service_class Katello::Pulp::Repository::Ostree
3
+ end
@@ -1 +1,3 @@
1
- Katello::RepositoryTypeManager.register(::Katello::Repository::PUPPET_TYPE)
1
+ Katello::RepositoryTypeManager.register(::Katello::Repository::PUPPET_TYPE) do
2
+ service_class Katello::Pulp::Repository::Puppet
3
+ end
@@ -1 +1,3 @@
1
- Katello::RepositoryTypeManager.register(::Katello::Repository::YUM_TYPE)
1
+ Katello::RepositoryTypeManager.register(::Katello::Repository::YUM_TYPE) do
2
+ service_class Katello::Pulp::Repository::Yum
3
+ end
@@ -1,7 +1,7 @@
1
1
  namespace :katello do
2
2
  task :delete_orphaned_content => ["environment"] do
3
3
  User.current = User.anonymous_admin
4
- SmartProxy.with_content.reverse.each do |proxy|
4
+ SmartProxy.with_content.reverse_each do |proxy|
5
5
  begin
6
6
  ForemanTasks.async_task(Actions::Katello::CapsuleContent::RemoveOrphans,
7
7
  :capsule_id => proxy.id)
@@ -12,6 +12,7 @@ namespace :katello do
12
12
  system(service_start.gsub("%s", "mongod"))
13
13
  sleep(10)
14
14
  fail "Cannot migrate pulp database" unless system("sudo -u apache /usr/bin/pulp-manage-db")
15
+
15
16
  SERVICES.each { |s| system(service_start.gsub("%s", s)) }
16
17
  puts "Pulp database reset."
17
18
  end
@@ -136,6 +136,20 @@ namespace :test do
136
136
  Rake::Task[test_task.name].invoke
137
137
  end
138
138
 
139
+ desc "Run the Katello plugin unit glue test suite."
140
+ task :services => ['db:test:prepare'] do
141
+ test_task = Rake::TestTask.new('katello_services_test_task') do |t|
142
+ t.libs << ["test", "#{Katello::Engine.root}/test"]
143
+ t.test_files = [
144
+ "#{Katello::Engine.root}/test/services/**/*_test.rb"
145
+ ]
146
+ t.verbose = true
147
+ t.warning = false
148
+ end
149
+
150
+ Rake::Task[test_task.name].invoke
151
+ end
152
+
139
153
  desc "Run the Katello plugin unit lib test suite."
140
154
  task :lib => ['db:test:prepare'] do
141
155
  test_task = Rake::TestTask.new('katello_lib_test_task') do |t|
@@ -19,6 +19,7 @@ namespace :katello do
19
19
  passed = []
20
20
  ::Host.unscoped.where("name like '%.%'").find_each do |host|
21
21
  next if passed.include?(host.name.downcase)
22
+
22
23
  passed << host.name.downcase
23
24
  puts "Skipping #{host.name}, more than one record." && next if ::Host.unscoped.where(:name => host.name).count > 1
24
25
 
@@ -29,6 +30,7 @@ namespace :katello do
29
30
 
30
31
  def unify_two(name1, name2)
31
32
  fail _("#{name1} specified twice") if name1 == name2
33
+
32
34
  host1 = Host.find_by(:name => name1)
33
35
  host2 = Host.find_by(:name => name2)
34
36
  if host1.nil? || host2.nil?
@@ -6,7 +6,7 @@ namespace :katello do
6
6
  LIMIT - only execute on a specified number of hosts (useful when re-running with different options). Example: LIMIT=500
7
7
  IGNORE - ignore one or more pools, separated via a pipe character '|'.
8
8
  Example: IGNORE="Red Hat Enterprise Linux Server with Smart Management, Standard (Physical or Virtual Nodes)|Some Other Pool"
9
- DESCRIPTION
9
+ DESCRIPTION
10
10
  task :virt_who_report => ["environment", "check_ping"] do
11
11
  class ProblemItem
12
12
  attr_accessor :host, :hypervisor, :message
@@ -111,6 +111,7 @@ DESCRIPTION
111
111
 
112
112
  for_each_item_with_index do |item, index|
113
113
  break if ENV['LIMIT'] && ENV['LIMIT'].to_i < index
114
+
114
115
  puts "#{index + 1}/#{total}"
115
116
  begin
116
117
  consumer_attributes = candlepin_attributes(item)
@@ -1,3 +1,3 @@
1
1
  module Katello
2
- VERSION = "3.9.1".freeze
2
+ VERSION = "3.10.0.rc1".freeze
3
3
  end
data/locale/Makefile CHANGED
@@ -1,33 +1,40 @@
1
1
  #
2
- # Makefile for PO merging and MO generation
2
+ # Makefile for PO merging and MO generation. More info in the README.
3
3
  #
4
-
5
- POTFILE = katello.pot
6
- POFILES = $(shell find . -name '*.po')
4
+ # make all-mo (default) - generate MO files
5
+ # make check - check translations using translate-tool
6
+ # make tx-update - download and merge translations from Transifex
7
+ # make clean - clean everything
8
+ #
9
+ DOMAIN = katello
10
+ VERSION = $(shell git describe --abbrev=0 --tags)
11
+ POTFILE = $(DOMAIN).pot
12
+ MOFILE = $(DOMAIN).mo
13
+ POFILES = $(shell find . -name '$(DOMAIN).po')
7
14
  MOFILES = $(patsubst %.po,%.mo,$(POFILES))
8
15
  POXFILES = $(patsubst %.po,%.pox,$(POFILES))
16
+ EDITFILES = $(patsubst %.po,%.edit.po,$(POFILES))
9
17
 
10
18
  %.mo: %.po
11
- msgfmt -o $@ $<
19
+ mkdir -p $(shell dirname $@)/LC_MESSAGES
20
+ msgfmt -o $(shell dirname $@)/LC_MESSAGES/$(MOFILE) $<
21
+ touch $(shell dirname $@)/LC_MESSAGES/$(MOFILE)
12
22
 
13
23
  # Generate MO files from PO files
14
24
  all-mo: $(MOFILES)
15
25
 
16
26
  # Check for malformed strings
17
- # TODO - enable endwhitespace, endpunc, puncspacing, options filters
18
27
  %.pox: %.po
19
28
  msgfmt -c $<
20
29
  pofilter --nofuzzy -t variables -t blank -t urls -t emails -t long -t newlines \
21
- -t options -t printf -t validchars --gnome $< > $@
30
+ -t endwhitespace -t endpunc -t puncspacing -t options -t printf -t validchars --gnome $< > $@
31
+ cat $@
22
32
  ! grep -q msgid $@
23
33
 
24
- check: $(POXFILES)
34
+ %.edit.po:
35
+ touch $@
25
36
 
26
- # Merge PO files
27
- update-po:
28
- for f in $(shell find ./ -name "*.po") ; do \
29
- msgmerge -N --backup=none -U $$f ${POTFILE} ; \
30
- done
37
+ check: $(POXFILES)
31
38
 
32
39
  # Unify duplicate translations
33
40
  uniq-po:
@@ -35,7 +42,35 @@ uniq-po:
35
42
  msguniq $$f -o $$f ; \
36
43
  done
37
44
 
38
- # Remove all MO files
39
- clean:
40
- -rm -f messages.mo
41
- find . \( -name "*.mo" -o -name "*.pox" \) -exec rm -f '{}' ';'
45
+ tx-pull: $(EDITFILES)
46
+ tx pull -f
47
+ for f in $(EDITFILES) ; do \
48
+ sed -i 's/^\("Project-Id-Version: \).*$$/\1$(DOMAIN) $(VERSION)\\n"/' $$f; \
49
+ done
50
+
51
+ tx-update: tx-pull
52
+ @echo
53
+ @echo Run rake plugin:gettext[$(DOMAIN)] from the Foreman installation, then make -C locale mo-files to finish
54
+ @echo
55
+
56
+ mo-files: $(MOFILES)
57
+ git add $(POFILES) $(POTFILE) ../locale/*/LC_MESSAGES
58
+ git commit -m "i18n - pulling from tx"
59
+ @echo
60
+ @echo Changes commited!
61
+ @echo
62
+
63
+ # Workaround when rake task fails (https://github.com/ruby/rake/pull/182)
64
+ extract:
65
+ rxgettext \
66
+ --sort-output \
67
+ --sort-by-msgid \
68
+ --no-wrap \
69
+ --no-location \
70
+ -o ${DOMAIN}.pot \
71
+ --package-name=${DOMAIN} \
72
+ --package-version="${VERSION}" \
73
+ --msgid-bugs-address=foreman-dev@googlegroups.com \
74
+ --copyright-holder="Foreman developers" \
75
+ --copyright-year=$(shell date +%Y) \
76
+ $(shell find ../app -type f -name \*.rb -o -name \*.erb)
@@ -0,0 +1,22 @@
1
+ #!/bin/bash
2
+
3
+ FOREMAN_DIR="../../foreman"
4
+ BASTION_DIR="../engines/bastion_katello"
5
+
6
+ #this actuall pulls the strings from transifex for both directions
7
+ make -C locale tx-update
8
+
9
+ #Extract the main strings
10
+ pushd $FOREMAN_DIR
11
+ bundle exec rake plugin:gettext[katello]
12
+ popd
13
+
14
+ # Now extract the bastion files
15
+ pushd $BASTION_DIR
16
+ bundle exec grunt i18n:extract
17
+ bundle exec grunt i18n:compile
18
+ popd
19
+
20
+ # This step creates the mo files and does the commit
21
+ make -C locale mo-files
22
+