katello 3.3.2 → 3.4.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 (542) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/katello/containers/container.scss +1 -2
  3. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +2 -1
  4. data/app/controllers/katello/api/v2/activation_keys_controller.rb +28 -23
  5. data/app/controllers/katello/api/v2/api_controller.rb +2 -1
  6. data/app/controllers/katello/api/v2/capsule_content_controller.rb +1 -1
  7. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +2 -0
  8. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +1 -1
  9. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +12 -2
  10. data/app/controllers/katello/api/v2/content_views_controller.rb +4 -1
  11. data/app/controllers/katello/api/v2/docker_tags_controller.rb +14 -0
  12. data/app/controllers/katello/api/v2/environments_controller.rb +2 -1
  13. data/app/controllers/katello/api/v2/host_collections_controller.rb +2 -1
  14. data/app/controllers/katello/api/v2/host_packages_controller.rb +1 -0
  15. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +27 -23
  16. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +19 -0
  17. data/app/controllers/katello/api/v2/organizations_controller.rb +8 -4
  18. data/app/controllers/katello/api/v2/package_groups_controller.rb +51 -0
  19. data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +15 -1
  20. data/app/controllers/katello/api/v2/repositories_controller.rb +57 -32
  21. data/app/controllers/katello/api/v2/repository_sets_controller.rb +1 -0
  22. data/app/controllers/katello/api/v2/subscriptions_controller.rb +1 -1
  23. data/app/controllers/katello/api/v2/sync_plans_controller.rb +1 -0
  24. data/app/controllers/katello/concerns/api/v2/content_overrides_controller.rb +39 -0
  25. data/app/controllers/katello/concerns/organizations_controller_extensions.rb +1 -0
  26. data/app/controllers/katello/providers_controller.rb +3 -1
  27. data/app/controllers/katello/sync_management_controller.rb +2 -0
  28. data/app/helpers/katello/errata_mailer_helper.rb +1 -1
  29. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +2 -7
  30. data/app/lib/actions/candlepin/candlepin_listening_service.rb +2 -1
  31. data/app/lib/actions/candlepin/environment/set_content.rb +1 -1
  32. data/app/lib/actions/candlepin/owner/upstream_regenerate_certificates.rb +17 -0
  33. data/app/lib/actions/candlepin/product/content_add.rb +2 -1
  34. data/app/lib/actions/candlepin/product/content_create.rb +3 -1
  35. data/app/lib/actions/candlepin/product/content_destroy.rb +2 -1
  36. data/app/lib/actions/candlepin/product/content_remove.rb +2 -1
  37. data/app/lib/actions/candlepin/product/content_update.rb +3 -1
  38. data/app/lib/actions/candlepin/product/create.rb +12 -1
  39. data/app/lib/actions/candlepin/product/destroy.rb +2 -1
  40. data/app/lib/actions/candlepin/product/update.rb +4 -0
  41. data/app/lib/actions/katello/capsule_content/create_repos.rb +1 -1
  42. data/app/lib/actions/katello/content_view/promote.rb +3 -2
  43. data/app/lib/actions/katello/content_view/promote_to_environment.rb +3 -2
  44. data/app/lib/actions/katello/content_view/publish.rb +3 -2
  45. data/app/lib/actions/katello/content_view_version/destroy.rb +7 -1
  46. data/app/lib/actions/katello/content_view_version/incremental_update.rb +1 -1
  47. data/app/lib/actions/katello/content_view_version/republish_repositories.rb +40 -0
  48. data/app/lib/actions/katello/host/destroy.rb +1 -0
  49. data/app/lib/actions/katello/host/erratum/install.rb +13 -4
  50. data/app/lib/actions/katello/host/hypervisors_update.rb +3 -2
  51. data/app/lib/actions/katello/host/register.rb +10 -4
  52. data/app/lib/actions/katello/host/remove_subscriptions.rb +14 -12
  53. data/app/lib/actions/katello/host/update.rb +9 -7
  54. data/app/lib/actions/katello/host/update_content_overrides.rb +43 -0
  55. data/app/lib/actions/katello/organization/destroy.rb +1 -1
  56. data/app/lib/actions/katello/organization/manifest_refresh.rb +3 -0
  57. data/app/lib/actions/katello/product/content_create.rb +3 -0
  58. data/app/lib/actions/katello/product/content_destroy.rb +2 -0
  59. data/app/lib/actions/katello/product/create.rb +1 -2
  60. data/app/lib/actions/katello/product/destroy.rb +3 -2
  61. data/app/lib/actions/katello/repository/check_matching_content.rb +49 -0
  62. data/app/lib/actions/katello/repository/clone_to_environment.rb +3 -2
  63. data/app/lib/actions/katello/repository/clone_yum_content.rb +17 -1
  64. data/app/lib/actions/katello/repository/create.rb +4 -1
  65. data/app/lib/actions/katello/repository/destroy_package_group.rb +26 -0
  66. data/app/lib/actions/katello/repository/discover.rb +8 -3
  67. data/app/lib/actions/katello/repository/errata_mail.rb +1 -1
  68. data/app/lib/actions/katello/repository/finish_upload.rb +6 -2
  69. data/app/lib/actions/katello/repository/import_upload.rb +30 -7
  70. data/app/lib/actions/katello/repository/index_content.rb +2 -1
  71. data/app/lib/actions/katello/repository/metadata_generate.rb +19 -5
  72. data/app/lib/actions/katello/repository/remove_content.rb +7 -4
  73. data/app/lib/actions/katello/repository/sync.rb +28 -14
  74. data/app/lib/actions/katello/repository/update.rb +1 -0
  75. data/app/lib/actions/katello/repository/upload_package_group.rb +34 -0
  76. data/app/lib/actions/katello/repository_set/scan_cdn.rb +2 -4
  77. data/app/lib/actions/middleware/skip_if_matching_content.rb +24 -0
  78. data/app/lib/actions/pulp/abstract.rb +2 -2
  79. data/app/lib/actions/pulp/consumer/generate_applicability.rb +5 -1
  80. data/app/lib/actions/pulp/consumer/sync_capsule.rb +10 -0
  81. data/app/lib/actions/pulp/content_view_puppet_environment/index_content.rb +5 -3
  82. data/app/lib/actions/pulp/repository/copy_errata.rb +4 -0
  83. data/app/lib/actions/pulp/repository/create.rb +6 -1
  84. data/app/lib/actions/pulp/repository/distributor_publish.rb +3 -0
  85. data/app/lib/actions/pulp/repository/download.rb +16 -0
  86. data/app/lib/actions/pulp/repository/import_upload.rb +2 -1
  87. data/app/lib/actions/pulp/repository/presenters/{file_presenter.rb → file_unit_presenter.rb} +0 -0
  88. data/app/lib/actions/pulp/repository/presenters/ostree_presenter.rb +16 -3
  89. data/app/lib/actions/pulp/repository/remove_errata.rb +4 -0
  90. data/app/lib/actions/pulp/repository/sync.rb +3 -3
  91. data/app/lib/katello/errors.rb +2 -0
  92. data/app/lib/katello/repo_discovery.rb +33 -8
  93. data/app/lib/katello/resources/candlepin.rb +87 -68
  94. data/app/lib/katello/resources/cdn.rb +26 -13
  95. data/app/lib/katello/util/cdn_var_substitutor.rb +39 -124
  96. data/app/lib/katello/util/path_with_substitutions.rb +58 -0
  97. data/app/models/katello/activation_key.rb +11 -15
  98. data/app/models/katello/candlepin/content.rb +6 -14
  99. data/app/models/katello/candlepin/product_content.rb +11 -3
  100. data/app/models/katello/concerns/content_facet_host_extensions.rb +19 -10
  101. data/app/models/katello/concerns/environment_extensions.rb +6 -3
  102. data/app/models/katello/concerns/host_managed_extensions.rb +21 -7
  103. data/app/models/katello/concerns/hostgroup_extensions.rb +3 -3
  104. data/app/models/katello/concerns/location_extensions.rb +32 -24
  105. data/app/models/katello/concerns/pulp_database_unit.rb +10 -2
  106. data/app/models/katello/concerns/smart_proxy_extensions.rb +8 -6
  107. data/app/models/katello/concerns/subscription_facet_host_extensions.rb +27 -10
  108. data/app/models/katello/content_override.rb +63 -0
  109. data/app/models/katello/content_view.rb +3 -8
  110. data/app/models/katello/content_view_history.rb +1 -1
  111. data/app/models/katello/content_view_puppet_environment.rb +10 -2
  112. data/app/models/katello/content_view_puppet_module.rb +1 -1
  113. data/app/models/katello/content_view_version.rb +2 -2
  114. data/app/models/katello/docker_manifest.rb +1 -1
  115. data/app/models/katello/docker_tag.rb +3 -3
  116. data/app/models/katello/erratum.rb +4 -4
  117. data/app/models/katello/file_unit.rb +1 -1
  118. data/app/models/katello/glue/candlepin/activation_key.rb +10 -8
  119. data/app/models/katello/glue/candlepin/content.rb +1 -21
  120. data/app/models/katello/glue/candlepin/owner.rb +3 -1
  121. data/app/models/katello/glue/candlepin/pool.rb +3 -1
  122. data/app/models/katello/glue/candlepin/product.rb +2 -7
  123. data/app/models/katello/glue/provider.rb +19 -1
  124. data/app/models/katello/glue/pulp/repo.rb +33 -19
  125. data/app/models/katello/glue/pulp/repos.rb +0 -8
  126. data/app/models/katello/gpg_key.rb +1 -1
  127. data/app/models/katello/host/subscription_facet.rb +47 -4
  128. data/app/models/katello/host_collection.rb +2 -2
  129. data/app/models/katello/kt_environment.rb +1 -1
  130. data/app/models/katello/ostree_branch.rb +1 -1
  131. data/app/models/katello/package_group.rb +1 -1
  132. data/app/models/katello/pool.rb +14 -15
  133. data/app/models/katello/product.rb +2 -2
  134. data/app/models/katello/provider.rb +0 -28
  135. data/app/models/katello/repository.rb +91 -29
  136. data/app/models/katello/subscription.rb +12 -0
  137. data/app/models/katello/subscription_status.rb +1 -1
  138. data/app/models/katello/sync_plan.rb +9 -2
  139. data/app/models/katello/trace_status.rb +53 -0
  140. data/app/models/setting/content.rb +55 -25
  141. data/app/overrides/add_activation_keys_input.rb +0 -5
  142. data/app/presenters/katello/product_content_presenter.rb +11 -3
  143. data/app/services/katello/candlepin/consumer.rb +24 -16
  144. data/app/services/katello/pulp/erratum.rb +1 -0
  145. data/app/services/katello/pulp/file_unit.rb +1 -1
  146. data/app/views/dashboard/_errata_widget.html.erb +2 -2
  147. data/app/views/foreman/unattended/kickstart-katello.erb +1 -1
  148. data/app/views/katello/api/v2/activation_keys/product_content.json.rabl +14 -1
  149. data/app/views/katello/api/v2/host_subscriptions/product_content.json.rabl +15 -1
  150. data/app/views/katello/api/v2/repositories/base.json.rabl +1 -0
  151. data/app/views/katello/api/v2/repositories/show.json.rabl +5 -0
  152. data/app/views/katello/api/v2/subscription_facet/show.json.rabl +1 -1
  153. data/app/views/katello/api/v2/subscriptions/base.json.rabl +1 -0
  154. data/app/views/katello/providers/redhat/_repo_sets.html.erb +1 -1
  155. data/app/views/katello/providers/redhat/_repos.html.erb +1 -1
  156. data/app/views/katello/providers/redhat/show.html.erb +1 -1
  157. data/app/views/overrides/activation_keys/_host_environment_select.html.erb +2 -1
  158. data/app/views/overrides/hosts/_subscription_link.html.erb +1 -1
  159. data/config/initializers/pagelets.rb +6 -0
  160. data/config/routes/api/v2.rb +8 -0
  161. data/config/routes/overrides.rb +1 -0
  162. data/db/migrate/20161209162947_add_virt_who_to_katello_pools.rb +9 -0
  163. data/db/migrate/20170114051758_add_depth_to_repositories.rb +6 -0
  164. data/db/migrate/20170122204325_add_hypervisor_to_subscription_facets.rb +6 -0
  165. data/db/migrate/20170125152421_move_default_location_to_settings.rb +25 -0
  166. data/db/migrate/20170208215148_add_docker_repo_name.rb +14 -0
  167. data/db/migrate/20170222131211_change_pool_columns_to_dates.rb +19 -0
  168. data/db/seeds.d/101-locations.rb +9 -3
  169. data/db/seeds.d/103-provisioning_templates.rb +2 -2
  170. data/db/seeds.d/106-mail_notifications.rb +6 -0
  171. data/db/seeds.d/108-subcription-bookmarks.rb +19 -0
  172. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-key.factory.js +2 -2
  173. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.controller.js +1 -1
  174. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.module.js +2 -1
  175. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.routes.js +3 -3
  176. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-add-host-collections.controller.js +1 -0
  177. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-add-subscriptions.controller.js +1 -0
  178. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-associations.controller.js +1 -0
  179. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-host-collections.controller.js +1 -0
  180. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-repository-sets.controller.js +64 -0
  181. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-subscriptions.controller.js +1 -0
  182. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-add-subscriptions.html +2 -52
  183. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-associations-content-hosts.html +1 -1
  184. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-details.html +3 -3
  185. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-host-collections-table.html +2 -0
  186. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-host-collections.html +1 -1
  187. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-repository-sets.html +85 -0
  188. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-subscriptions-list.html +3 -39
  189. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-subscriptions.html +1 -1
  190. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/new/views/activation-key-new.html +15 -15
  191. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/views/activation-keys.html +3 -3
  192. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion-katello-bootstrap.js +1 -0
  193. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion_katello.js +6 -0
  194. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/subscription-add-or-remove.html +50 -0
  195. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/{content-hosts-bulk-action-environment.controller.js → content-hosts-bulk-environment-modal.controller.js} +24 -13
  196. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-errata-modal.controller.js +124 -0
  197. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-host-collections-modal.controller.js +86 -0
  198. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/{content-hosts-bulk-action-packages.controller.js → content-hosts-bulk-packages-modal.controller.js} +24 -17
  199. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/{content-hosts-bulk-action-subscriptions.controller.js → content-hosts-bulk-subscriptions-modal.controller.js} +31 -12
  200. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-destroy-modal.html +4 -0
  201. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/{bulk-actions-environment.html → content-hosts-bulk-environment-modal.html} +27 -13
  202. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +107 -0
  203. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-host-collections-modal.html +91 -0
  204. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-packages-modal.html +162 -0
  205. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-subscriptions-modal.html +121 -0
  206. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/errata-details.html +0 -5
  207. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +108 -16
  208. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.module.js +2 -279
  209. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.routes.js +251 -0
  210. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-errata.controller.js +19 -19
  211. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-applicable.controller.js +5 -4
  212. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-installed.controller.js +3 -3
  213. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages.controller.js +2 -2
  214. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-traces.controller.js +5 -5
  215. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +35 -34
  216. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +3 -3
  217. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +8 -7
  218. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-installed.html +12 -13
  219. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-traces.html +28 -20
  220. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/errata-details.html +42 -62
  221. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-add-host-collections.controller.js +17 -12
  222. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-add-subscriptions.controller.js +22 -10
  223. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details-info.controller.js +4 -0
  224. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +2 -4
  225. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-host-collections.controller.js +17 -12
  226. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-repository-sets.controller.js +64 -0
  227. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-subscriptions.controller.js +12 -12
  228. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-add-subscriptions.html +21 -49
  229. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html +136 -148
  230. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-events.html +1 -1
  231. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-host-collections-table.html +59 -0
  232. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-host-collections.html +20 -0
  233. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +198 -256
  234. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-provisioning-info.html +38 -54
  235. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-repository-sets.html +93 -0
  236. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-subscriptions-list.html +6 -54
  237. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-subscriptions.html +47 -82
  238. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-tasks.html +3 -4
  239. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +107 -13
  240. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register.html +26 -31
  241. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.controller.js +1 -1
  242. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.routes.js +115 -33
  243. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-activation-keys.controller.js +1 -0
  244. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-content-hosts.controller.js +2 -1
  245. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/content-view-deletion.html +2 -2
  246. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-activation-keys.html +3 -3
  247. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-confirm.html +3 -3
  248. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-content-hosts.html +3 -3
  249. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-environments.html +2 -2
  250. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-available-content-views.controller.js +1 -0
  251. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-content-views-list.controller.js +1 -0
  252. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-available-content-views.html +4 -6
  253. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-content-views-list.html +4 -6
  254. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite.html +1 -1
  255. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-docker-repositories.controller.js +1 -0
  256. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-file-repositories.controller.js +1 -0
  257. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-ostree-repositories.controller.js +1 -0
  258. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-repositories.controller.js +1 -0
  259. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-docker-repositories-list.controller.js +1 -0
  260. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-file-repositories-list.controller.js +1 -0
  261. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-ostree-repositories-list.controller.js +1 -0
  262. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-promotion.controller.js +2 -1
  263. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-publish.controller.js +2 -1
  264. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-repositories-list.controller.js +1 -0
  265. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-versions.controller.js +7 -0
  266. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-errata-filter.controller.js +10 -1
  267. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-package-group-filter.controller.js +1 -0
  268. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/date-type-errata-filter.controller.js +9 -1
  269. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/docker-tag-filter.controller.js +137 -0
  270. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter-list.controller.js +1 -1
  271. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-helper.service.js +2 -1
  272. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-repositories.controller.js +9 -0
  273. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter.factory.js +28 -0
  274. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filters.controller.js +11 -7
  275. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/new-filter.controller.js +22 -5
  276. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-filter.controller.js +66 -80
  277. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-group-list-filter.controller.js +1 -0
  278. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/date-type-errata-filter.html +1 -1
  279. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/docker-filter.html +28 -0
  280. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/docker-tag-filter-details.html +65 -0
  281. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter-details.html +10 -8
  282. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter.html +48 -51
  283. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-repositories.html +5 -5
  284. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filters.html +17 -8
  285. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/new-filter.html +49 -42
  286. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter-details.html +144 -171
  287. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter.html +7 -7
  288. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter-details.html +4 -4
  289. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter.html +9 -9
  290. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/partials/filter-repositories-count.html +2 -2
  291. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.controller.js +1 -0
  292. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/views/content-view-history.html +1 -3
  293. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module-names.controller.js +1 -0
  294. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module-versions.controller.js +1 -0
  295. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/views/content-view-puppet-module-names.html +17 -19
  296. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/views/content-view-puppet-module-versions.html +17 -21
  297. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/views/content-view-puppet-modules.html +3 -3
  298. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +20 -6
  299. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-docker-repositories.html +6 -8
  300. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-file-repositories.html +5 -7
  301. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-info.html +2 -3
  302. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-ostree-repositories.html +5 -7
  303. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-promotion.html +21 -2
  304. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +29 -11
  305. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-repositories.html +8 -10
  306. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-versions.html +34 -16
  307. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/views/content-view-new.html +2 -2
  308. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version.factory.js +2 -1
  309. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-errata.html +1 -1
  310. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-ostree-branches.html +2 -7
  311. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-package-groups.html +2 -7
  312. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-packages.html +2 -7
  313. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-puppet-modules.html +1 -1
  314. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-yum.html +13 -0
  315. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version.html +2 -1
  316. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/views/content-views.html +1 -1
  317. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/docker-tag-details.controller.js +1 -0
  318. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-environments.html +1 -1
  319. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.controller.js +1 -1
  320. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.factory.js +7 -1
  321. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment-content.controller.js +1 -1
  322. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment.controller.js +1 -1
  323. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-content-views.html +2 -8
  324. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-details.html +15 -19
  325. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-docker.html +5 -12
  326. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-errata.html +7 -14
  327. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-ostree.html +5 -12
  328. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-packages.html +5 -12
  329. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-puppet-modules.html +4 -11
  330. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-repositories.html +4 -9
  331. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment.html +32 -51
  332. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.routes.js +73 -29
  333. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/new-environment.controller.js +1 -1
  334. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/environments.html +8 -12
  335. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/new-environment.html +2 -2
  336. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +17 -21
  337. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/{errata-content-hosts.controller.js → erratum-content-hosts.controller.js} +13 -12
  338. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/{errata-details-repositories.controller.js → erratum-repositories.controller.js} +7 -6
  339. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/{errata-details.controller.js → erratum.controller.js} +3 -3
  340. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-content-hosts.html +78 -0
  341. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-info.html +58 -0
  342. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/{errata-details-repositories.html → erratum-repositories.html} +22 -35
  343. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum.html +37 -0
  344. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/errata.controller.js +8 -30
  345. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/errata.module.js +2 -1
  346. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/errata.routes.js +90 -83
  347. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/incremental-update.service.js +149 -0
  348. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata-confirm.html +7 -17
  349. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata-select-content-hosts.html +4 -14
  350. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata.html +9 -26
  351. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata-task-details.html +1 -1
  352. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata-tasks-list.html +1 -1
  353. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata-tasks.html +6 -9
  354. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata.html +77 -34
  355. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file-content-views.controller.js +44 -0
  356. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file-repositories.controller.js +36 -0
  357. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file.controller.js +37 -0
  358. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/views/file-content-views.html +43 -0
  359. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/views/file-info.html +15 -0
  360. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/views/file-repositories.html +54 -0
  361. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/views/file.html +37 -0
  362. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/file.factory.js +28 -0
  363. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/files.controller.js +35 -0
  364. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/files.module.js +20 -0
  365. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/files.routes.js +71 -0
  366. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/views/files.html +39 -0
  367. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/details/gpg-key-products.controller.js +1 -0
  368. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/details/gpg-key-repositories.controller.js +1 -0
  369. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/details/views/gpg-key-info.html +1 -1
  370. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/gpg-keys.controller.js +1 -1
  371. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/new/views/new-gpg-key.html +2 -2
  372. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/views/gpg-keys.html +3 -2
  373. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-add-hosts.controller.js +1 -0
  374. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-hosts.controller.js +1 -0
  375. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-add-hosts.html +3 -4
  376. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-copy.html +1 -1
  377. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-details.html +3 -3
  378. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-hosts-list.html +2 -2
  379. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-hosts.html +1 -1
  380. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/host-collection.factory.js +1 -1
  381. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/host-collections.controller.js +1 -1
  382. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/new/views/new-host-collection.html +24 -23
  383. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/views/host-collections.html +2 -2
  384. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-bulk-action.factory.js +1 -0
  385. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-subscription.factory.js +1 -1
  386. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +3 -3
  387. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +6 -6
  388. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +6 -6
  389. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +6 -6
  390. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +6 -6
  391. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +6 -6
  392. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +6 -6
  393. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +6 -6
  394. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +6 -6
  395. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +6 -6
  396. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +10 -10
  397. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/katello-features.run.js +2 -2
  398. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/fenced-pages.service.js +24 -14
  399. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/views/organization-selector.html +3 -1
  400. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/{ostree-branches-details-repositories.controller.js → ostree-branch-repositories.controller.js} +7 -6
  401. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/{ostree-branches-details.controller.js → ostree-branch.controller.js} +2 -2
  402. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/views/ostree-branch-info.html +18 -0
  403. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/views/{ostree-branches-details-repositories.html → ostree-branch-repositories.html} +25 -34
  404. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/views/ostree-branch.html +30 -0
  405. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/ostree-branches.controller.js +1 -1
  406. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/ostree-branches.routes.js +24 -27
  407. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/views/ostree-branches.html +28 -7
  408. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/package-repositories.controller.js +1 -0
  409. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-files.html +1 -3
  410. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-repositories.html +17 -27
  411. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/packages.controller.js +1 -1
  412. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/views/packages.html +12 -14
  413. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/{product-bulk-action.factory.js → bulk/product-bulk-action.factory.js} +1 -1
  414. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-advanced-sync-modal.controller.js +54 -0
  415. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-sync-plan-modal.controller.js +80 -0
  416. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-advanced-sync-modal.html +26 -0
  417. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-sync-plan-modal.html +87 -0
  418. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/product-repositories.controller.js +1 -0
  419. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-advanced-sync.controller.js +33 -0
  420. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +17 -2
  421. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.filter.js +29 -0
  422. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +5 -4
  423. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +18 -0
  424. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-advanced-sync-options.html +54 -0
  425. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-advanced-sync.html +29 -0
  426. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +26 -9
  427. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +46 -11
  428. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-manifests.html +1 -1
  429. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-files.html +64 -0
  430. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-packages.html +1 -1
  431. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-puppet-modules.html +5 -5
  432. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +6 -3
  433. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +52 -31
  434. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/ostree-upstream-sync-policy.service.js +26 -0
  435. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repositories.module.js +2 -1
  436. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repositories.routes.js +19 -0
  437. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +2 -1
  438. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories.html +12 -7
  439. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/views/product-details.html +2 -2
  440. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/{discovery-form.controller.js → discovery-create.controller.js} +109 -35
  441. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery-repositories.service.js +94 -0
  442. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery.controller.js +84 -30
  443. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-base.html +1 -1
  444. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-create-status.html +3 -0
  445. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-create.html +154 -123
  446. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery.html +94 -67
  447. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/new/views/product-new-form.html +4 -1
  448. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/new/views/product-new.html +3 -3
  449. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +93 -11
  450. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.routes.js +3 -4
  451. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/views/products.html +43 -44
  452. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/{puppet-modules-details-content-views.controller.js → puppet-module-content-views.controller.js} +6 -5
  453. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/{puppet-modules-details-repositories.controller.js → puppet-module-repositories.controller.js} +6 -5
  454. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/{puppet-modules-details.controller.js → puppet-module.controller.js} +4 -4
  455. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/{puppet-modules-details-content-views.html → puppet-module-content-views.html} +12 -6
  456. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-module-info.html +32 -0
  457. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/{puppet-modules-details-repositories.html → puppet-module-repositories.html} +11 -9
  458. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-module.html +37 -0
  459. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/puppet-modules.controller.js +3 -4
  460. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/puppet-modules.routes.js +31 -29
  461. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/views/puppet-modules.html +34 -7
  462. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/repository-sets/content-override-helper.service.js +47 -0
  463. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/repository-sets/repository-sets-enabled.filter.js +34 -0
  464. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/repository-sets/repository-sets.module.js +8 -0
  465. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/details/subscription-details.controller.js +2 -0
  466. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/details/views/subscription-content-hosts.html +1 -1
  467. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/details/views/subscription-info.html +13 -0
  468. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/details/views/subscription-products.html +1 -1
  469. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/manifest/manifest-import.controller.js +8 -0
  470. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/manifest/views/manifest-delete-modal.html +19 -0
  471. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/manifest/views/manifest-import.html +11 -5
  472. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/subscription-start-date.directive.js +21 -0
  473. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/subscriptions.controller.js +2 -2
  474. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/subscription-start-date.html +2 -0
  475. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/subscriptions.html +8 -9
  476. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-add-products.controller.js +1 -0
  477. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-products.controller.js +1 -0
  478. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-details.html +2 -2
  479. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-products.html +4 -2
  480. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/new/views/new-sync-plan.html +2 -2
  481. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/sync-plans.controller.js +1 -1
  482. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/views/sync-plans.html +2 -2
  483. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/tasks-nutupane.factory.js +1 -0
  484. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/task-details.html +53 -66
  485. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/bastion_katello.scss +5 -0
  486. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/host_subscriptions.scss +14 -0
  487. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/tasks.scss +4 -0
  488. data/engines/bastion_katello/lib/bastion_katello/engine.rb +1 -0
  489. data/lib/katello/engine.rb +3 -22
  490. data/lib/katello/permissions/content_view_permissions.rb +2 -2
  491. data/lib/katello/permissions/host_permissions.rb +1 -0
  492. data/lib/katello/permissions/product_permissions.rb +7 -4
  493. data/lib/katello/plugin.rb +18 -2
  494. data/lib/katello/tasks/regenerate_ueber_certs.rake +15 -0
  495. data/lib/katello/tasks/rubocop.rake +3 -2
  496. data/lib/katello/tasks/test.rake +17 -5
  497. data/lib/katello/tasks/unify_hosts.rake +1 -1
  498. data/lib/katello/tasks/update_subscription_facet_backend_data.rake +61 -0
  499. data/lib/katello/tasks/upgrades/3.3/hypervisors.rake +7 -0
  500. data/lib/katello/tasks/upgrades/3.3/import_subscriptions.rake +12 -0
  501. data/lib/katello/tasks/virt_who_report.rake +150 -0
  502. data/lib/katello/version.rb +1 -1
  503. metadata +116 -115
  504. data/app/lib/actions/candlepin/owner/refresh_subscriptions.rb +0 -15
  505. data/app/lib/actions/candlepin/product/delete_unused.rb +0 -13
  506. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-product-details.controller.js +0 -88
  507. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-products.controller.js +0 -46
  508. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-products.html +0 -49
  509. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-action-errata.controller.js +0 -127
  510. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-action-host-collections.controller.js +0 -79
  511. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-action.controller.js +0 -81
  512. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/bulk-actions-errata.html +0 -113
  513. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/bulk-actions-host-collections.html +0 -82
  514. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/bulk-actions-packages.html +0 -153
  515. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/bulk-actions-subscriptions.html +0 -86
  516. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/bulk-actions.html +0 -92
  517. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-products.controller.js +0 -99
  518. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-products.html +0 -56
  519. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/host-collections-table.html +0 -90
  520. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/host-collections.html +0 -20
  521. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts-table-collapsed.html +0 -25
  522. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts-table-full.html +0 -61
  523. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/errata-details-content-hosts.html +0 -91
  524. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/errata-details-info.html +0 -62
  525. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/errata-details.html +0 -52
  526. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata-table-collapsed.html +0 -20
  527. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata-table-full.html +0 -46
  528. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/views/ostree-branches-details-info.html +0 -23
  529. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/views/ostree-branches-details.html +0 -43
  530. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/views/ostree-branches-table-collapsed.html +0 -19
  531. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/views/ostree-branches-table-full.html +0 -21
  532. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products-bulk-action.controller.js +0 -93
  533. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-modules-details-info.html +0 -31
  534. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-modules-details.html +0 -52
  535. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/views/puppet-modules-table-collapsed.html +0 -20
  536. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/views/puppet-modules-table-full.html +0 -29
  537. data/lib/katello/tasks/gettext.rake +0 -5
  538. data/lib/katello/tasks/jshint.rake +0 -50
  539. data/lib/katello/tasks/jsroutes.rake +0 -5
  540. data/lib/katello/tasks/pretty_routes.rake +0 -30
  541. data/lib/katello/tasks/simplecov.rake +0 -7
  542. data/vendor/assets/javascripts/katello/jquery-1.7.2.js +0 -9404
