katello 4.8.4 → 4.9.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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +40 -4
- data/app/assets/javascripts/katello/locale/bn/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/cs/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/de/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/en/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/es/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/fr/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/gu/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/hi/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/it/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/ja/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/ka/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/kn/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/ko/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/locale/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/mr/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/or/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/pa/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/pt/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/pt_BR/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/ru/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/ta/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/te/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/zh_CN/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/zh_TW/katello.js +1 -0
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +10 -0
- data/app/controllers/katello/api/v2/activation_keys_controller.rb +1 -0
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +2 -0
- data/app/controllers/katello/api/v2/content_views_controller.rb +22 -12
- data/app/controllers/katello/api/v2/environments_controller.rb +5 -1
- data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +1 -1
- data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +1 -2
- data/app/controllers/katello/api/v2/organizations_controller.rb +11 -0
- data/app/controllers/katello/api/v2/repositories_controller.rb +4 -3
- data/app/controllers/katello/api/v2/repository_sets_controller.rb +13 -4
- data/app/controllers/katello/api/v2/simple_content_access_controller.rb +1 -3
- data/app/controllers/katello/concerns/api/api_controller.rb +2 -2
- data/app/controllers/katello/concerns/content_facet_hosts_controller_extensions.rb +1 -1
- data/app/helpers/katello/hosts_and_hostgroups_helper.rb +6 -4
- data/app/lib/actions/candlepin/product/content_add.rb +13 -1
- data/app/lib/actions/candlepin/product/content_update.rb +2 -1
- data/app/lib/actions/katello/agent_action.rb +3 -4
- data/app/lib/actions/katello/bulk_agent_action.rb +1 -4
- data/app/lib/actions/katello/content_view/publish.rb +1 -0
- data/app/lib/actions/katello/content_view_version/incremental_update.rb +1 -0
- data/app/lib/actions/katello/host/update_content_view.rb +2 -4
- data/app/lib/actions/katello/organization/simple_content_access/enable.rb +0 -10
- data/app/lib/actions/katello/organization/simple_content_access/toggle.rb +2 -12
- data/app/lib/actions/katello/product/content_create.rb +2 -2
- data/app/lib/actions/katello/repository/destroy.rb +15 -7
- data/app/lib/actions/katello/repository/update.rb +23 -1
- data/app/lib/actions/pulp3/abstract_async_task.rb +2 -0
- data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +5 -12
- data/app/lib/katello/concerns/base_template_scope_extensions.rb +34 -2
- data/app/lib/katello/event_daemon/runner.rb +8 -4
- data/app/lib/katello/repo_discovery.rb +3 -1
- data/app/lib/katello/resources/cdn/katello_cdn.rb +4 -8
- data/app/lib/katello/util/default_enablement_migrator.rb +183 -0
- data/app/models/katello/activation_key.rb +4 -0
- data/app/models/katello/alternate_content_source.rb +13 -8
- data/app/models/katello/candlepin/repository_mapper.rb +0 -1
- data/app/models/katello/concerns/content_view_filter_rule_common.rb +42 -0
- data/app/models/katello/concerns/host_managed_extensions.rb +9 -40
- data/app/models/katello/concerns/smart_proxy_extensions.rb +24 -23
- data/app/models/katello/content.rb +9 -0
- data/app/models/katello/content_view.rb +99 -4
- data/app/models/katello/content_view_environment_content_facet.rb +12 -0
- data/app/models/katello/content_view_filter.rb +5 -1
- data/app/models/katello/content_view_package_filter_rule.rb +0 -1
- data/app/models/katello/content_view_repository.rb +0 -1
- data/app/models/katello/content_view_version.rb +26 -0
- data/app/models/katello/docker_meta_tag.rb +4 -0
- data/app/models/katello/host/content_facet.rb +2 -0
- data/app/models/katello/kt_environment.rb +13 -3
- data/app/models/katello/ping.rb +1 -1
- data/app/models/katello/product.rb +1 -1
- data/app/models/katello/product_content.rb +13 -15
- data/app/models/katello/root_repository.rb +21 -2
- data/app/models/katello/sync_plan.rb +2 -6
- data/app/presenters/katello/host_package_presenter.rb +5 -3
- data/app/services/katello/product_content_finder.rb +6 -1
- data/app/services/katello/pulp3/alternate_content_source.rb +5 -0
- data/app/services/katello/pulp3/module_stream.rb +2 -12
- data/app/services/katello/pulp3/repository/yum.rb +3 -0
- data/app/views/foreman/job_templates/install_errata.erb +4 -4
- data/app/views/foreman/job_templates/install_errata_-_katello_ansible_default.erb +4 -7
- data/app/views/foreman/job_templates/install_errata_by_search_query.erb +5 -6
- data/app/views/katello/api/v2/activation_keys/base.json.rabl +6 -0
- data/app/views/katello/api/v2/common/destroy.json.rabl +2 -1
- data/app/views/katello/api/v2/content_credentials/show.json.rabl +1 -1
- data/app/views/katello/api/v2/content_facet/base.json.rabl +10 -9
- data/app/views/katello/api/v2/content_view_repositories/show_all.json.rabl +6 -0
- data/app/views/katello/api/v2/content_view_versions/base.json.rabl +11 -1
- data/app/views/katello/api/v2/content_views/base.json.rabl +3 -0
- data/app/views/katello/api/v2/docker_tags/_base.json.rabl +4 -0
- data/app/views/katello/api/v2/environments/show.json.rabl +10 -0
- data/app/views/katello/api/v2/host_subscriptions/show.json.rabl +1 -0
- data/app/views/katello/api/v2/repositories/index.json.rabl +6 -0
- data/app/views/katello/api/v2/repositories/show.json.rabl +1 -0
- data/app/views/katello/api/v2/repository_sets/show.json.rabl +8 -2
- data/app/views/overrides/activation_keys/_host_environment_select.html.erb +22 -15
- data/app/views/smart_proxies/_disk_usage.html.erb +2 -0
- data/ca/redhat-uep.pem +53 -53
- data/db/migrate/20220228173251_remove_drpm_from_ignorable_content.rb +0 -1
- data/db/migrate/20230328180352_add_applied_filters_to_katello_content_view_versions.rb +5 -0
- data/db/migrate/20230503190626_add_metadata_expire_to_root.rb +5 -0
- data/db/seeds.d/111-upgrade_tasks.rb +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-associations.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-repository-sets.controller.js +16 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-associations-content-hosts.html +4 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-repository-sets.html +15 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-subscriptions.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/katello-agent-notice.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/views/content-credentials.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-errata-modal.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-host-bulk-module-streams-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-environment-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +10 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-host-collections-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-repository-sets-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-subscriptions-modal.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-traces-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +2 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-installed.html +2 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +2 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +2 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +0 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-info.html +12 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/docker-tag-repositories.controller.js +43 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-details.html +7 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-environments.html +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-info.html +0 -7
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-repositories.html +60 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.controller.js +0 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.routes.js +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/views/docker-tags.html +0 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/erratum-content-hosts.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-content-hosts.html +5 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-info.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-packages.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata-confirm.html +7 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-add-hosts.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-hosts.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-add-hosts.html +4 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-hosts-list.html +4 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +590 -175
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +5204 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +5153 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +5159 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +5158 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +5153 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +5153 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +5191 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +5136 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +5303 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +34 -14
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +5153 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +5161 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +5192 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +5187 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +5174 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +5170 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +5170 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +5279 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +5191 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +5158 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +5136 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +5136 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +5136 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +38 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/views/organization-selector.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/package.controller.js +8 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-info.html +12 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-advanced-sync-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-http-proxy-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-sync-plan-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +13 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +12 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details-reclaim-space-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +6 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +17 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-manifest-lists.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-manifests.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-tags.html +0 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +6 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +20 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories-reclaim-space-modal.html +1 -1
- data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/activation_keys.scss +13 -0
- data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/bastion_katello.scss +1 -0
- data/lib/katello/engine.rb +0 -7
- data/lib/katello/plugin.rb +18 -15
- data/lib/katello/tasks/upgrades/4.9/update_custom_products_enablement.rake +11 -0
- data/lib/katello/version.rb +1 -1
- data/locale/action_names.rb +1 -2
- data/locale/bn/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn/katello.po +215 -183
- data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn_IN/katello.po +8901 -0
- data/locale/ca/LC_MESSAGES/katello.mo +0 -0
- data/locale/ca/katello.po +8900 -0
- data/locale/cs/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs/katello.po +216 -185
- data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs_CZ/katello.po +8906 -0
- data/locale/de/LC_MESSAGES/katello.mo +0 -0
- data/locale/de/katello.po +223 -191
- data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
- data/locale/de_AT/katello.po +8897 -0
- data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
- data/locale/de_DE/katello.po +8906 -0
- data/locale/el/LC_MESSAGES/katello.mo +0 -0
- data/locale/el/katello.po +8900 -0
- data/locale/en/LC_MESSAGES/katello.mo +0 -0
- data/locale/en/katello.po +215 -183
- data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
- data/locale/en_GB/katello.po +8902 -0
- data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
- data/locale/en_US/katello.po +8897 -0
- data/locale/es/LC_MESSAGES/katello.mo +0 -0
- data/locale/es/katello.po +218 -187
- data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
- data/locale/et_EE/katello.po +8897 -0
- data/locale/fr/LC_MESSAGES/katello.mo +0 -0
- data/locale/fr/katello.po +233 -204
- data/locale/gl/LC_MESSAGES/katello.mo +0 -0
- data/locale/gl/katello.po +8900 -0
- data/locale/gu/LC_MESSAGES/katello.mo +0 -0
- data/locale/gu/katello.po +215 -183
- data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
- data/locale/he_IL/katello.po +8902 -0
- data/locale/hi/LC_MESSAGES/katello.mo +0 -0
- data/locale/hi/katello.po +215 -183
- data/locale/id/LC_MESSAGES/katello.mo +0 -0
- data/locale/id/katello.po +8896 -0
- data/locale/it/LC_MESSAGES/katello.mo +0 -0
- data/locale/it/katello.po +216 -185
- data/locale/ja/LC_MESSAGES/katello.mo +0 -0
- data/locale/ja/katello.po +233 -202
- data/locale/ka/LC_MESSAGES/katello.mo +0 -0
- data/locale/ka/katello.po +223 -191
- data/locale/katello.pot +1844 -1796
- data/locale/kn/LC_MESSAGES/katello.mo +0 -0
- data/locale/kn/katello.po +215 -183
- data/locale/ko/LC_MESSAGES/katello.mo +0 -0
- data/locale/ko/katello.po +216 -183
- data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/ml_IN/katello.po +8897 -0
- data/locale/mr/LC_MESSAGES/katello.mo +0 -0
- data/locale/mr/katello.po +215 -183
- data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
- data/locale/nl_NL/katello.po +8907 -0
- data/locale/or/LC_MESSAGES/katello.mo +0 -0
- data/locale/or/katello.po +215 -183
- data/locale/pa/LC_MESSAGES/katello.mo +0 -0
- data/locale/pa/katello.po +215 -183
- data/locale/pl/LC_MESSAGES/katello.mo +0 -0
- data/locale/pl/katello.po +8903 -0
- data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
- data/locale/pl_PL/katello.po +8899 -0
- data/locale/pt/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt/katello.po +215 -183
- data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt_BR/katello.po +218 -187
- data/locale/ro/LC_MESSAGES/katello.mo +0 -0
- data/locale/ro/katello.po +8897 -0
- data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
- data/locale/ro_RO/katello.po +8898 -0
- data/locale/ru/LC_MESSAGES/katello.mo +0 -0
- data/locale/ru/katello.po +216 -184
- data/locale/sl/LC_MESSAGES/katello.mo +0 -0
- data/locale/sl/katello.po +8901 -0
- data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
- data/locale/sv_SE/katello.po +8903 -0
- data/locale/ta/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta/katello.po +215 -183
- data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta_IN/katello.po +8901 -0
- data/locale/te/LC_MESSAGES/katello.mo +0 -0
- data/locale/te/katello.po +215 -183
- data/locale/tr/LC_MESSAGES/katello.mo +0 -0
- data/locale/tr/katello.po +8900 -0
- data/locale/vi/LC_MESSAGES/katello.mo +0 -0
- data/locale/vi/katello.po +8896 -0
- data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
- data/locale/vi_VN/katello.po +8897 -0
- data/locale/zh/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh/katello.po +8896 -0
- data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_CN/katello.po +233 -202
- data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_TW/katello.po +216 -183
- data/package.json +1 -0
- data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +1 -0
- data/webpack/components/Bookmark/AddBookmarkModal.js +8 -2
- data/webpack/components/Content/ContentTable.js +1 -0
- data/webpack/components/Content/Details/ContentDetailInfo.js +1 -1
- data/webpack/components/Content/Details/ContentDetails.js +3 -3
- data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetailInfo.test.js.snap +1 -0
- data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetails.test.js.snap +4 -0
- data/webpack/components/Content/__tests__/__snapshots__/ContentTable.test.js.snap +1 -0
- data/webpack/components/RoutedTabs/index.js +1 -1
- data/webpack/components/SelectOrg/SetOrganization.js +7 -1
- data/webpack/components/Table/EmptyStateMessage.js +8 -3
- data/webpack/components/Table/MainTable.js +8 -2
- data/webpack/components/TooltipButton/TooltipButton.js +2 -2
- data/webpack/components/TooltipButton/__snapshots__/TooltipButton.test.js.snap +3 -0
- data/webpack/components/extensions/HostDetails/ActionsBar/index.js +2 -0
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +81 -24
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.scss +3 -0
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +10 -3
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/HostContentViewActions.js +8 -0
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +3 -2
- data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +3 -1
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +1 -1
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +0 -4
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErratumExpansionDetail.js +2 -2
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +1 -5
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +20 -0
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +1 -0
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsConstants.js +16 -0
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +54 -8
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +1 -0
- data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +8 -1
- data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/Force.test.js.snap +1 -0
- data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/IgnoreSubmanErrors.test.js.snap +1 -0
- data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/LifeCycleEnvironment.test.js.snap +1 -0
- data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +2 -1
- data/webpack/components/extensions/RegistrationCommands/fields/Force.js +1 -0
- data/webpack/components/extensions/RegistrationCommands/fields/IgnoreSubmanErrors.js +1 -0
- data/webpack/components/extensions/RegistrationCommands/fields/LifecycleEnvironment.js +1 -0
- data/webpack/components/extensions/about/index.js +2 -2
- data/webpack/components/pf3Table/components/Table.js +1 -0
- data/webpack/scenes/AlternateContentSources/ACSIndexPage.js +6 -1
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +15 -2
- data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +6 -1
- data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +4 -1
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +9 -0
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +1 -0
- data/webpack/scenes/Content/Details/ContentDetails.js +4 -2
- data/webpack/scenes/Content/Details/ContentRepositories.js +1 -1
- data/webpack/scenes/Content/GenericContentPage.js +1 -1
- data/webpack/scenes/Content/Table/ContentTable.js +2 -2
- data/webpack/scenes/ContentViews/ContentViewsConstants.js +4 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +26 -13
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +27 -13
- data/webpack/scenes/ContentViews/Delete/__tests__/cvVersionsData.fixtures.json +8 -4
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +3 -2
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +1 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +25 -24
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +1 -1
- data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +19 -3
- data/webpack/scenes/ContentViews/Details/ContentViewDetailReducer.js +6 -0
- data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +2 -0
- data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +2 -2
- data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +15 -2
- data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +5 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +13 -9
- data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +19 -6
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +5 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +50 -51
- data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +45 -44
- data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +45 -44
- data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +13 -8
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +4 -3
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +5 -2
- data/webpack/scenes/ContentViews/Details/Filters/FilterRuleConstants.js +6 -0
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVDebMatchContentModal.js +3 -2
- data/webpack/scenes/ContentViews/Details/Filters/Rules/ContainerTag/AddEditContainerTagRuleModal.js +10 -2
- data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +5 -1
- data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +7 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +37 -24
- data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +3 -3
- data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +1 -1
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +78 -8
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +27 -8
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailNoReposAdded.fixtures.json +13 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/ActionSummary.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignActivationKeys.js +16 -16
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignHosts.js +16 -16
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteVersions.fixtures.json +6 -3
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/contentViewVersion.fixtures.json +10 -5
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareConfig.js +9 -2
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareTable.js +1 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionOneDetials.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionThreeDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionTwoDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersions.fixtures.json +12 -6
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionOneDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionTwoDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +25 -4
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +4 -2
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +26 -13
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +30 -17
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +1 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/versionsResponseData.fixtures.json +6 -3
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +2 -2
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +8 -1
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +55 -6
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionComponent.fixtures.json +6 -3
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.fixtures.json +8 -4
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersionsWithTask.fixtures.json +4 -2
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetails.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +4 -2
- data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +30 -3
- data/webpack/scenes/ContentViews/Publish/CVPublishReview.js +24 -2
- data/webpack/scenes/ContentViews/Publish/cvPublishForm.scss +4 -0
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +2 -2
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +1 -3
- data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelect.js +2 -1
- data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelectOption.js +3 -2
- data/webpack/scenes/ContentViews/components/ContentViewSelect/helpers.js +32 -0
- data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +52 -42
- data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +1 -0
- data/webpack/scenes/ContentViews/components/FiltersAppliedIcon.js +17 -0
- data/webpack/scenes/ContentViews/components/NeedsPublishIcon.js +45 -0
- data/webpack/scenes/ContentViews/components/NeedsPublishIcon.scss +9 -0
- data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +1 -1
- data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +49 -22
- data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +7 -1
- data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +1 -0
- data/webpack/scenes/Hosts/ChangeContentSource/components/HostsModal.js +2 -0
- data/webpack/scenes/Hosts/ChangeContentSource/index.js +2 -0
- data/webpack/scenes/ModuleStreams/Details/__tests__/__snapshots__/ModuleStreamDetailInfo.test.js.snap +1 -0
- data/webpack/scenes/ModuleStreams/__tests__/__snapshots__/ModuleStreamsTable.test.js.snap +1 -0
- data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +2 -0
- data/webpack/scenes/RedHatRepositories/__tests__/__snapshots__/RedHatRepositoriesPage.test.js.snap +2 -0
- data/webpack/scenes/RedHatRepositories/components/RecommendedRepositorySetsToggler.js +6 -1
- data/webpack/scenes/RedHatRepositories/components/RepositorySetRepositories.js +1 -1
- data/webpack/scenes/RedHatRepositories/components/__tests__/__snapshots__/RecommendedRepositorySetsToggler.test.js.snap +1 -0
- data/webpack/scenes/RedHatRepositories/components/__tests__/__snapshots__/RepositorySetRepositories.test.js.snap +1 -0
- data/webpack/scenes/RedHatRepositories/helpers.js +2 -0
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailAssociations.js +1 -1
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailInfo.js +2 -2
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetails.js +4 -4
- data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetailAssociations.test.js.snap +1 -0
- data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetailInfo.test.js.snap +2 -0
- data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetails.test.js.snap +4 -0
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/NetworkSyncForm.js +2 -1
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +5 -4
- data/webpack/scenes/Subscriptions/Manifest/SimpleContentAccess.js +1 -0
- data/webpack/scenes/Subscriptions/SubscriptionsPage.js +1 -1
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +3 -1
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/__snapshots__/UpstreamSubscriptionsPage.test.js.snap +3 -0
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +1 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTable.js +1 -1
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +5 -6
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/__snapshots__/SubscriptionsToolbar.test.js.snap +60 -5
- data/webpack/utils/useKatelloDocUrl.js +18 -0
- metadata +163 -22
- data/app/lib/actions/katello/organization/simple_content_access/prepare_content_overrides.rb +0 -36
- data/app/lib/katello/util/content_overrides_migrator.rb +0 -98
- data/webpack/components/extensions/HostDetails/common/KatelloAgentDeprecationAlert.js +0 -23
@@ -58,14 +58,14 @@ const ContentTable = ({
|
|
58
58
|
}
|
59
59
|
>
|
60
60
|
<Thead>
|
61
|
-
<Tr>
|
61
|
+
<Tr ouiaId="content-table-tr">
|
62
62
|
{columnHeaders.map(col =>
|
63
63
|
<Th key={col.title}>{col.title}</Th>)}
|
64
64
|
</Tr>
|
65
65
|
</Thead>
|
66
66
|
<Tbody>
|
67
67
|
{results?.map(details => (
|
68
|
-
<Tr key={details.id}>
|
68
|
+
<Tr key={`${details.id}`} ouiaId={`${details.id}-tr`}>
|
69
69
|
{columnHeaders.map((col, index) =>
|
70
70
|
<Td key={index}>{col.getProperty(details)}</Td>)
|
71
71
|
}
|
@@ -17,6 +17,7 @@ export const DELETE_CONTENT_VIEW_FILTERS_KEY = 'CONTENT_VIEW_FILTERS_DELETE';
|
|
17
17
|
export const DELETE_CONTENT_VIEW_FILTER_RULES_KEY = 'CONTENT_VIEW_FILTER_RULES_DELETE';
|
18
18
|
export const ADD_CONTENT_VIEW_FILTER_RULES_KEY = 'CONTENT_VIEW_FILTER_RULES_ADD';
|
19
19
|
export const PUBLISH_CONTENT_VIEW_KEY = 'CONTENT_VIEW_PUBLISH';
|
20
|
+
export const CONTENT_VIEW_VERSION_REPUBLISH_REPO_METADATA_KEY = 'CONTENT_VIEW_VERSION_REPUBLISH_REPO_METADATA';
|
20
21
|
export const UPDATE_CONTENT_VIEW = 'UPDATE_CONTENT_VIEW';
|
21
22
|
export const UPDATE_CONTENT_VIEW_SUCCESS = 'UPDATE_CONTENT_VIEW_SUCCESS';
|
22
23
|
export const UPDATE_CONTENT_VIEW_FAILURE = 'UPDATE_CONTENT_VIEW_FAILURE';
|
@@ -34,6 +35,8 @@ export const MODULE_STREAMS_CONTENT = 'MODULE_STREAMS_CONTENT';
|
|
34
35
|
export const DEB_PACKAGES_CONTENT = 'DEB_PACKAGES_CONTENT';
|
35
36
|
export const RPM_PACKAGES_CONTENT = 'RPM_PACKAGES_CONTENT';
|
36
37
|
export const FILE_CONTENT = 'FILE_CONTENT';
|
38
|
+
export const CONTENT_VIEW_NEEDS_PUBLISH = 'CV_NEEDS_PUBLISH';
|
39
|
+
export const CONTENT_VIEW_NEEDS_PUBLISH_RESET = 'CV_NEEDS_PUBLISH_RESET';
|
37
40
|
export const generatedContentKey = pluralLabel => `${toUpper(pluralLabel)}_CONTENT`;
|
38
41
|
export const cvDetailsKey = cvId => `${CONTENT_VIEWS_KEY}_${cvId}`;
|
39
42
|
export const cvDetailsRepoKey = cvId => `${CONTENT_VIEWS_KEY}_REPOSITORIES_${cvId}`;
|
@@ -54,6 +57,7 @@ export const bulkRemoveVersionKey = cvId => `BULK_REMOVE_CV_VERSION_${cvId}`;
|
|
54
57
|
export const cvRemoveVersionKey = (versionId, versionEnvironments) => `REMOVE_CV_VERSION_${versionId}_${versionEnvironments.length}`;
|
55
58
|
export const cvVersionPromoteKey = (versionId, environmentIds) => `PROMOTE_CONTENT_VIEW_VERSION_${versionId}_${environmentIds.length}`;
|
56
59
|
export const cvVersionDetailsKey = (cvId, versionId) => `CONTENT_VIEW_VERSION_DETAILS_${cvId}_${versionId}`;
|
60
|
+
export const cvVersionRepublishRepoMetadataKey = (cvId, versionId) => `${CONTENT_VIEW_VERSION_REPUBLISH_REPO_METADATA_KEY}_${cvId}_${versionId}`;
|
57
61
|
export const cvVersionPublishKey = (cvId, versionCount) => `${PUBLISH_CONTENT_VIEW_KEY}_${cvId}_VERSION_${versionCount}`;
|
58
62
|
export const cvVersionTaskPollingKey = cvId => `CONTENT_VIEW_VERSION_POLLING_${cvId}`;
|
59
63
|
export const cvAddComponentKey = cvId => `${CONTENT_VIEWS_KEY}_ADD_COMPONENT_${cvId}`;
|
@@ -10,6 +10,7 @@ import CVDeleteContext from '../CVDeleteContext';
|
|
10
10
|
import EnvironmentPaths from '../../components/EnvironmentPaths/EnvironmentPaths';
|
11
11
|
import AffectedActivationKeys from '../../Details/Versions/Delete/affectedActivationKeys';
|
12
12
|
import ContentViewSelect from '../../components/ContentViewSelect/ContentViewSelect';
|
13
|
+
import { getCVPlaceholderText, shouldDisableCVSelect } from '../../components/ContentViewSelect/helpers';
|
13
14
|
|
14
15
|
const CVDeletionReassignActivationKeysForm = () => {
|
15
16
|
const dispatch = useDispatch();
|
@@ -78,6 +79,20 @@ const CVDeletionReassignActivationKeysForm = () => {
|
|
78
79
|
setCVSelectOpen(false);
|
79
80
|
};
|
80
81
|
|
82
|
+
const placeholderText = getCVPlaceholderText({
|
83
|
+
contentSourceId: null,
|
84
|
+
environments: selectedEnvForAK,
|
85
|
+
contentViewsStatus: contentViewsInEnvStatus,
|
86
|
+
cvSelectOptions,
|
87
|
+
});
|
88
|
+
|
89
|
+
const disableCVSelect = shouldDisableCVSelect({
|
90
|
+
contentSourceId: null,
|
91
|
+
environments: selectedEnvForAK,
|
92
|
+
contentViewsStatus: contentViewsInEnvStatus,
|
93
|
+
cvSelectOptions,
|
94
|
+
});
|
95
|
+
|
81
96
|
return (
|
82
97
|
<>
|
83
98
|
<EnvironmentPaths
|
@@ -87,19 +102,17 @@ const CVDeletionReassignActivationKeysForm = () => {
|
|
87
102
|
headerText={__('Select lifecycle environment')}
|
88
103
|
multiSelect={false}
|
89
104
|
/>
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
</ContentViewSelect>
|
102
|
-
}
|
105
|
+
<ContentViewSelect
|
106
|
+
selections={selectedCVForAK}
|
107
|
+
onSelect={onSelect}
|
108
|
+
onClear={onClear}
|
109
|
+
isOpen={cvSelectOpen}
|
110
|
+
isDisabled={disableCVSelect}
|
111
|
+
onToggle={isExpanded => setCVSelectOpen(isExpanded)}
|
112
|
+
placeholderText={placeholderText}
|
113
|
+
>
|
114
|
+
{cvSelectOptions}
|
115
|
+
</ContentViewSelect>
|
103
116
|
<ExpandableSection
|
104
117
|
toggleText={showActivationKeys ?
|
105
118
|
'Hide activation keys' :
|
@@ -10,6 +10,7 @@ import CVDeleteContext from '../CVDeleteContext';
|
|
10
10
|
import EnvironmentPaths from '../../components/EnvironmentPaths/EnvironmentPaths';
|
11
11
|
import AffectedHosts from '../../Details/Versions/Delete/affectedHosts';
|
12
12
|
import ContentViewSelect from '../../components/ContentViewSelect/ContentViewSelect';
|
13
|
+
import { getCVPlaceholderText, shouldDisableCVSelect } from '../../components/ContentViewSelect/helpers';
|
13
14
|
|
14
15
|
|
15
16
|
const CVDeletionReassignHostsForm = () => {
|
@@ -79,6 +80,21 @@ const CVDeletionReassignHostsForm = () => {
|
|
79
80
|
setCVSelectOpen(false);
|
80
81
|
};
|
81
82
|
|
83
|
+
const placeholderText = getCVPlaceholderText({
|
84
|
+
contentSourceId: null,
|
85
|
+
environments: selectedEnvForHost,
|
86
|
+
contentViewsStatus: contentViewsInEnvStatus,
|
87
|
+
cvSelectOptions,
|
88
|
+
});
|
89
|
+
|
90
|
+
const disableCVSelect = shouldDisableCVSelect({
|
91
|
+
contentSourceId: null,
|
92
|
+
environments: selectedEnvForHost,
|
93
|
+
contentViewsStatus: contentViewsInEnvStatus,
|
94
|
+
cvSelectOptions,
|
95
|
+
});
|
96
|
+
|
97
|
+
|
82
98
|
return (
|
83
99
|
<>
|
84
100
|
<EnvironmentPaths
|
@@ -88,19 +104,17 @@ const CVDeletionReassignHostsForm = () => {
|
|
88
104
|
headerText={__('Select lifecycle environment')}
|
89
105
|
multiSelect={false}
|
90
106
|
/>
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
</ContentViewSelect>
|
103
|
-
}
|
107
|
+
<ContentViewSelect
|
108
|
+
selections={selectedCVForHosts}
|
109
|
+
onSelect={onSelect}
|
110
|
+
onClear={onClear}
|
111
|
+
isOpen={cvSelectOpen}
|
112
|
+
isDisabled={disableCVSelect}
|
113
|
+
onToggle={isExpanded => setCVSelectOpen(isExpanded)}
|
114
|
+
placeholderText={placeholderText}
|
115
|
+
>
|
116
|
+
{cvSelectOptions}
|
117
|
+
</ContentViewSelect>
|
104
118
|
<ExpandableSection
|
105
119
|
toggleText={showHosts ? 'Hide hosts' : 'Show hosts'}
|
106
120
|
onToggle={expanded => setShowHosts(expanded)}
|
@@ -261,7 +261,8 @@
|
|
261
261
|
},
|
262
262
|
"permissions": {
|
263
263
|
"deletable": true
|
264
|
-
}
|
264
|
+
},
|
265
|
+
"filters_applied": true
|
265
266
|
},
|
266
267
|
{
|
267
268
|
"version": "3.0",
|
@@ -531,7 +532,8 @@
|
|
531
532
|
},
|
532
533
|
"permissions": {
|
533
534
|
"deletable": true
|
534
|
-
}
|
535
|
+
},
|
536
|
+
"filters_applied": true
|
535
537
|
},
|
536
538
|
{
|
537
539
|
"version": "2.0",
|
@@ -693,7 +695,8 @@
|
|
693
695
|
},
|
694
696
|
"permissions": {
|
695
697
|
"deletable": true
|
696
|
-
}
|
698
|
+
},
|
699
|
+
"filters_applied": true
|
697
700
|
},
|
698
701
|
{
|
699
702
|
"version": "1.0",
|
@@ -855,7 +858,8 @@
|
|
855
858
|
},
|
856
859
|
"permissions": {
|
857
860
|
"deletable": true
|
858
|
-
}
|
861
|
+
},
|
862
|
+
"filters_applied": true
|
859
863
|
}
|
860
864
|
]
|
861
865
|
}
|
data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js
CHANGED
@@ -15,6 +15,7 @@ import {
|
|
15
15
|
selectCVDetailError,
|
16
16
|
} from '../../Details/ContentViewDetailSelectors';
|
17
17
|
import { addComponent } from '../ContentViewDetailActions';
|
18
|
+
import { CONTENT_VIEW_NEEDS_PUBLISH } from '../../ContentViewsConstants';
|
18
19
|
|
19
20
|
const ComponentContentViewAddModal = ({
|
20
21
|
cvId, componentCvId, componentId, latest, show, setIsOpen,
|
@@ -73,12 +74,12 @@ const ComponentContentViewAddModal = ({
|
|
73
74
|
dispatch(addComponent({
|
74
75
|
compositeContentViewId: cvId,
|
75
76
|
components: getUpdateParams(),
|
76
|
-
}));
|
77
|
+
}, () => dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH })));
|
77
78
|
} else {
|
78
79
|
dispatch(addComponent({
|
79
80
|
compositeContentViewId: cvId,
|
80
81
|
components: getAddParams(),
|
81
|
-
}));
|
82
|
+
}, () => dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH })));
|
82
83
|
}
|
83
84
|
setIsOpen(false);
|
84
85
|
};
|
@@ -30,7 +30,7 @@ import AddedStatusLabel from '../../../../components/AddedStatusLabel';
|
|
30
30
|
import ComponentVersion from './ComponentVersion';
|
31
31
|
import ComponentEnvironments from './ComponentEnvironments';
|
32
32
|
import ContentViewIcon from '../../components/ContentViewIcon';
|
33
|
-
import { ADDED, ALL_STATUSES, NOT_ADDED } from '../../ContentViewsConstants';
|
33
|
+
import { ADDED, ALL_STATUSES, CONTENT_VIEW_NEEDS_PUBLISH, NOT_ADDED } from '../../ContentViewsConstants';
|
34
34
|
import SelectableDropdown from '../../../../components/SelectableDropdown/SelectableDropdown';
|
35
35
|
import '../../../../components/EditableTextInput/editableTextInput.scss';
|
36
36
|
import ComponentContentViewAddModal from './ComponentContentViewAddModal';
|
@@ -73,7 +73,7 @@ const ContentViewComponents = ({ cvId, details }) => {
|
|
73
73
|
const addComponentsResolved = componentAddedStatus === STATUS.RESOLVED;
|
74
74
|
const removeComponentsResolved = componentRemovedStatus === STATUS.RESOLVED;
|
75
75
|
|
76
|
-
const {
|
76
|
+
const { permissions } = details || {};
|
77
77
|
|
78
78
|
const bulkRemoveEnabled = () => rows.some(row => row.selected && row.added);
|
79
79
|
const bulkAddEnabled = () => rows.some(row => row.selected && !row.added);
|
@@ -92,7 +92,7 @@ const ContentViewComponents = ({ cvId, details }) => {
|
|
92
92
|
dispatch(addComponent({
|
93
93
|
compositeContentViewId: cvId,
|
94
94
|
components: [{ latest: true, content_view_id: componentCvId }],
|
95
|
-
}));
|
95
|
+
}, () => dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH })));
|
96
96
|
}
|
97
97
|
}, [cvId, dispatch]);
|
98
98
|
|
@@ -102,7 +102,7 @@ const ContentViewComponents = ({ cvId, details }) => {
|
|
102
102
|
dispatch(removeComponent({
|
103
103
|
compositeContentViewId: cvId,
|
104
104
|
component_ids: componentIds,
|
105
|
-
}));
|
105
|
+
}, () => dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH })));
|
106
106
|
};
|
107
107
|
|
108
108
|
const addBulk = () => {
|
@@ -116,7 +116,7 @@ const ContentViewComponents = ({ cvId, details }) => {
|
|
116
116
|
dispatch(removeComponent({
|
117
117
|
compositeContentViewId: cvId,
|
118
118
|
component_ids: [componentIdToRemove],
|
119
|
-
}));
|
119
|
+
}, () => dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH })));
|
120
120
|
};
|
121
121
|
|
122
122
|
const toggleBulkAction = () => {
|
@@ -216,8 +216,8 @@ const ContentViewComponents = ({ cvId, details }) => {
|
|
216
216
|
</DropdownItem>,
|
217
217
|
];
|
218
218
|
|
219
|
-
const emptyContentTitle = __(
|
220
|
-
const emptyContentBody = __('Please
|
219
|
+
const emptyContentTitle = __('No content views to add yet');
|
220
|
+
const emptyContentBody = __('Please create some content views.');
|
221
221
|
const emptySearchTitle = __('No matching content views found');
|
222
222
|
const emptySearchBody = __('Try changing your search settings.');
|
223
223
|
const activeFilters = [statusSelected];
|
@@ -257,19 +257,20 @@ const ContentViewComponents = ({ cvId, details }) => {
|
|
257
257
|
fetchItems={useCallback(params =>
|
258
258
|
getContentViewComponents(cvId, params, statusSelected), [cvId, statusSelected])}
|
259
259
|
additionalListeners={[statusSelected, addComponentsResolved, removeComponentsResolved]}
|
260
|
-
actionButtons={
|
261
|
-
|
262
|
-
|
263
|
-
<
|
264
|
-
<
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
260
|
+
actionButtons={hasPermission(permissions, 'edit_content_views') &&
|
261
|
+
status === STATUS.RESOLVED && rows.length !== 0 &&
|
262
|
+
<>
|
263
|
+
<Split hasGutter>
|
264
|
+
<SplitItem>
|
265
|
+
<SelectableDropdown
|
266
|
+
items={[ALL_STATUSES, ADDED, NOT_ADDED]}
|
267
|
+
title={__('Status')}
|
268
|
+
selected={statusSelected}
|
269
|
+
setSelected={setStatusSelected}
|
270
|
+
placeholderText={__('Status')}
|
271
|
+
/>
|
272
|
+
</SplitItem>
|
273
|
+
{hasPermission(permissions, 'edit_content_views') &&
|
273
274
|
<SplitItem>
|
274
275
|
<ActionList>
|
275
276
|
<ActionListItem>
|
@@ -289,8 +290,8 @@ const ContentViewComponents = ({ cvId, details }) => {
|
|
289
290
|
</ActionList>
|
290
291
|
</SplitItem>
|
291
292
|
}
|
292
|
-
|
293
|
-
|
293
|
+
</Split>
|
294
|
+
{versionEditing &&
|
294
295
|
<ComponentContentViewAddModal
|
295
296
|
cvId={compositeCvEditing}
|
296
297
|
componentCvId={componentCvEditing}
|
@@ -300,14 +301,14 @@ const ContentViewComponents = ({ cvId, details }) => {
|
|
300
301
|
setIsOpen={setVersionEditing}
|
301
302
|
aria-label="edit_component_modal"
|
302
303
|
/>}
|
303
|
-
|
304
|
+
{bulkAdding &&
|
304
305
|
<ComponentContentViewBulkAddModal
|
305
306
|
cvId={compositeCvEditing}
|
306
307
|
rowsToAdd={selectedComponentsToAdd}
|
307
308
|
onClose={() => setBulkAdding(false)}
|
308
309
|
aria-label="bulk_add_components_modal"
|
309
310
|
/>}
|
310
|
-
|
311
|
+
</>
|
311
312
|
}
|
312
313
|
/>
|
313
314
|
);
|
@@ -179,7 +179,7 @@ test('Can handle no components being present', async (done) => {
|
|
179
179
|
renderWithRedux(<ContentViewComponents cvId={4} details={mockDetails} />, renderOptions);
|
180
180
|
|
181
181
|
expect(queryByText(firstComponent.content_view.label)).toBeNull();
|
182
|
-
await patientlyWaitFor(() => expect(queryByText('No content views
|
182
|
+
await patientlyWaitFor(() => expect(queryByText('No content views to add yet')).toBeInTheDocument());
|
183
183
|
assertNockRequest(autocompleteScope);
|
184
184
|
assertNockRequest(scope, done);
|
185
185
|
});
|
@@ -37,6 +37,7 @@ import {
|
|
37
37
|
addComponentSuccessMessage,
|
38
38
|
removeComponentSuccessMessage,
|
39
39
|
cvVersionPromoteKey,
|
40
|
+
cvVersionRepublishRepoMetadataKey,
|
40
41
|
cvFilterRepoKey,
|
41
42
|
cvVersionDetailsKey,
|
42
43
|
cvRemoveVersionKey,
|
@@ -229,29 +230,32 @@ export const updateContentView = (cvId, params, handleSuccess) => put({
|
|
229
230
|
},
|
230
231
|
});
|
231
232
|
|
232
|
-
export const addComponent = params => put({
|
233
|
+
export const addComponent = (params, handleSuccess) => put({
|
233
234
|
type: API_OPERATIONS.PUT,
|
234
235
|
key: cvAddComponentKey(params.compositeContentViewId),
|
235
236
|
url: api.getApiUrl(`/content_views/${params.compositeContentViewId}/content_view_components/${params.components.id ? params.components.id : 'add'}`),
|
236
237
|
params: params.components.id ? params.components : params,
|
238
|
+
handleSuccess,
|
237
239
|
successToast: () => addComponentSuccessMessage(params.components.id),
|
238
240
|
errorToast: error => __(`Something went wrong while adding component! ${getResponseErrorMsgs(error.response)}`),
|
239
241
|
});
|
240
242
|
|
241
|
-
export const removeComponent = params => put({
|
243
|
+
export const removeComponent = (params, handleSuccess) => put({
|
242
244
|
type: API_OPERATIONS.PUT,
|
243
245
|
key: cvRemoveComponentKey(params.compositeContentViewId),
|
244
246
|
url: api.getApiUrl(`/content_views/${params.compositeContentViewId}/content_view_components/remove`),
|
245
247
|
params,
|
248
|
+
handleSuccess,
|
246
249
|
successToast: () => removeComponentSuccessMessage(params.component_ids.length),
|
247
250
|
errorToast: error => __(`Something went wrong while removing component! ${getResponseErrorMsgs(error.response)}`),
|
248
251
|
});
|
249
252
|
|
250
|
-
export const createContentViewFilter = (cvId, params) => post({
|
253
|
+
export const createContentViewFilter = (cvId, params, handleSuccess) => post({
|
251
254
|
type: API_OPERATIONS.POST,
|
252
255
|
key: CREATE_CONTENT_VIEW_FILTER_KEY,
|
253
256
|
url: api.getApiUrl(`/content_view_filters?content_view_id=${cvId}`),
|
254
257
|
params,
|
258
|
+
handleSuccess,
|
255
259
|
successToast: () => __('Filter created'),
|
256
260
|
errorToast: error => __(`Something went wrong while creating the filter! ${getResponseErrorMsgs(error.response)}`),
|
257
261
|
});
|
@@ -584,4 +588,16 @@ export const promoteContentViewVersion = (params, handleSuccess) => post({
|
|
584
588
|
errorToast: error => cvErrorToast(error),
|
585
589
|
});
|
586
590
|
|
591
|
+
export const republishCVVRepoMetadata = (params, handleSuccess) => put({
|
592
|
+
type: API_OPERATIONS.PUT,
|
593
|
+
key: cvVersionRepublishRepoMetadataKey(params.cvId, params.id),
|
594
|
+
url: api.getApiUrl(`/content_view_versions/${params.id}/republish_repositories`),
|
595
|
+
params: { ...params, force: true },
|
596
|
+
handleSuccess: (response) => {
|
597
|
+
if (handleSuccess) return handleSuccess();
|
598
|
+
return renderTaskStartedToast(response.data);
|
599
|
+
},
|
600
|
+
errorToast: error => cvErrorToast(error),
|
601
|
+
});
|
602
|
+
|
587
603
|
export default getContentViewDetails;
|
@@ -3,6 +3,8 @@ import {
|
|
3
3
|
UPDATE_CONTENT_VIEW,
|
4
4
|
UPDATE_CONTENT_VIEW_FAILURE,
|
5
5
|
UPDATE_CONTENT_VIEW_SUCCESS,
|
6
|
+
CONTENT_VIEW_NEEDS_PUBLISH,
|
7
|
+
CONTENT_VIEW_NEEDS_PUBLISH_RESET,
|
6
8
|
} from '../ContentViewsConstants';
|
7
9
|
|
8
10
|
const initialState = Immutable({
|
@@ -17,6 +19,10 @@ export default (state = initialState, action) => {
|
|
17
19
|
return state.merge({ updating: false });
|
18
20
|
case UPDATE_CONTENT_VIEW_FAILURE:
|
19
21
|
return state.set('updating', false);
|
22
|
+
case CONTENT_VIEW_NEEDS_PUBLISH:
|
23
|
+
return state.set('needsPublish', true);
|
24
|
+
case CONTENT_VIEW_NEEDS_PUBLISH_RESET:
|
25
|
+
return state.set('needsPublish', false);
|
20
26
|
default:
|
21
27
|
return state;
|
22
28
|
}
|
@@ -389,3 +389,5 @@ export const selectRemoveCVVersionError = (state, versionId, versionEnvironments
|
|
389
389
|
|
390
390
|
|
391
391
|
export const selectIsCVUpdating = state => state.katello?.contentViewDetails?.updating;
|
392
|
+
|
393
|
+
export const selectCVNeedsPublish = state => state.katello?.contentViewDetails?.needsPublish;
|
@@ -14,7 +14,7 @@ import { selectCreateContentViewFilter, selectCreateContentViewFilterStatus,
|
|
14
14
|
selectCreateContentViewFilterError, selectCreateFilterRule,
|
15
15
|
selectCreateFilterRuleError, selectCreateFilterRuleStatus,
|
16
16
|
selectRepoTypes, selectRepoTypesStatus } from '../../../Details/ContentViewDetailSelectors';
|
17
|
-
import { FILTER_TYPES } from '../../../ContentViewsConstants';
|
17
|
+
import { CONTENT_VIEW_NEEDS_PUBLISH, FILTER_TYPES } from '../../../ContentViewsConstants';
|
18
18
|
import ContentType from '../ContentType';
|
19
19
|
|
20
20
|
const CVFilterAddModal = ({ cvId, onClose }) => {
|
@@ -46,7 +46,7 @@ const CVFilterAddModal = ({ cvId, onClose }) => {
|
|
46
46
|
cvId,
|
47
47
|
{
|
48
48
|
name, description, inclusion, type,
|
49
|
-
},
|
49
|
+
}, () => dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH }),
|
50
50
|
));
|
51
51
|
};
|
52
52
|
|
data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js
CHANGED
@@ -28,6 +28,7 @@ import TableWrapper from '../../../../../components/Table/TableWrapper';
|
|
28
28
|
import RepoIcon from '../../Repositories/RepoIcon';
|
29
29
|
import SelectableDropdown from '../../../../../components/SelectableDropdown/SelectableDropdown';
|
30
30
|
import { hasPermission } from '../../../helpers';
|
31
|
+
import { CONTENT_VIEW_NEEDS_PUBLISH } from '../../../ContentViewsConstants';
|
31
32
|
|
32
33
|
const allProducts = 'All products';
|
33
34
|
|
@@ -131,6 +132,7 @@ const AffectedRepositoryTable = ({
|
|
131
132
|
filterId,
|
132
133
|
{ id: filterId, repository_ids: repositoryIds.concat(repos) }, () => {
|
133
134
|
dispatch(getCVFilterDetails(cvId, filterId));
|
135
|
+
dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH });
|
134
136
|
},
|
135
137
|
));
|
136
138
|
};
|
@@ -142,7 +144,10 @@ const AffectedRepositoryTable = ({
|
|
142
144
|
dispatch(editCVFilter(
|
143
145
|
filterId,
|
144
146
|
{ id: filterId, repository_ids: deletedRepos },
|
145
|
-
() =>
|
147
|
+
() => {
|
148
|
+
dispatch(getCVFilterDetails(cvId, filterId, {}));
|
149
|
+
dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH });
|
150
|
+
},
|
146
151
|
));
|
147
152
|
if (deletedRepos.length === 0) setShowAffectedRepos(false);
|
148
153
|
};
|
@@ -182,7 +187,14 @@ const AffectedRepositoryTable = ({
|
|
182
187
|
setProductSelected(allProducts);
|
183
188
|
};
|
184
189
|
const dropdownItems = [
|
185
|
-
<DropdownItem
|
190
|
+
<DropdownItem
|
191
|
+
ouiaId="bulk-remove-dropdown-item"
|
192
|
+
aria-label="bulk_remove"
|
193
|
+
key="bulk_remove"
|
194
|
+
isDisabled={!hasAddedSelected}
|
195
|
+
component="button"
|
196
|
+
onClick={removeBulk}
|
197
|
+
>
|
186
198
|
{__('Remove')}
|
187
199
|
</DropdownItem>,
|
188
200
|
];
|
@@ -234,6 +246,7 @@ const AffectedRepositoryTable = ({
|
|
234
246
|
</ActionListItem>
|
235
247
|
<ActionListItem>
|
236
248
|
<Dropdown
|
249
|
+
ouiaId="bulk-actions-dropdown"
|
237
250
|
toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
|
238
251
|
isOpen={bulkActionOpen}
|
239
252
|
isPlain
|
@@ -4,6 +4,7 @@ import PropTypes from 'prop-types';
|
|
4
4
|
import { Switch } from '@patternfly/react-core';
|
5
5
|
import { translate as __ } from 'foremanReact/common/I18n';
|
6
6
|
import { editCVFilter } from '../ContentViewDetailActions';
|
7
|
+
import { CONTENT_VIEW_NEEDS_PUBLISH } from '../../ContentViewsConstants';
|
7
8
|
|
8
9
|
export const ArtifactsWithNoErrataRenderer = ({ filterDetails }) => {
|
9
10
|
const dispatch = useDispatch();
|
@@ -18,7 +19,10 @@ export const ArtifactsWithNoErrataRenderer = ({ filterDetails }) => {
|
|
18
19
|
const setArtifactsNoErrata = (checked) => {
|
19
20
|
enableArtifactsNoErrata(checked);
|
20
21
|
setLoading(true);
|
21
|
-
dispatch(editCVFilter(id, { [artifactAttribute]: checked }, () =>
|
22
|
+
dispatch(editCVFilter(id, { [artifactAttribute]: checked }, () => {
|
23
|
+
setLoading(false);
|
24
|
+
dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH });
|
25
|
+
}));
|
22
26
|
};
|
23
27
|
const getLabel = () => {
|
24
28
|
switch (true) {
|
@@ -28,11 +28,11 @@ import { deleteContentViewFilterRules, getCVFilterRules, removeCVFilterRule } fr
|
|
28
28
|
import AddEditContainerTagRuleModal from './Rules/ContainerTag/AddEditContainerTagRuleModal';
|
29
29
|
import AffectedRepositoryTable from './AffectedRepositories/AffectedRepositoryTable';
|
30
30
|
import { hasPermission } from '../../helpers';
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
31
|
+
import { emptyContentTitle,
|
32
|
+
emptyContentBody,
|
33
|
+
emptySearchTitle,
|
34
|
+
emptySearchBody } from './FilterRuleConstants';
|
35
|
+
import { CONTENT_VIEW_NEEDS_PUBLISH } from '../../ContentViewsConstants';
|
36
36
|
|
37
37
|
const CVContainerImageFilterContent = ({
|
38
38
|
cvId, filterId, showAffectedRepos, setShowAffectedRepos, details,
|
@@ -80,8 +80,10 @@ const CVContainerImageFilterContent = ({
|
|
80
80
|
setBulkActionOpen(false);
|
81
81
|
const tagFilterIds =
|
82
82
|
rows.filter(row => row.selected).map(selected => selected.id);
|
83
|
-
dispatch(deleteContentViewFilterRules(filterId, tagFilterIds, () =>
|
84
|
-
dispatch(getCVFilterRules(filterId))
|
83
|
+
dispatch(deleteContentViewFilterRules(filterId, tagFilterIds, () => {
|
84
|
+
dispatch(getCVFilterRules(filterId));
|
85
|
+
dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH });
|
86
|
+
}));
|
85
87
|
deselectAll();
|
86
88
|
};
|
87
89
|
|
@@ -111,8 +113,10 @@ const CVContainerImageFilterContent = ({
|
|
111
113
|
{
|
112
114
|
title: __('Remove'),
|
113
115
|
onClick: (_event, _rowId, { id }) => {
|
114
|
-
dispatch(removeCVFilterRule(filterId, id, () =>
|
115
|
-
dispatch(getCVFilterRules(filterId))
|
116
|
+
dispatch(removeCVFilterRule(filterId, id, () => {
|
117
|
+
dispatch(getCVFilterRules(filterId));
|
118
|
+
dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH });
|
119
|
+
}));
|
116
120
|
},
|
117
121
|
},
|
118
122
|
{
|
@@ -18,6 +18,10 @@ import CVDebMatchContentModal from './MatchContentModal/CVDebMatchContentModal';
|
|
18
18
|
import AddEditDebPackageRuleModal from './Rules/DebPackage/AddEditDebPackageRuleModal';
|
19
19
|
import AffectedRepositoryTable from './AffectedRepositories/AffectedRepositoryTable';
|
20
20
|
import { hasPermission } from '../../helpers';
|
21
|
+
import { emptyContentTitle,
|
22
|
+
emptyContentBody,
|
23
|
+
emptySearchTitle,
|
24
|
+
emptySearchBody } from './FilterRuleConstants';
|
21
25
|
|
22
26
|
const CVDebFilterContent = ({
|
23
27
|
cvId, filterId, inclusion, showAffectedRepos, setShowAffectedRepos, details,
|
@@ -104,10 +108,6 @@ const CVDebFilterContent = ({
|
|
104
108
|
}
|
105
109
|
}, [showAffectedRepos, repositories.length]);
|
106
110
|
|
107
|
-
const emptyContentTitle = __('No rules have been added to this filter.');
|
108
|
-
const emptyContentBody = __("Add to this filter using the 'Add Deb rule' button.");
|
109
|
-
const emptySearchTitle = __('No matching rules found.');
|
110
|
-
const emptySearchBody = __('Try changing your search settings.');
|
111
111
|
const tabTitle = (inclusion ? __('Included') : __('Excluded')) + __(' DEBs');
|
112
112
|
|
113
113
|
|
@@ -184,17 +184,30 @@ const CVDebFilterContent = ({
|
|
184
184
|
/>}
|
185
185
|
<Split hasGutter>
|
186
186
|
<SplitItem>
|
187
|
-
<Button
|
187
|
+
<Button
|
188
|
+
ouiaId="create-deb-rule-button"
|
189
|
+
onClick={() => setModalOpen(true)}
|
190
|
+
variant="secondary"
|
191
|
+
aria-label="create_deb_rule"
|
192
|
+
>
|
188
193
|
{__('Add DEB rule')}
|
189
194
|
</Button>
|
190
195
|
</SplitItem>
|
191
196
|
<SplitItem>
|
192
197
|
<Dropdown
|
198
|
+
ouiaId="bulk-actions-dropdown"
|
193
199
|
toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
|
194
200
|
isOpen={bulkActionOpen}
|
195
201
|
isPlain
|
196
202
|
dropdownItems={[
|
197
|
-
<DropdownItem
|
203
|
+
<DropdownItem
|
204
|
+
ouiaId="bulk-remove-dropdown-item"
|
205
|
+
aria-label="bulk_remove"
|
206
|
+
key="bulk_remove"
|
207
|
+
isDisabled={!hasSelected}
|
208
|
+
component="button"
|
209
|
+
onClick={bulkRemove}
|
210
|
+
>
|
198
211
|
{__('Remove')}
|
199
212
|
</DropdownItem>]
|
200
213
|
}
|