katello 4.9.2 → 4.10.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of katello might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +4 -7
- data/app/assets/javascripts/katello/locale/bn/katello.js +8967 -1
- data/app/assets/javascripts/katello/locale/bn_IN/katello.js +8967 -0
- data/app/assets/javascripts/katello/locale/ca/katello.js +8967 -0
- data/app/assets/javascripts/katello/locale/cs/katello.js +8967 -1
- data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +8969 -0
- data/app/assets/javascripts/katello/locale/de/katello.js +8991 -1
- data/app/assets/javascripts/katello/locale/de_AT/katello.js +8966 -0
- data/app/assets/javascripts/katello/locale/de_DE/katello.js +8967 -0
- data/app/assets/javascripts/katello/locale/el/katello.js +8967 -0
- data/app/assets/javascripts/katello/locale/en/katello.js +8967 -1
- data/app/assets/javascripts/katello/locale/en_GB/katello.js +8967 -0
- data/app/assets/javascripts/katello/locale/en_US/katello.js +8966 -0
- data/app/assets/javascripts/katello/locale/es/katello.js +8984 -1
- data/app/assets/javascripts/katello/locale/et_EE/katello.js +8966 -0
- data/app/assets/javascripts/katello/locale/fr/katello.js +9008 -1
- data/app/assets/javascripts/katello/locale/gl/katello.js +8967 -0
- data/app/assets/javascripts/katello/locale/gu/katello.js +8967 -1
- data/app/assets/javascripts/katello/locale/he_IL/katello.js +8967 -0
- data/app/assets/javascripts/katello/locale/hi/katello.js +8967 -1
- data/app/assets/javascripts/katello/locale/id/katello.js +8966 -0
- data/app/assets/javascripts/katello/locale/it/katello.js +8974 -1
- data/app/assets/javascripts/katello/locale/ja/katello.js +9004 -1
- data/app/assets/javascripts/katello/locale/ka/katello.js +8976 -1
- data/app/assets/javascripts/katello/locale/kn/katello.js +8967 -1
- data/app/assets/javascripts/katello/locale/ko/katello.js +8972 -1
- data/app/assets/javascripts/katello/locale/locale/katello.js +3070 -1
- data/app/assets/javascripts/katello/locale/ml_IN/katello.js +8966 -0
- data/app/assets/javascripts/katello/locale/mr/katello.js +8967 -1
- data/app/assets/javascripts/katello/locale/nl_NL/katello.js +8967 -0
- data/app/assets/javascripts/katello/locale/or/katello.js +8967 -1
- data/app/assets/javascripts/katello/locale/pa/katello.js +8967 -1
- data/app/assets/javascripts/katello/locale/pl/katello.js +8967 -0
- data/app/assets/javascripts/katello/locale/pl_PL/katello.js +8966 -0
- data/app/assets/javascripts/katello/locale/pt/katello.js +8967 -1
- data/app/assets/javascripts/katello/locale/pt_BR/katello.js +8984 -1
- data/app/assets/javascripts/katello/locale/ro/katello.js +8966 -0
- data/app/assets/javascripts/katello/locale/ro_RO/katello.js +8966 -0
- data/app/assets/javascripts/katello/locale/ru/katello.js +8973 -1
- data/app/assets/javascripts/katello/locale/sl/katello.js +8967 -0
- data/app/assets/javascripts/katello/locale/sv_SE/katello.js +8967 -0
- data/app/assets/javascripts/katello/locale/ta/katello.js +8967 -1
- data/app/assets/javascripts/katello/locale/ta_IN/katello.js +8967 -0
- data/app/assets/javascripts/katello/locale/te/katello.js +8967 -1
- data/app/assets/javascripts/katello/locale/tr/katello.js +8967 -0
- data/app/assets/javascripts/katello/locale/vi/katello.js +8966 -0
- data/app/assets/javascripts/katello/locale/vi_VN/katello.js +8966 -0
- data/app/assets/javascripts/katello/locale/zh/katello.js +8966 -0
- data/app/assets/javascripts/katello/locale/zh_CN/katello.js +9004 -1
- data/app/assets/javascripts/katello/locale/zh_TW/katello.js +8972 -1
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +1 -1
- data/app/controllers/katello/api/v2/alternate_content_sources_bulk_actions_controller.rb +22 -1
- data/app/controllers/katello/api/v2/api_controller.rb +0 -15
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +13 -4
- data/app/controllers/katello/api/v2/host_errata_controller.rb +0 -12
- data/app/controllers/katello/api/v2/host_packages_controller.rb +0 -55
- data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +0 -77
- data/app/controllers/katello/api/v2/organizations_controller.rb +2 -1
- data/app/controllers/katello/api/v2/repositories_controller.rb +6 -10
- data/app/controllers/katello/api/v2/sync_controller.rb +0 -1
- data/app/controllers/katello/concerns/api/api_controller.rb +0 -10
- data/app/controllers/katello/concerns/hosts_controller_extensions.rb +1 -1
- data/app/lib/actions/katello/alternate_content_source/update.rb +1 -1
- data/app/lib/actions/katello/content_view/capsule_sync.rb +1 -1
- data/app/lib/actions/katello/content_view/incremental_updates.rb +3 -9
- data/app/lib/actions/katello/content_view_version/republish_repositories.rb +8 -2
- data/app/lib/actions/katello/repository/capsule_sync.rb +1 -1
- data/app/lib/actions/katello/repository/update_metadata_sync.rb +1 -1
- data/app/lib/katello/concerns/base_template_scope_extensions.rb +4 -9
- data/app/lib/katello/resources/cdn.rb +4 -0
- data/app/lib/katello/validators/alternate_content_source_products_validator.rb +1 -1
- data/app/models/katello/cdn_configuration.rb +4 -0
- data/app/models/katello/concerns/host_managed_extensions.rb +2 -1
- data/app/models/katello/content_view.rb +5 -1
- data/app/models/katello/content_view_component.rb +1 -1
- data/app/models/katello/content_view_version.rb +4 -0
- data/app/models/katello/host/content_facet.rb +4 -5
- data/app/models/katello/ping.rb +0 -19
- data/app/models/katello/repository.rb +5 -1
- data/app/models/katello/root_repository.rb +2 -8
- data/app/services/katello/applicability/applicable_content_helper.rb +2 -2
- data/app/services/katello/registration_manager.rb +2 -12
- data/app/views/foreman/job_templates/configure_host_for_new_content_source.erb +25 -0
- data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +1 -1
- data/app/views/katello/api/v2/content_facet/show.json.rabl +0 -12
- data/app/views/katello/api/v2/content_view_components/show.json.rabl +4 -1
- data/app/views/katello/api/v2/content_views/base.json.rabl +6 -2
- data/app/views/katello/api/v2/repositories/show.json.rabl +0 -1
- data/config/initializers/monkeys.rb +1 -0
- data/config/katello.yaml.example +0 -4
- data/config/routes/api/v2.rb +3 -0
- data/config/routes/overrides.rb +0 -11
- data/db/migrate/20230609155411_add_custom_cdn_auth_enabled_to_katello_cdn_configurations.rb +5 -0
- data/db/migrate/20230710190626_remove_relative_path_limit.rb +5 -0
- data/db/migrate/20230717150442_change_change_content_source_job_template_name.rb +20 -0
- data/db/migrate/20230828143236_remove_katello_agent_dispatch_history.rb +15 -0
- data/db/seeds.d/111-upgrade_tasks.rb +1 -2
- data/engines/bastion/app/views/bastion/layouts/assets.html.erb +1 -1
- data/engines/bastion_katello/README.md +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-associations-content-hosts.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/views/activation-keys.html +8 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-errata-modal.controller.js +3 -44
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-module-streams-modal.controller.js +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-packages-modal.controller.js +1 -65
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +1 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-packages-modal.html +1 -6
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-applicable.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-errata.controller.js +1 -16
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-module-streams.controller.js +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-actions.controller.js +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-applicable.controller.js +2 -11
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-installed.controller.js +0 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages.controller.js +1 -39
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs-applicable.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +1 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +2 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +4 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-installed.html +1 -1
- 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/details/views/content-host-info.html +0 -14
- 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/errata/apply-errata.controller.js +1 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/file-content-views.controller.js +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/views/file-content-views.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +235 -521
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-packages.html +13 -2
- data/engines/bastion_katello/lib/bastion_katello/engine.rb +1 -3
- data/lib/katello/engine.rb +0 -18
- data/lib/katello/permission_creator.rb +1 -1
- data/lib/katello/plugin.rb +0 -25
- data/lib/katello/version.rb +1 -1
- data/lib/monkeys/remove_hidden_distribution.rb +383 -0
- data/locale/action_names.rb +3 -1
- data/locale/bn/katello.po +130 -39
- data/locale/bn_IN/katello.po +130 -39
- data/locale/ca/katello.po +130 -39
- data/locale/cs/katello.po +130 -39
- data/locale/cs_CZ/katello.po +130 -39
- data/locale/de/LC_MESSAGES/katello.mo +0 -0
- data/locale/de/katello.po +134 -43
- data/locale/de_AT/katello.po +130 -39
- data/locale/de_DE/katello.po +130 -39
- data/locale/el/katello.po +130 -39
- data/locale/en/katello.po +130 -39
- data/locale/en_GB/katello.po +130 -39
- data/locale/en_US/katello.po +130 -39
- data/locale/es/LC_MESSAGES/katello.mo +0 -0
- data/locale/es/katello.po +133 -42
- data/locale/et_EE/katello.po +130 -39
- data/locale/fr/LC_MESSAGES/katello.mo +0 -0
- data/locale/fr/katello.po +138 -47
- data/locale/gl/katello.po +130 -39
- data/locale/gu/katello.po +130 -39
- data/locale/he_IL/katello.po +130 -39
- data/locale/hi/katello.po +130 -39
- data/locale/id/katello.po +130 -39
- data/locale/it/LC_MESSAGES/katello.mo +0 -0
- data/locale/it/katello.po +131 -40
- data/locale/ja/LC_MESSAGES/katello.mo +0 -0
- data/locale/ja/katello.po +138 -47
- data/locale/ka/LC_MESSAGES/katello.mo +0 -0
- data/locale/ka/katello.po +131 -40
- data/locale/katello.pot +805 -642
- data/locale/kn/katello.po +130 -39
- data/locale/ko/LC_MESSAGES/katello.mo +0 -0
- data/locale/ko/katello.po +131 -40
- data/locale/ml_IN/katello.po +130 -39
- data/locale/mr/katello.po +130 -39
- data/locale/nl_NL/katello.po +130 -39
- data/locale/or/katello.po +130 -39
- data/locale/pa/katello.po +130 -39
- data/locale/pl/katello.po +130 -39
- data/locale/pl_PL/katello.po +130 -39
- data/locale/pt/katello.po +130 -39
- data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt_BR/katello.po +133 -42
- data/locale/ro/katello.po +130 -39
- data/locale/ro_RO/katello.po +130 -39
- data/locale/ru/LC_MESSAGES/katello.mo +0 -0
- data/locale/ru/katello.po +131 -40
- data/locale/sl/katello.po +130 -39
- data/locale/sv_SE/katello.po +130 -39
- data/locale/ta/katello.po +130 -39
- data/locale/ta_IN/katello.po +130 -39
- data/locale/te/katello.po +130 -39
- data/locale/tr/katello.po +130 -39
- data/locale/vi/katello.po +130 -39
- data/locale/vi_VN/katello.po +130 -39
- data/locale/zh/katello.po +130 -39
- data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_CN/katello.po +138 -47
- data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_TW/katello.po +131 -40
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +0 -5
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/index.js +9 -3
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +7 -58
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/HostErrataActions.js +2 -11
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/HostPackagesActions.js +1 -40
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/HostPackagesConstants.js +0 -3
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +5 -40
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +6 -65
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +5 -4
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +0 -212
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +2 -157
- data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +0 -20
- data/webpack/containers/Application/config.js +5 -0
- data/webpack/scenes/ActivationKeys/Details/ActivationKeyActions.js +31 -0
- data/webpack/scenes/ActivationKeys/Details/ActivationKeyConstants.js +3 -0
- data/webpack/scenes/ActivationKeys/Details/ActivationKeyDetails.js +127 -0
- data/webpack/scenes/ActivationKeys/Details/ActivationKeyDetails.scss +37 -0
- data/webpack/scenes/ActivationKeys/Details/ActivationKeyDetailsSelectors.js +16 -0
- data/webpack/scenes/ActivationKeys/Details/__tests__/activationKeyDetails.test.js +117 -0
- data/webpack/scenes/ActivationKeys/Details/components/DeleteMenu.js +77 -0
- data/webpack/scenes/ActivationKeys/Details/components/DeleteModal.js +63 -0
- data/webpack/scenes/ActivationKeys/Details/components/EditModal.js +199 -0
- data/webpack/scenes/ActivationKeys/Details/index.js +3 -0
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +10 -5
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditProducts.js +8 -3
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditSmartProxies.js +8 -3
- data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSEdits.test.js +2 -2
- data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +1 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +37 -29
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +53 -37
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +7 -0
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.fixtures.json +15 -6
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +6 -5
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/publishedContentViewDetails.fixtures.json +43 -197
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +1 -1
- data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +2 -2
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.fixtures.json +0 -98
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +103 -1
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersionsLatestEnvironment.fixtures.json +634 -0
- data/webpack/scenes/ContentViews/components/ContentViewSelect/helpers.js +1 -1
- data/webpack/scenes/Hosts/ChangeContentSource/actions.js +14 -12
- data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +45 -6
- data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +42 -7
- data/webpack/scenes/Hosts/ChangeContentSource/index.js +37 -10
- data/webpack/scenes/Hosts/ChangeContentSource/styles.scss +5 -0
- data/webpack/scenes/RedHatRepositories/index.scss +1 -1
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +2 -2
- metadata +85 -81
- data/app/lib/actions/katello/agent/dispatch_history_presenter.rb +0 -64
- data/app/lib/actions/katello/agent_action.rb +0 -120
- data/app/lib/actions/katello/bulk_agent_action.rb +0 -37
- data/app/lib/actions/katello/host/erratum/applicable_errata_install.rb +0 -44
- data/app/lib/actions/katello/host/erratum/install.rb +0 -38
- data/app/lib/actions/katello/host/package/install.rb +0 -34
- data/app/lib/actions/katello/host/package/remove.rb +0 -48
- data/app/lib/actions/katello/host/package/update.rb +0 -42
- data/app/lib/actions/katello/host/package_group/install.rb +0 -30
- data/app/lib/actions/katello/host/package_group/remove.rb +0 -30
- data/app/lib/katello/agent/base_message.rb +0 -41
- data/app/lib/katello/agent/client_message_handler.rb +0 -69
- data/app/lib/katello/agent/connection.rb +0 -38
- data/app/lib/katello/agent/install_errata_message.rb +0 -25
- data/app/lib/katello/agent/install_package_group_message.rb +0 -25
- data/app/lib/katello/agent/install_package_message.rb +0 -28
- data/app/lib/katello/agent/remove_package_group_message.rb +0 -25
- data/app/lib/katello/agent/remove_package_message.rb +0 -28
- data/app/lib/katello/agent/update_package_message.rb +0 -33
- data/app/lib/katello/event_daemon/services/agent_event_receiver.rb +0 -59
- data/app/lib/katello/qpid/connection.rb +0 -149
- data/app/lib/katello/util/default_enablement_migrator.rb +0 -183
- data/app/models/katello/agent/dispatch_history.rb +0 -19
- data/app/models/katello/events/delete_host_agent_queue.rb +0 -19
- data/app/services/katello/agent/dispatcher.rb +0 -60
- data/app/views/foreman/job_templates/change_content_source.erb +0 -18
- data/app/views/katello/api/v2/sync/index.json.rabl +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/katello-agent-notice.html +0 -8
- data/lib/katello/tasks/upgrades/4.9/update_custom_products_enablement.rake +0 -13
- data/webpack/components/extensions/HostDetails/common/KatelloAgentDeprecationAlert.js +0 -23
@@ -1,7 +1,7 @@
|
|
1
1
|
import { API_OPERATIONS, get, put } from 'foremanReact/redux/API';
|
2
2
|
import { foremanApi } from '../../../../../services/api';
|
3
|
-
import { HOST_ERRATA_KEY, HOST_ERRATA_APPLICABILITY_KEY
|
4
|
-
import { errorToast
|
3
|
+
import { HOST_ERRATA_KEY, HOST_ERRATA_APPLICABILITY_KEY } from './HostErrataConstants';
|
4
|
+
import { errorToast } from '../../../../../scenes/Tasks/helpers';
|
5
5
|
|
6
6
|
export const getInstallableErrata = (hostId, params) => get({
|
7
7
|
type: API_OPERATIONS.GET,
|
@@ -30,12 +30,3 @@ export const regenerateApplicability = (hostId, params) => put({
|
|
30
30
|
params,
|
31
31
|
});
|
32
32
|
|
33
|
-
export const applyViaKatelloAgent = (hostId, params) => put({
|
34
|
-
type: API_OPERATIONS.PUT,
|
35
|
-
key: HOST_ERRATA_APPLY_KEY,
|
36
|
-
url: foremanApi.getApiUrl(`/hosts/${hostId}/errata/apply`),
|
37
|
-
handleSuccess: response => renderTaskStartedToast(response.data),
|
38
|
-
errorToast: error => errorToast(error),
|
39
|
-
params,
|
40
|
-
});
|
41
|
-
|
@@ -1,11 +1,7 @@
|
|
1
|
-
import { API_OPERATIONS, get
|
2
|
-
import { errorToast, renderTaskStartedToast } from '../../../../../scenes/Tasks/helpers';
|
1
|
+
import { API_OPERATIONS, get } from 'foremanReact/redux/API';
|
3
2
|
import { foremanApi } from '../../../../../services/api';
|
4
3
|
import {
|
5
|
-
HOST_PACKAGES_INSTALL_KEY,
|
6
4
|
HOST_PACKAGES_KEY,
|
7
|
-
HOST_PACKAGES_REMOVE_KEY,
|
8
|
-
HOST_PACKAGES_UPGRADE_KEY,
|
9
5
|
} from './HostPackagesConstants';
|
10
6
|
|
11
7
|
export const getInstalledPackagesWithLatest = (hostId, params) => get({
|
@@ -15,38 +11,3 @@ export const getInstalledPackagesWithLatest = (hostId, params) => get({
|
|
15
11
|
params,
|
16
12
|
});
|
17
13
|
export default getInstalledPackagesWithLatest;
|
18
|
-
|
19
|
-
export const installPackageViaKatelloAgent = (hostId, params) => put({
|
20
|
-
type: API_OPERATIONS.PUT,
|
21
|
-
key: HOST_PACKAGES_INSTALL_KEY,
|
22
|
-
url: foremanApi.getApiUrl(`/hosts/${hostId}/packages/install`),
|
23
|
-
handleSuccess: ({ data }) => renderTaskStartedToast(data),
|
24
|
-
errorToast: error => errorToast(error),
|
25
|
-
params,
|
26
|
-
});
|
27
|
-
|
28
|
-
export const removePackageViaKatelloAgent = (hostId, params) => put({
|
29
|
-
type: API_OPERATIONS.PUT,
|
30
|
-
key: HOST_PACKAGES_REMOVE_KEY,
|
31
|
-
url: foremanApi.getApiUrl(`/hosts/${hostId}/packages/remove`),
|
32
|
-
handleSuccess: ({ data }) => renderTaskStartedToast(data),
|
33
|
-
errorToast: error => errorToast(error),
|
34
|
-
params,
|
35
|
-
});
|
36
|
-
|
37
|
-
export const upgradePackageViaKatelloAgent = (hostId, params) => put({
|
38
|
-
type: API_OPERATIONS.PUT,
|
39
|
-
key: HOST_PACKAGES_UPGRADE_KEY,
|
40
|
-
url: foremanApi.getApiUrl(`/hosts/${hostId}/packages/upgrade`),
|
41
|
-
handleSuccess: ({ data }) => renderTaskStartedToast(data),
|
42
|
-
errorToast: error => errorToast(error),
|
43
|
-
params,
|
44
|
-
});
|
45
|
-
|
46
|
-
export const upgradeAllViaKatelloAgent = hostId => put({
|
47
|
-
type: API_OPERATIONS.PUT,
|
48
|
-
key: HOST_PACKAGES_UPGRADE_KEY,
|
49
|
-
url: foremanApi.getApiUrl(`/hosts/${hostId}/packages/upgrade_all`),
|
50
|
-
handleSuccess: ({ data }) => renderTaskStartedToast(data),
|
51
|
-
errorToast: error => errorToast(error),
|
52
|
-
});
|
@@ -1,7 +1,4 @@
|
|
1
1
|
export const HOST_PACKAGES_KEY = 'HOST_PACKAGES';
|
2
|
-
export const HOST_PACKAGES_INSTALL_KEY = 'HOST_PACKAGES_KATELLO_AGENT_INSTALL';
|
3
|
-
export const HOST_PACKAGES_REMOVE_KEY = 'HOST_PACKAGES_REMOVE';
|
4
|
-
export const HOST_PACKAGES_UPGRADE_KEY = 'HOST_PACKAGES_UPGRADE';
|
5
2
|
export const PACKAGES_SEARCH_QUERY = 'Packages search query';
|
6
3
|
export const SELECTED_UPDATE_VERSIONS = 'Selected update versions';
|
7
4
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React, { useState } from 'react';
|
2
2
|
import { Modal, Button, Dropdown, DropdownItem, DropdownToggle, DropdownDirection, DropdownToggleAction } from '@patternfly/react-core';
|
3
3
|
import { CaretDownIcon, CaretUpIcon } from '@patternfly/react-icons';
|
4
|
-
import { useSelector
|
4
|
+
import { useSelector } from 'react-redux';
|
5
5
|
import { FormattedMessage } from 'react-intl';
|
6
6
|
import { Thead, Th, Tbody, Tr, Td, TableVariant } from '@patternfly/react-table';
|
7
7
|
import { noop } from 'foremanReact/common/helpers';
|
@@ -17,12 +17,10 @@ import { getHostYumInstallablePackages } from './YumInstallablePackagesActions';
|
|
17
17
|
import './PackageInstallModal.scss';
|
18
18
|
import { katelloPackageInstallBySearchUrl, katelloPackageInstallUrl } from '../customizedRexUrlHelpers';
|
19
19
|
import hostIdNotReady from '../../HostDetailsActions';
|
20
|
-
import { installPackageViaKatelloAgent } from './HostPackagesActions';
|
21
20
|
|
22
21
|
const InstallDropdown = ({
|
23
|
-
isDisabled, installViaRex,
|
24
|
-
bulkCustomizedRexUrl,
|
25
|
-
disableInstallViaKatelloAgent,
|
22
|
+
isDisabled, installViaRex,
|
23
|
+
bulkCustomizedRexUrl,
|
26
24
|
}) => {
|
27
25
|
const [isActionOpen, setIsActionOpen] = useState(false);
|
28
26
|
const onActionSelect = () => {
|
@@ -33,15 +31,6 @@ const InstallDropdown = ({
|
|
33
31
|
};
|
34
32
|
|
35
33
|
const dropdownItems = [
|
36
|
-
<DropdownItem
|
37
|
-
key="install-k-agent"
|
38
|
-
ouiaId="install-k-agent"
|
39
|
-
component="button"
|
40
|
-
onClick={installViaKatelloAgent}
|
41
|
-
isDisabled={disableInstallViaKatelloAgent}
|
42
|
-
>
|
43
|
-
{__('Install via katello-agent')}
|
44
|
-
</DropdownItem>,
|
45
34
|
<DropdownItem key="install-rex" ouiaId="install-rex" component="button" onClick={installViaRex}>
|
46
35
|
{__('Install via remote execution')}
|
47
36
|
</DropdownItem>,
|
@@ -56,9 +45,6 @@ const InstallDropdown = ({
|
|
56
45
|
</DropdownItem>,
|
57
46
|
];
|
58
47
|
|
59
|
-
if (!showKatelloAgent) dropdownItems.shift();
|
60
|
-
const defaultRemoteAction = showKatelloAgent ? installViaKatelloAgent : installViaRex;
|
61
|
-
|
62
48
|
return (
|
63
49
|
<Dropdown
|
64
50
|
ouiaId="action-dropdown"
|
@@ -69,7 +55,7 @@ const InstallDropdown = ({
|
|
69
55
|
ouiaId="install-action-toggle"
|
70
56
|
isDisabled={isDisabled}
|
71
57
|
splitButtonItems={[
|
72
|
-
<DropdownToggleAction key="install" onClick={
|
58
|
+
<DropdownToggleAction key="install" onClick={installViaRex}>
|
73
59
|
Install
|
74
60
|
</DropdownToggleAction>,
|
75
61
|
]}
|
@@ -88,23 +74,17 @@ const InstallDropdown = ({
|
|
88
74
|
InstallDropdown.propTypes = {
|
89
75
|
isDisabled: PropTypes.bool,
|
90
76
|
installViaRex: PropTypes.func,
|
91
|
-
installViaKatelloAgent: PropTypes.func,
|
92
77
|
bulkCustomizedRexUrl: PropTypes.string,
|
93
|
-
showKatelloAgent: PropTypes.bool,
|
94
|
-
disableInstallViaKatelloAgent: PropTypes.bool,
|
95
78
|
};
|
96
79
|
|
97
80
|
InstallDropdown.defaultProps = {
|
98
81
|
isDisabled: false,
|
99
82
|
installViaRex: noop,
|
100
|
-
installViaKatelloAgent: noop,
|
101
83
|
bulkCustomizedRexUrl: '',
|
102
|
-
showKatelloAgent: false,
|
103
|
-
disableInstallViaKatelloAgent: false,
|
104
84
|
};
|
105
85
|
|
106
86
|
const PackageInstallModal = ({
|
107
|
-
isOpen, closeModal, hostId, hostName,
|
87
|
+
isOpen, closeModal, hostId, hostName, triggerPackageInstall,
|
108
88
|
}) => {
|
109
89
|
const emptyContentTitle = __('No packages available to install');
|
110
90
|
const emptyContentBody = __('No packages available to install on this host. Please check the host\'s content view and lifecycle environment.');
|
@@ -114,7 +94,6 @@ const PackageInstallModal = ({
|
|
114
94
|
const response =
|
115
95
|
useSelector(state => selectAPIResponse(state, HOST_YUM_INSTALLABLE_PACKAGES_KEY));
|
116
96
|
const status = useSelector(state => selectHostYumInstallablePackagesStatus(state));
|
117
|
-
const dispatch = useDispatch();
|
118
97
|
const { results, ...metadata } = response;
|
119
98
|
const [suppressFirstFetch, setSuppressFirstFetch] = useState(false);
|
120
99
|
|
@@ -150,12 +129,6 @@ const PackageInstallModal = ({
|
|
150
129
|
closeModal();
|
151
130
|
};
|
152
131
|
|
153
|
-
const installViaKatelloAgent = () => {
|
154
|
-
dispatch(installPackageViaKatelloAgent(hostId, { packages: selectedPackageNames() }));
|
155
|
-
selectNone();
|
156
|
-
closeModal();
|
157
|
-
};
|
158
|
-
|
159
132
|
const handleModalClose = () => {
|
160
133
|
setSuppressFirstFetch(true);
|
161
134
|
closeModal();
|
@@ -173,10 +146,7 @@ const PackageInstallModal = ({
|
|
173
146
|
key="install"
|
174
147
|
isDisabled={!selectedCount}
|
175
148
|
installViaRex={installViaRex}
|
176
|
-
installViaKatelloAgent={installViaKatelloAgent}
|
177
149
|
bulkCustomizedRexUrl={enableSimpleRexUrl ? simpleBulkCustomizedRexUrl : bulkCustomizedRexUrl}
|
178
|
-
showKatelloAgent={showKatelloAgent}
|
179
|
-
disableInstallViaKatelloAgent={selectedResults.length === 0}
|
180
150
|
/>,
|
181
151
|
<Button key="cancel" ouiaId="cancel-button" variant="link" onClick={handleModalClose}>
|
182
152
|
Cancel
|
@@ -274,12 +244,7 @@ PackageInstallModal.propTypes = {
|
|
274
244
|
closeModal: PropTypes.func.isRequired,
|
275
245
|
hostId: PropTypes.number.isRequired,
|
276
246
|
hostName: PropTypes.string.isRequired,
|
277
|
-
showKatelloAgent: PropTypes.bool,
|
278
247
|
triggerPackageInstall: PropTypes.func.isRequired,
|
279
248
|
};
|
280
249
|
|
281
|
-
PackageInstallModal.defaultProps = {
|
282
|
-
showKatelloAgent: false,
|
283
|
-
};
|
284
|
-
|
285
250
|
export default PackageInstallModal;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import React, { useCallback, useState, useRef } from 'react';
|
2
|
-
import { useSelector
|
2
|
+
import { useSelector } from 'react-redux';
|
3
3
|
import {
|
4
4
|
ActionList,
|
5
5
|
ActionListItem,
|
@@ -28,9 +28,6 @@ import { useBulkSelect, useTableSort, useUrlParams, useSet } from '../../../../.
|
|
28
28
|
import PackagesStatus from '../../../../../components/Packages';
|
29
29
|
import {
|
30
30
|
getInstalledPackagesWithLatest,
|
31
|
-
removePackageViaKatelloAgent,
|
32
|
-
upgradeAllViaKatelloAgent,
|
33
|
-
upgradePackageViaKatelloAgent,
|
34
31
|
} from './HostPackagesActions';
|
35
32
|
import { selectHostPackagesStatus } from './HostPackagesSelectors';
|
36
33
|
import {
|
@@ -41,17 +38,13 @@ import { katelloPackageUpdateUrl, packagesUpdateUrl } from '../customizedRexUrlH
|
|
41
38
|
import './PackagesTab.scss';
|
42
39
|
import hostIdNotReady, { getHostDetails } from '../../HostDetailsActions';
|
43
40
|
import PackageInstallModal from './PackageInstallModal';
|
44
|
-
import {
|
45
|
-
hasRequiredPermissions as can,
|
41
|
+
import { hasRequiredPermissions as can,
|
46
42
|
missingRequiredPermissions as cannot,
|
47
|
-
KATELLO_AGENT,
|
48
43
|
userPermissionsFromHostDetails } from '../../hostDetailsHelpers';
|
49
44
|
import SortableColumnHeaders from '../../../../Table/components/SortableColumnHeaders';
|
50
45
|
import { useRexJobPolling } from '../RemoteExecutionHooks';
|
51
|
-
import KatelloAgentDeprecationAlert from '../../common/KatelloAgentDeprecationAlert';
|
52
46
|
|
53
47
|
const invokeRexJobs = ['create_job_invocations'];
|
54
|
-
const doKatelloAgentActions = ['edit_hosts'];
|
55
48
|
const createBookmarks = ['create_bookmarks'];
|
56
49
|
|
57
50
|
const UpdateVersionsSelect = ({
|
@@ -126,7 +119,6 @@ export const PackagesTab = () => {
|
|
126
119
|
} = hostDetails;
|
127
120
|
|
128
121
|
const { searchParam, status: statusParam } = useUrlParams();
|
129
|
-
const dispatch = useDispatch();
|
130
122
|
const PACKAGE_STATUS = __('Status');
|
131
123
|
const [packageStatusSelected, setPackageStatusSelected] = useState(statusParam ?? PACKAGE_STATUS);
|
132
124
|
const activeFilters = [packageStatusSelected];
|
@@ -135,10 +127,7 @@ export const PackagesTab = () => {
|
|
135
127
|
const toggleBulkAction = () => setIsBulkActionOpen(prev => !prev);
|
136
128
|
const [isModalOpen, setIsModalOpen] = useState(false);
|
137
129
|
const closeModal = () => setIsModalOpen(false);
|
138
|
-
const
|
139
|
-
const showActions = showKatelloAgent ?
|
140
|
-
can(doKatelloAgentActions, userPermissionsFromHostDetails({ hostDetails })) :
|
141
|
-
can(invokeRexJobs, userPermissionsFromHostDetails({ hostDetails }));
|
130
|
+
const showActions = can(invokeRexJobs, userPermissionsFromHostDetails({ hostDetails }));
|
142
131
|
|
143
132
|
const [isActionOpen, setIsActionOpen] = useState(false);
|
144
133
|
const onActionSelect = () => {
|
@@ -295,11 +284,6 @@ export const PackagesTab = () => {
|
|
295
284
|
|
296
285
|
const removePackageViaRemoteExecution = packageName => triggerPackageRemove(packageName);
|
297
286
|
|
298
|
-
const removeViaKatelloAgent = (packageName) => {
|
299
|
-
dispatch(removePackageViaKatelloAgent(hostId, { packages: [packageName] }));
|
300
|
-
selectNone();
|
301
|
-
};
|
302
|
-
|
303
287
|
const removePackagesViaRemoteExecution = () => {
|
304
288
|
const selected = fetchBulkParams();
|
305
289
|
setIsBulkActionOpen(false);
|
@@ -307,32 +291,9 @@ export const PackagesTab = () => {
|
|
307
291
|
triggerBulkPackageRemove(selected);
|
308
292
|
};
|
309
293
|
|
310
|
-
const
|
311
|
-
const selectedUpgradableVersions = () => selectedResults.map(({ name, upgradable_versions: v }) =>
|
312
|
-
selectedNewVersions.current[name] || v[0]);
|
313
|
-
|
314
|
-
const removePackagesViaKatelloAgent = () => {
|
315
|
-
dispatch(removePackageViaKatelloAgent(hostId, { packages: selectedPackageNames() }));
|
316
|
-
selectNone();
|
317
|
-
};
|
318
|
-
|
319
|
-
const defaultRemoteAction = defaultRemoteActionMethod({ hostDetails });
|
320
|
-
|
321
|
-
const removeBulk = () => {
|
322
|
-
if (defaultRemoteAction === KATELLO_AGENT) {
|
323
|
-
removePackagesViaKatelloAgent();
|
324
|
-
} else {
|
325
|
-
removePackagesViaRemoteExecution();
|
326
|
-
}
|
327
|
-
};
|
294
|
+
const removeBulk = () => removePackagesViaRemoteExecution();
|
328
295
|
|
329
|
-
const handlePackageRemove =
|
330
|
-
if (defaultRemoteAction === KATELLO_AGENT) {
|
331
|
-
removeViaKatelloAgent(packageName);
|
332
|
-
} else {
|
333
|
-
removePackageViaRemoteExecution(packageName);
|
334
|
-
}
|
335
|
-
};
|
296
|
+
const handlePackageRemove = packageName => removePackageViaRemoteExecution(packageName);
|
336
297
|
|
337
298
|
const upgradeViaRemoteExecution = ({ packageName, upgradableVersions }) => (
|
338
299
|
triggerPackageUpgrade({ packageName, upgradableVersions })
|
@@ -345,22 +306,7 @@ export const PackagesTab = () => {
|
|
345
306
|
triggerBulkPackageUpgrade(selected);
|
346
307
|
};
|
347
308
|
|
348
|
-
const
|
349
|
-
if (areAllRowsSelected()) {
|
350
|
-
dispatch(upgradeAllViaKatelloAgent(hostId));
|
351
|
-
} else {
|
352
|
-
dispatch(upgradePackageViaKatelloAgent(hostId, { packages: selectedUpgradableVersions() }));
|
353
|
-
}
|
354
|
-
selectNone();
|
355
|
-
};
|
356
|
-
|
357
|
-
const upgradeBulk = () => {
|
358
|
-
if (defaultRemoteAction === KATELLO_AGENT) {
|
359
|
-
upgradeBulkViaKatelloAgent();
|
360
|
-
} else {
|
361
|
-
upgradeBulkViaRemoteExecution();
|
362
|
-
}
|
363
|
-
};
|
309
|
+
const upgradeBulk = () => upgradeBulkViaRemoteExecution();
|
364
310
|
|
365
311
|
const upgradeViaCustomizedRemoteExecution = selectedCount ?
|
366
312
|
packagesUpdateUrl({
|
@@ -375,7 +321,6 @@ export const PackagesTab = () => {
|
|
375
321
|
selectedResults.every(item => item.upgradable_versions?.length > 0);
|
376
322
|
const disableUpgrade = () => selectedCount === 0 ||
|
377
323
|
(selectAllMode && packageStatusSelected !== 'Upgradable') ||
|
378
|
-
(defaultRemoteAction === KATELLO_AGENT && selectAllMode && !areAllRowsSelected()) ||
|
379
324
|
(!selectAllMode && !allUpgradable());
|
380
325
|
|
381
326
|
const readOnlyBookmarks =
|
@@ -492,9 +437,6 @@ export const PackagesTab = () => {
|
|
492
437
|
return (
|
493
438
|
<div>
|
494
439
|
<div id="packages-tab">
|
495
|
-
{showKatelloAgent && (
|
496
|
-
<KatelloAgentDeprecationAlert />
|
497
|
-
)}
|
498
440
|
<TableWrapper
|
499
441
|
{...{
|
500
442
|
metadata,
|
@@ -638,7 +580,6 @@ export const PackagesTab = () => {
|
|
638
580
|
hostId={hostId}
|
639
581
|
key={hostId}
|
640
582
|
hostName={hostname}
|
641
|
-
showKatelloAgent={showKatelloAgent}
|
642
583
|
triggerPackageInstall={triggerPackageInstall}
|
643
584
|
/>
|
644
585
|
}
|
@@ -64,9 +64,11 @@ import { selectRepositorySetsStatus } from './RepositorySetsSelectors';
|
|
64
64
|
import './RepositorySetsTab.scss';
|
65
65
|
import SortableColumnHeaders from '../../../../Table/components/SortableColumnHeaders';
|
66
66
|
import SelectableDropdown from '../../../../SelectableDropdown';
|
67
|
-
import {
|
67
|
+
import {
|
68
|
+
hasRequiredPermissions as can,
|
68
69
|
missingRequiredPermissions as cannot,
|
69
|
-
userPermissionsFromHostDetails
|
70
|
+
userPermissionsFromHostDetails,
|
71
|
+
} from '../../hostDetailsHelpers';
|
70
72
|
|
71
73
|
const viewRepoSets = [
|
72
74
|
'view_hosts', 'view_activation_keys', 'view_products',
|
@@ -397,7 +399,7 @@ const RepositorySetsTab = () => {
|
|
397
399
|
});
|
398
400
|
|
399
401
|
const readOnlyBookmarks =
|
400
|
-
|
402
|
+
cannot(createBookmarks, userPermissionsFromHostDetails({ hostDetails }));
|
401
403
|
|
402
404
|
const dropdownItems = [
|
403
405
|
<DropdownItem
|
@@ -604,7 +606,6 @@ const RepositorySetsTab = () => {
|
|
604
606
|
pfSortParams={pfSortParams}
|
605
607
|
columnsToSortParams={COLUMNS_TO_SORT_PARAMS}
|
606
608
|
/>
|
607
|
-
<Th />
|
608
609
|
<Th key="action-menu" />
|
609
610
|
</Tr>
|
610
611
|
</Thead>
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import React from 'react';
|
2
|
-
import { isEqual } from 'lodash';
|
3
2
|
import { renderWithRedux, patientlyWaitFor, within, fireEvent } from 'react-testing-lib-wrapper';
|
4
3
|
import { nockInstance, assertNockRequest, mockForemanAutocomplete } from '../../../../../test-utils/nockWrapper';
|
5
4
|
import { foremanApi } from '../../../../../services/api';
|
@@ -101,7 +100,6 @@ const baseQueryWithSort = {
|
|
101
100
|
const defaultQuery = { ...baseQueryWithSort, search: '' };
|
102
101
|
const page2Query = { ...baseQueryWithSort, page: 2 };
|
103
102
|
const jobInvocations = foremanApi.getApiUrl('/job_invocations');
|
104
|
-
const applyByKatelloAgentUrl = foremanApi.getApiUrl('/hosts/1/errata/apply');
|
105
103
|
|
106
104
|
let firstErrata;
|
107
105
|
let thirdErrata;
|
@@ -839,173 +837,6 @@ test('Can filter by severity', async (done) => {
|
|
839
837
|
assertNockRequest(scope2, done); // Pass jest callback to confirm test is done
|
840
838
|
});
|
841
839
|
|
842
|
-
test('apply button chooses katello agent if enabled', async (done) => {
|
843
|
-
const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
|
844
|
-
const mockErrata = makeMockErrata({});
|
845
|
-
const options = renderOptions({
|
846
|
-
...cfWithErrataTotal(mockErrata.total),
|
847
|
-
katelloAgentInstalled: true,
|
848
|
-
katelloAgentEnabled: true,
|
849
|
-
});
|
850
|
-
|
851
|
-
const scope = nockInstance
|
852
|
-
.get(hostErrata)
|
853
|
-
.query(defaultQuery)
|
854
|
-
.reply(200, mockErrata);
|
855
|
-
|
856
|
-
const resolveErrataScope = nockInstance
|
857
|
-
.put(applyByKatelloAgentUrl)
|
858
|
-
.reply(201, mockResolveErrataTask);
|
859
|
-
|
860
|
-
const { getAllByText, getByLabelText, queryByText } = renderWithRedux(
|
861
|
-
<ErrataTab />,
|
862
|
-
options,
|
863
|
-
);
|
864
|
-
// Assert that the errata are now showing on the screen, but wait for them to appear.
|
865
|
-
await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
|
866
|
-
|
867
|
-
getByLabelText('Select row 0').click();
|
868
|
-
getByLabelText('Select row 1').click();
|
869
|
-
|
870
|
-
const viaAction = queryByText('Apply');
|
871
|
-
expect(viaAction).toBeInTheDocument();
|
872
|
-
viaAction.click();
|
873
|
-
|
874
|
-
assertNockRequest(autocompleteScope);
|
875
|
-
assertNockRequest(resolveErrataScope);
|
876
|
-
assertNockRequest(scope, done);
|
877
|
-
});
|
878
|
-
|
879
|
-
test('Can bulk apply via katello agent', async (done) => {
|
880
|
-
const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
|
881
|
-
const mockErrata = makeMockErrata({});
|
882
|
-
const { results } = mockErrata;
|
883
|
-
const options = renderOptions({
|
884
|
-
...cfWithErrataTotal(mockErrata.total),
|
885
|
-
katelloAgentInstalled: true,
|
886
|
-
katelloAgentEnabled: true,
|
887
|
-
});
|
888
|
-
|
889
|
-
const scope = nockInstance
|
890
|
-
.get(hostErrata)
|
891
|
-
.query(defaultQuery)
|
892
|
-
.reply(200, mockErrata);
|
893
|
-
|
894
|
-
const postBody = ({ search }) => {
|
895
|
-
const [firstResult, secondResult] = results;
|
896
|
-
return isEqual(search, `errata_id ^ (${firstResult.errata_id},${secondResult.errata_id})`);
|
897
|
-
};
|
898
|
-
const resolveErrataScope = nockInstance
|
899
|
-
.put(applyByKatelloAgentUrl, postBody)
|
900
|
-
.reply(201, mockResolveErrataTask);
|
901
|
-
|
902
|
-
const { getAllByText, getByLabelText, queryByText } = renderWithRedux(
|
903
|
-
<ErrataTab />,
|
904
|
-
options,
|
905
|
-
);
|
906
|
-
// Assert that the errata are now showing on the screen, but wait for them to appear.
|
907
|
-
await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
|
908
|
-
|
909
|
-
getByLabelText('Select row 0').click();
|
910
|
-
getByLabelText('Select row 1').click();
|
911
|
-
|
912
|
-
const actionMenu = getByLabelText('expand_errata_toggle');
|
913
|
-
actionMenu.click();
|
914
|
-
const viaAction = queryByText('Apply via Katello agent');
|
915
|
-
expect(viaAction).toBeInTheDocument();
|
916
|
-
viaAction.click();
|
917
|
-
|
918
|
-
assertNockRequest(autocompleteScope);
|
919
|
-
assertNockRequest(resolveErrataScope);
|
920
|
-
assertNockRequest(scope, done);
|
921
|
-
});
|
922
|
-
|
923
|
-
test('Can select all, exclude and bulk apply via katello agent', async (done) => {
|
924
|
-
// This is the same test as above,
|
925
|
-
// but using the table action bar instead of the Apply button
|
926
|
-
const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
|
927
|
-
const mockErrata = makeMockErrata({});
|
928
|
-
const { results } = mockErrata;
|
929
|
-
const options = renderOptions({
|
930
|
-
...cfWithErrataTotal(mockErrata.total),
|
931
|
-
katelloAgentInstalled: true,
|
932
|
-
katelloAgentEnabled: true,
|
933
|
-
});
|
934
|
-
|
935
|
-
const scope = nockInstance
|
936
|
-
.get(hostErrata)
|
937
|
-
.query(defaultQuery)
|
938
|
-
.reply(200, mockErrata);
|
939
|
-
|
940
|
-
const postBody = ({ search }) => {
|
941
|
-
const [firstResult] = results;
|
942
|
-
return isEqual(search, `errata_id !^ (${firstResult.errata_id})`);
|
943
|
-
};
|
944
|
-
|
945
|
-
const resolveErrataScope = nockInstance
|
946
|
-
.put(applyByKatelloAgentUrl, postBody)
|
947
|
-
.reply(201, mockResolveErrataTask);
|
948
|
-
|
949
|
-
const { getAllByText, getByLabelText, queryByText } = renderWithRedux(
|
950
|
-
<ErrataTab />,
|
951
|
-
options,
|
952
|
-
);
|
953
|
-
// Assert that the errata are now showing on the screen, but wait for them to appear.
|
954
|
-
await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
|
955
|
-
const selectAllCheckbox = getByLabelText('Select all');
|
956
|
-
selectAllCheckbox.click();
|
957
|
-
|
958
|
-
getByLabelText('Select row 0').click(); // deselect
|
959
|
-
|
960
|
-
const actionMenu = getByLabelText('expand_errata_toggle');
|
961
|
-
actionMenu.click();
|
962
|
-
const viaAction = queryByText('Apply via Katello agent');
|
963
|
-
expect(viaAction).toBeInTheDocument();
|
964
|
-
viaAction.click();
|
965
|
-
|
966
|
-
assertNockRequest(autocompleteScope);
|
967
|
-
assertNockRequest(resolveErrataScope);
|
968
|
-
assertNockRequest(scope, done);
|
969
|
-
});
|
970
|
-
|
971
|
-
test('Apply button chooses remote execution', async (done) => {
|
972
|
-
const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
|
973
|
-
const mockErrata = makeMockErrata({});
|
974
|
-
const options = renderOptions({
|
975
|
-
...cfWithErrataTotal(mockErrata.total),
|
976
|
-
katelloAgentInstalled: true,
|
977
|
-
katelloAgentEnabled: true,
|
978
|
-
remoteExecutionByDefault: true,
|
979
|
-
});
|
980
|
-
|
981
|
-
const scope = nockInstance
|
982
|
-
.get(hostErrata)
|
983
|
-
.query(defaultQuery)
|
984
|
-
.reply(200, mockErrata);
|
985
|
-
|
986
|
-
const resolveErrataScope = nockInstance
|
987
|
-
.post(jobInvocations)
|
988
|
-
.reply(201, mockResolveErrataTask);
|
989
|
-
|
990
|
-
const { getAllByText, getByLabelText, queryByText } = renderWithRedux(
|
991
|
-
<ErrataTab />,
|
992
|
-
options,
|
993
|
-
);
|
994
|
-
// Assert that the errata are now showing on the screen, but wait for them to appear.
|
995
|
-
await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
|
996
|
-
|
997
|
-
getByLabelText('Select row 0').click();
|
998
|
-
getByLabelText('Select row 1').click();
|
999
|
-
|
1000
|
-
const viaAction = queryByText('Apply');
|
1001
|
-
expect(viaAction).toBeInTheDocument();
|
1002
|
-
viaAction.click();
|
1003
|
-
|
1004
|
-
assertNockRequest(autocompleteScope);
|
1005
|
-
assertNockRequest(resolveErrataScope);
|
1006
|
-
assertNockRequest(scope, done);
|
1007
|
-
});
|
1008
|
-
|
1009
840
|
test('Can bulk apply via remote execution', async (done) => {
|
1010
841
|
const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
|
1011
842
|
const mockErrata = makeMockErrata({});
|
@@ -1121,49 +952,6 @@ test('Can apply errata in bulk via customized remote execution', async (done) =>
|
|
1121
952
|
assertNockRequest(scope, done);
|
1122
953
|
});
|
1123
954
|
|
1124
|
-
test('Can apply a single erratum to the host via katello agent', async (done) => {
|
1125
|
-
const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
|
1126
|
-
const mockErrata = makeMockErrata({});
|
1127
|
-
const { results } = mockErrata;
|
1128
|
-
const options = renderOptions({
|
1129
|
-
...cfWithErrataTotal(mockErrata.total),
|
1130
|
-
katelloAgentInstalled: true,
|
1131
|
-
katelloAgentEnabled: true,
|
1132
|
-
});
|
1133
|
-
|
1134
|
-
const scope = nockInstance
|
1135
|
-
.get(hostErrata)
|
1136
|
-
.query(defaultQuery)
|
1137
|
-
.reply(200, mockErrata);
|
1138
|
-
|
1139
|
-
const postBody = ({ errata_ids: errataIds }) => isEqual(errataIds, [results[0].errata_id]);
|
1140
|
-
|
1141
|
-
const resolveErrataScope = nockInstance
|
1142
|
-
.put(applyByKatelloAgentUrl, postBody)
|
1143
|
-
.reply(201, mockResolveErrataTask);
|
1144
|
-
|
1145
|
-
const { getAllByText, getByLabelText, getByText } = renderWithRedux(
|
1146
|
-
<ErrataTab />,
|
1147
|
-
options,
|
1148
|
-
);
|
1149
|
-
|
1150
|
-
await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
|
1151
|
-
const erratumActionMenu = within(getByLabelText('Select row 0').closest('tr')).getByLabelText('Actions');
|
1152
|
-
expect(erratumActionMenu).toHaveAttribute('aria-label', 'Actions');
|
1153
|
-
erratumActionMenu.click();
|
1154
|
-
|
1155
|
-
let viaAction;
|
1156
|
-
await patientlyWaitFor(() => {
|
1157
|
-
viaAction = getByText('Apply via Katello agent');
|
1158
|
-
expect(viaAction).toBeInTheDocument();
|
1159
|
-
});
|
1160
|
-
viaAction.click();
|
1161
|
-
|
1162
|
-
assertNockRequest(autocompleteScope);
|
1163
|
-
assertNockRequest(resolveErrataScope);
|
1164
|
-
assertNockRequest(scope, done);
|
1165
|
-
});
|
1166
|
-
|
1167
955
|
test('Can apply a single erratum to the host via remote execution', async (done) => {
|
1168
956
|
const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
|
1169
957
|
const mockErrata = makeMockErrata({});
|