@@ -1,86 +1,113 @@
1
- <span page-title>{{ 'Repository Discovery' | translate }}</span>
1
+ <span page-title>{{ "Repository Discovery" | translate }}</span>
2
2
 
3
- <div>
4
- <form ng-submit="discover()" name="discoveryForm" class="col-sm-6">
5
- <div class="input-group">
3
+ <div class="row">
4
+ <form ng-submit="discover()" name="discoveryForm" class="col-sm-5" role="form">
5
+ <div bst-form-group label="{{ 'Repository Type' | translate }}">
6
+ <select ng-model="discovery.contentType"
7
+ ng-options="contentType.id as contentType.name for contentType in contentTypes"/>
8
+ </div>
6
9
 
7
- <input type="text"
10
+ <div bst-form-group ng-show="discovery.contentType === 'yum'"
11
+ label="{{ 'URL to Discover' | translate }}">
12
+ <input type="text" id="urlToDiscover"
13
+ class="form-control"
8
14
  ng-pattern="/^(file:\/\/|http:\/\/|https:\/\/).+/"
9
- class="form-control input-lg"
10
- placeholder="{{ 'URL to discover' | translate }}"
11
15
  ng-model="discovery.url"
12
- ng-disabled="discovery.pending"
16
+ ng-disabled="discovery.working"
13
17
  name="discoveryUrl"
14
18
  required/>
19
+ </div>
15
20
 
16
- <span class="input-group-btn input-group-lg">
17
- <button ng-show="!discovery.pending && permitted('edit_products')"
18
- ng-disabled="discoveryForm.discoveryUrl.$invalid"
19
- translate
20
- type="submit"
21
- class="btn btn-primary btn-lg">
22
- Discover
23
- </button>
21
+ <div bst-form-group ng-show="discovery.contentType === 'docker'"
22
+ label="{{ 'Registry to Discover' | translate }}">
23
+ <input type="text" id="registryToDiscover"
24
+ class="form-control"
25
+ ng-model="discovery.url"
26
+ ng-disabled="discovery.working"
27
+ placeholder="Example: registry.access.redhat.com or https://registry.access.redhat.com"
28
+ name="discoveryUrl"
29
+ required/>
30
+ </div>
24
31
 
25
- <button type="button"
26
- ng-disabled="discovery.working"
27
- ng-show="discovery.pending && permitted('edit_products')"
28
- ng-click="cancelDiscovery()"
29
- class="btn btn-primary btn-lg">
30
- <i class="fa fa-spinner fa-spin" ng-show="discovery.pending"></i>
31
- {{ 'Cancel' | translate }}
32
- </button>
33
- </span>
32
+ <div bst-form-group ng-show="discovery.contentType === 'docker'"
33
+ label="{{ 'Registry Username' | translate }}">
34
+ <input type="text" id="upstreamUsername"
35
+ class="form-control"
36
+ ng-model="discovery.upstreamUsername"
37
+ ng-disabled="discovery.working"
38
+ name="upstreamUsername"/>
39
+ </div>
34
40
 
41
+ <div bst-form-group ng-show="discovery.contentType === 'docker'"
42
+ label="{{ 'Registry Password' | translate }}">
43
+ <input id="upstreamPassword"
44
+ type="password"
45
+ class="form-control"
46
+ ng-model="discovery.upstreamPassword"
47
+ ng-disabled="discovery.working"
48
+ name="upstreamPassword"/>
35
49
  </div>
50
+
51
+ <span class="input-group-btn">
52
+ <button ng-show="!discovery.working && permitted('edit_products')"
53
+ ng-disabled="discoveryForm.discoveryUrl.$invalid"
54
+ type="submit"
55
+ class="btn btn-default">
56
+ <span translate>Discover</span>
57
+ </button>
58
+
59
+ <button type="button"
60
+ ng-show="discovery.working && permitted('edit_products')"
61
+ ng-click="cancelDiscovery()"
62
+ class="btn">
63
+ <i class="fa fa-spinner fa-spin" ng-show="discovery.working"></i>
64
+ <span translate>Cancel</span>
65
+ </button>
66
+ </span>
36
67
  </form>
37
68
  </div>
38
69
 
39
- <section>
40
- <div class="row">
41
- <h3 class="col-sm-12" translate>Results</h3>
70
+ <div data-extend-template="layouts/partials/table.html">
71
+ <div data-block="search">
72
+ <input type="text" class="form-control" stop-event="click"
73
+ placeholder="{{ 'Filter' | translate }}"
74
+ ng-model="tableFilter"/>
75
+ </div>
42
76
 
43
- <div class="col-sm-4">
44
- <input type="text"
45
- class="form-control"
46
- placeholder="{{ 'Filter' | translate }}"
47
- ng-model="discoveryTable.filterTerm"/>
48
- </div>
77
+ <div data-block="list-actions">
78
+ <button class="btn btn-primary"
79
+ translate
80
+ ng-click="setupSelected()"
81
+ ng-hide="denied('edit_products')"
82
+ ng-disabled="discovery.working || table.numSelected === 0">
83
+ Create Selected
84
+ </button>
85
+ </div>
49
86
 
50
- <div class="fr">
51
- <div class="fl nutupane-info">
52
- <span translate>{{ discoveryTable.numSelected }} Selected</span>
53
- </div>
87
+ <span data-block="no-rows-message" translate>
88
+ No discovered repositories.
89
+ </span>
54
90
 
55
- <div ng-hide="system.readonly" class="nutupane-actions fr">
56
- <button class="btn btn-primary"
57
- translate
58
- ng-hide="denied('create_products')"
59
- ng-disabled="discoveryTable.getSelected().length == 0"
60
- ng-click="setupSelected()">
61
- Create Selected
62
- </button>
63
- </div>
64
- </div>
65
- </div>
91
+ <span data-block="no-search-results-message" translate>
92
+ Your search returned zero results.
93
+ </span>
66
94
 
67
- <div class="row">
68
- <div class="col-sm-12">
69
- <table bst-table="discoveryTable" class="table table-striped table-bordered">
70
- <thead>
71
- <tr bst-table-head row-select>
72
- <th bst-table-column translate>Discovered URLs</th>
73
- </tr>
74
- </thead>
95
+ <div data-block="table">
96
+ <table bst-table="table"
97
+ class="table table-full table-bordered"
98
+ ng-class="{'table-mask': discovery.working}"
99
+ ng-show="table.rows.length > 0">
100
+ <thead>
101
+ <tr bst-table-head row-select>
102
+ <th bst-table-column="path" translate>Discovered Repository</th>
103
+ </tr>
104
+ </thead>
75
105
 
76
- <tbody>
77
- <tr bst-table-row
78
- row-select="urlRow"
79
- ng-repeat="urlRow in discoveryTable.rows | filter:discoveryTable.filterTerm">
80
- <td bst-table-cell>{{ urlRow.path }}</td>
81
- </tr>
82
- </tbody>
83
- </table>
84
- </div>
106
+ <tbody>
107
+ <tr bst-table-row ng-repeat="urlRow in table.rows | filter:tableFilter" row-select="urlRow">
108
+ <td bst-table-cell style="white-space:nowrap">{{ urlRow.path }}</td>
109
+ </tr>
110
+ </tbody>
111
+ </table>
85
112
  </div>
86
- </section>
113
+ </div>
@@ -33,7 +33,10 @@
33
33
  ng-options="syncPlan.id as syncPlan.name for syncPlan in syncPlans">
34
34
  <option value=""></option>
35
35
  </select>
36
- <a ui-sref="products.new.sync-plan" translate>+ New Sync Plan</a>
36
+ <a ui-sref="products.new.sync-plan" translate>
37
+ <i class="pficon pficon-add-circle-o"></i>
38
+ Create Sync Plan
39
+ </a>
37
40
  </div>
38
41
 
39
42
  <div bst-form-group label="{{ 'Description' | translate }}">
@@ -1,9 +1,9 @@
1
- <span page-title>{{ 'New Product' | translate }}</span>
1
+ <span page-title>{{ 'Create Product' | translate }}</span>
2
2
 
3
3
  <div data-extend-template="layouts/details-page-with-breadcrumbs.html">
4
4
  <header data-block="header">
5
- <h2 translate>New Product</h2>
5
+ <h2 translate>Create Product</h2>
6
6
  </header>
7
7
 
8
8
  <div ui-view data-block="content"></div>
9
- </div>
9
+ </div>
@@ -6,8 +6,11 @@
6
6
  * @requires $state
7
7
  * @requires $sce
8
8
  * @requires $location
9
+ * @requires $uibModal
10
+ * @requires translate
9
11
  * @requires Nutupane
10
12
  * @requires Product
13
+ * @requires ProductBulkAction
11
14
  * @requires CurrentOrganization
12
15
  *
13
16
  * @description
@@ -16,11 +19,26 @@
16
19
  * within the table.
17
20
  */
18
21
  angular.module('Bastion.products').controller('ProductsController',
19
- ['$scope', '$state', '$sce', '$location', 'Nutupane', 'Product', 'CurrentOrganization', 'GlobalNotification',
20
- function ($scope, $state, $sce, $location, Nutupane, Product, CurrentOrganization, GlobalNotification) {
21
- var taskUrl, taskLink;
22
+ ['$scope', '$state', '$sce', '$location', '$uibModal', 'translate', 'Nutupane', 'Product', 'ProductBulkAction', 'CurrentOrganization', 'GlobalNotification',
23
+ function ($scope, $state, $sce, $location, $uibModal, translate, Nutupane, Product, ProductBulkAction, CurrentOrganization, GlobalNotification) {
24
+ var nutupane, taskUrl, taskLink, getBulkParams, bulkError, params;
22
25
 
23
- var params = {
26
+ getBulkParams = function () {
27
+ return {
28
+ ids: _.map($scope.table.getSelected(), 'id'),
29
+ 'organization_id': CurrentOrganization
30
+ };
31
+ };
32
+
33
+ bulkError = function (response) {
34
+ angular.forEach(response.data.errors, function(message) {
35
+ GlobalNotification.setErrorMessage(translate("An error occurred updating the sync plan: ") + message);
36
+ });
37
+
38
+ nutupane.refresh();
39
+ };
40
+
41
+ params = {
24
42
  'organization_id': CurrentOrganization,
25
43
  'search': $location.search().search || "",
26
44
  'sort_by': 'name',
@@ -29,24 +47,24 @@ angular.module('Bastion.products').controller('ProductsController',
29
47
  'paged': true
30
48
  };
31
49
 
32
- $scope.productsNutupane = new Nutupane(Product, params);
33
- $scope.productsNutupane.masterOnly = true;
34
-
35
- $scope.table = $scope.productsNutupane.table;
50
+ nutupane = new Nutupane(Product, params);
36
51
  $scope.controllerName = 'katello_products';
52
+ nutupane.masterOnly = true;
53
+
54
+ $scope.table = nutupane.table;
37
55
 
38
56
  $scope.$on('productDelete', function (event, taskId) {
57
+ var message;
39
58
  taskUrl = $scope.taskUrl(taskId);
40
59
  taskLink = $sce.trustAsHtml("<a href=" + taskUrl + ">here</a>");
41
- GlobalNotification.setRenderedSuccessMessage("Product delete operation has been initiated in the background. Click " + taskLink + " click to monitor the progress.");
60
+ message = translate("Product delete operation has been initiated in the background. Click %s to monitor the progress.");
61
+ GlobalNotification.setRenderedSuccessMessage(message.replace("%", taskLink));
42
62
  });
43
63
 
44
64
  $scope.unsetProductDeletionTaskId = function () {
45
65
  $scope.productDeletionTaskId = undefined;
46
66
  };
47
67
 
48
- $scope.table.refresh = $scope.productsNutupane.refresh;
49
-
50
68
  $scope.mostImportantSyncState = function (product) {
51
69
  var state = 'none';
52
70
  if (product['sync_summary'].pending > 0) {
@@ -60,5 +78,69 @@ angular.module('Bastion.products').controller('ProductsController',
60
78
  }
61
79
  return state;
62
80
  };
81
+
82
+ $scope.syncProducts = function () {
83
+ var success;
84
+
85
+ success = function (task) {
86
+ var url = $state.href('task', {taskId: task.id}), message;
87
+
88
+ taskLink = $sce.trustAsHtml("<a href=" + url + ">here</a>");
89
+ message = translate("Product sync has been initiated in the background. " +
90
+ "Click %s to monitor the progress.");
91
+
92
+ GlobalNotification.setRenderedSuccessMessage(message.replace('%s', taskLink));
93
+ };
94
+
95
+ ProductBulkAction.syncProducts(getBulkParams(), success, bulkError);
96
+ };
97
+
98
+ $scope.openSyncPlanModal = function () {
99
+ nutupane.invalidate();
100
+ $uibModal.open({
101
+ templateUrl: 'products/bulk/views/products-bulk-sync-plan-modal.html',
102
+ controller: 'ProductsBulkSyncPlanModalController',
103
+ size: 'lg',
104
+ resolve: {
105
+ bulkParams: function () {
106
+ return getBulkParams();
107
+ }
108
+ }
109
+ }).closed.then(function () {
110
+ nutupane.refresh();
111
+ });
112
+ };
113
+
114
+ $scope.openAdvancedSyncModal = function () {
115
+ nutupane.invalidate();
116
+ $uibModal.open({
117
+ templateUrl: 'products/bulk/views/products-bulk-advanced-sync-modal.html',
118
+ controller: 'ProductsBulkAdvancedSyncModalController',
119
+ size: 'lg',
120
+ resolve: {
121
+ bulkParams: function () {
122
+ return getBulkParams();
123
+ }
124
+ }
125
+ });
126
+ };
127
+
128
+ $scope.removeProducts = function () {
129
+ var success;
130
+
131
+ success = function (response) {
132
+ angular.forEach(response.displayMessages.success, function(message) {
133
+ GlobalNotification.setSuccessMessage(message);
134
+ });
135
+
136
+ angular.forEach(response.displayMessages.error, function(message) {
137
+ GlobalNotification.setErrorMessage(message);
138
+ });
139
+
140
+ nutupane.refresh();
141
+ };
142
+
143
+ ProductBulkAction.removeProducts(getBulkParams(), success, bulkError);
144
+ };
63
145
  }]
64
146
  );
@@ -62,18 +62,17 @@ angular.module('Bastion.products').config(['$stateProvider', function ($statePro
62
62
  permission: 'edit_products',
63
63
  templateUrl: 'products/discovery/views/discovery.html',
64
64
  ncyBreadcrumb: {
65
- label: "{{ 'Repository Discovery' | translate }}",
65
+ label: "{{ 'Discover Repositories' | translate }}",
66
66
  parent: 'products'
67
67
  }
68
-
69
68
  })
70
69
  .state("product-discovery.create", {
71
70
  url: '/scan/create',
72
71
  permission: 'edit_products',
73
72
  templateUrl: 'products/discovery/views/discovery-create.html',
74
- controller: 'DiscoveryFormController',
73
+ controller: 'DiscoveryCreateController',
75
74
  ncyBreadcrumb: {
76
- label: "{{ 'Create Products' | translate }}",
75
+ label: "{{ 'Create Repositories' | translate }}",
77
76
  parent: 'product-discovery.scan'
78
77
  }
79
78
  });
@@ -6,72 +6,71 @@
6
6
  <h2 translate>Products</h2>
7
7
  </div>
8
8
 
9
- <div data-block="list-actions" ng-controller="ProductsBulkActionController">
10
- <button class="btn btn-default"
9
+ <div data-block="list-actions">
10
+ <button type="button" class="btn btn-primary"
11
11
  ui-sref="products.new.form"
12
12
  bst-feature-flag="custom_products"
13
13
  ng-show="permitted('create_products')">
14
- <span translate>New Product</span>
14
+ <span translate>Create Product</span>
15
15
  </button>
16
16
 
17
- <button class="btn btn-default"
17
+ <button type="button" class="btn btn-default"
18
18
  ui-sref="product-discovery.scan"
19
19
  bst-feature-flag="custom_products"
20
20
  ng-show="permitted('edit_products')">
21
21
  <span translate>Repo Discovery</span>
22
22
  </button>
23
23
 
24
- <button class="btn btn-default"
25
- ng-show="permitted('sync_products')"
26
- ng-disabled="table.numSelected == 0"
27
- ng-click="syncProducts()">
28
- <span translate>Sync</span>
29
- </button>
30
-
31
24
  <div class="btn-group" uib-dropdown keyboard-nav>
32
- <button uib-dropdown-toggle class="btn btn-default"
33
- ng-show="permitted('edit_products')"
34
- ng-disabled="table.numSelected == 0">
35
- <span translate>Change Sync Plan</span>
25
+ <button type="button" class="btn btn-default" uib-dropdown-toggle>
26
+ <span translate>Select Action</span>
27
+ </button>
28
+
29
+ <button type="button" class="btn btn-default" uib-dropdown-toggle>
36
30
  <span class="caret"></span>
31
+ <span class="sr-only" translate>Toggle Dropdown</span>
37
32
  </button>
38
33
 
39
- <ul class="dropdown-menu-right" uib-dropdown-menu role="menu" aria-labelledby="simple-btn-keyboard-nav">
40
- <li role="menuitem" ng-repeat="syncPlan in syncPlans.results" ng-show="syncPlans.results.length > 0">
41
- <a ng-click="updateSyncPlan(syncPlan)">{{ syncPlan.name }}</a>
34
+ <ul class="dropdown-menu-right" uib-dropdown-menu role="menu" aria-labelledby="split-button">
35
+ <li role="menuitem" ng-class="{disabled: table.numSelected === 0}">
36
+ <a ng-click="syncProducts()" ng-show="permitted('sync_products')" disable-link="table.numSelected === 0" translate>
37
+ Sync Selected
38
+ </a>
42
39
  </li>
43
40
 
44
- <li role="menuitem" ng-hide="syncPlans.results.length > 0">
45
- <a ui-sref="sync-plans.new" translate>New Sync Plan</a>
41
+ <li role="menuitem" ng-show="permitted('edit_products')" ng-class="{disabled: table.numSelected === 0}">
42
+ <a ng-click="openAdvancedSyncModal()" disable-link="table.numSelected === 0" translate>
43
+ Advanced Sync
44
+ </a>
46
45
  </li>
47
46
 
48
- <li class="divider"></li>
49
- <li role="menuitem">
50
- <a ng-click="removeSyncPlan()" translate>Remove Sync Plan</a>
47
+ <li role="menuitem" ng-show="permitted('edit_products')" ng-class="{disabled: table.numSelected === 0}">
48
+ <a ng-click="openSyncPlanModal()" disable-link="table.numSelected === 0" translate>
49
+ Manage Sync Plan
50
+ </a>
51
51
  </li>
52
- </ul>
53
- </div>
54
52
 
55
- <button class="btn btn-default"
56
- ng-show="permitted('destroy_products')"
57
- ng-disabled="table.numSelected == 0"
58
- ng-click="openModal()">
59
- <span translate>Remove</span>
60
- </button>
53
+ <li class="divider"></li>
61
54
 
62
- <div bst-modal="removeProducts()" model="table">
63
- <div data-block="modal-header"
64
- translate
65
- translate-n="table.getSelected().length"
66
- translate-plural="Remove {{ table.getSelected().length }} products?">
67
- Remove product?
68
- </div>
69
- <div data-block="modal-body"
70
- translate
71
- translate-n="table.getSelected().length"
72
- translate-plural="Are you sure you want to remove {{ table.getSelected().length }} products selected?">
73
- Are you sure you want to remove {{ table.getSelected()[0].name }}?
74
- </div>
55
+ <li role="menuitem" ng-show="permitted('destroy_products')" ng-class="{disabled: table.numSelected === 0}">
56
+ <a ng-click="openModal()" disable-link="table.numSelected === 0" translate>Remove</a>
57
+
58
+ <div bst-modal="removeProducts()" model="table">
59
+ <div data-block="modal-header"
60
+ translate
61
+ translate-n="table.getSelected().length"
62
+ translate-plural="Remove {{ table.getSelected().length }} products?">
63
+ Remove product?
64
+ </div>
65
+ <div data-block="modal-body"
66
+ translate
67
+ translate-n="table.getSelected().length"
68
+ translate-plural="Are you sure you want to remove {{ table.getSelected().length }} products selected?">
69
+ Are you sure you want to remove {{ table.getSelected()[0].name }}?
70
+ </div>
71
+ </div>
72
+ </li>
73
+ </ul>
75
74
  </div>
76
75
  </div>
77
76