katello 4.4.2.2 → 4.5.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/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +5 -1
- data/app/controllers/katello/api/v2/alternate_content_sources_controller.rb +98 -0
- data/app/controllers/katello/api/v2/content_export_incrementals_controller.rb +39 -3
- data/app/controllers/katello/api/v2/content_exports_controller.rb +19 -0
- data/app/controllers/katello/api/v2/content_imports_controller.rb +13 -16
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +0 -12
- data/app/controllers/katello/api/v2/content_views_controller.rb +13 -0
- data/app/controllers/katello/api/v2/environments_controller.rb +1 -1
- data/app/controllers/katello/api/v2/host_module_streams_controller.rb +8 -2
- data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +25 -3
- data/app/controllers/katello/api/v2/organizations_controller.rb +4 -2
- data/app/controllers/katello/api/v2/repositories_bulk_actions_controller.rb +1 -1
- data/app/controllers/katello/api/v2/repositories_controller.rb +9 -3
- data/app/controllers/katello/api/v2/repository_sets_controller.rb +40 -7
- data/app/controllers/katello/api/v2/subscriptions_controller.rb +2 -2
- data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +1 -1
- data/app/helpers/katello/concerns/smart_proxy_helper_extensions.rb +4 -0
- data/app/helpers/katello/hosts_and_hostgroups_helper.rb +21 -3
- data/app/lib/actions/katello/alternate_content_source/create.rb +24 -0
- data/app/lib/actions/katello/alternate_content_source/destroy.rb +27 -0
- data/app/lib/actions/katello/alternate_content_source/update.rb +41 -0
- data/app/lib/actions/katello/cdn_configuration/update.rb +2 -2
- data/app/lib/actions/katello/content_view/destroy.rb +2 -1
- data/app/lib/actions/katello/content_view/incremental_updates.rb +7 -3
- data/app/lib/actions/katello/content_view/publish.rb +7 -9
- data/app/lib/actions/katello/content_view_version/auto_create_products.rb +4 -4
- data/app/lib/actions/katello/content_view_version/auto_create_redhat_repositories.rb +6 -4
- data/app/lib/actions/katello/content_view_version/auto_create_repositories.rb +6 -4
- data/app/lib/actions/katello/content_view_version/import.rb +25 -22
- data/app/lib/actions/katello/content_view_version/import_library.rb +0 -1
- data/app/lib/actions/katello/content_view_version/import_repository.rb +21 -0
- data/app/lib/actions/katello/content_view_version/incremental_update.rb +85 -93
- data/app/lib/actions/katello/content_view_version/reset_content_view_repositories_from_metadata.rb +2 -2
- data/app/lib/actions/katello/product/content_create.rb +10 -8
- data/app/lib/actions/katello/repository/destroy.rb +36 -12
- data/app/lib/actions/katello/repository_set/disable_repository.rb +8 -3
- data/app/lib/actions/pulp3/alternate_content_source/create.rb +20 -0
- data/app/lib/actions/pulp3/alternate_content_source/create_remote.rb +20 -0
- data/app/lib/actions/pulp3/alternate_content_source/delete.rb +16 -0
- data/app/lib/actions/pulp3/alternate_content_source/delete_remote.rb +16 -0
- data/app/lib/actions/pulp3/alternate_content_source/update.rb +16 -0
- data/app/lib/actions/pulp3/alternate_content_source/update_remote.rb +17 -0
- data/app/lib/actions/pulp3/content_view_version/{import.rb → create_import.rb} +5 -5
- data/app/lib/actions/pulp3/content_view_version/create_importer.rb +4 -3
- data/app/lib/actions/pulp3/content_view_version/destroy_importer.rb +12 -1
- data/app/lib/actions/pulp3/orchestration/alternate_content_source/create.rb +18 -0
- data/app/lib/actions/pulp3/orchestration/alternate_content_source/delete.rb +23 -0
- data/app/lib/actions/pulp3/orchestration/alternate_content_source/update.rb +18 -0
- data/app/lib/actions/pulp3/orchestration/content_view_version/copy_version_units_to_library.rb +1 -1
- data/app/lib/actions/pulp3/orchestration/content_view_version/export_repository.rb +51 -0
- data/app/lib/actions/pulp3/orchestration/content_view_version/import.rb +5 -2
- data/app/lib/actions/pulp3/repository/refresh_distribution.rb +4 -1
- data/app/lib/actions/pulp3/repository/save_distribution_references.rb +2 -0
- data/app/lib/katello/api/v2/error_handling.rb +1 -0
- data/app/lib/katello/resources/cdn/katello_cdn.rb +3 -1
- data/app/lib/katello/util/errata.rb +2 -3
- data/app/lib/katello/validators/alternate_content_source_path_validator.rb +29 -0
- data/app/lib/katello/validators/content_default_http_proxy_setting_validator.rb +12 -0
- data/app/lib/katello/validators/content_view_environment_validator.rb +10 -5
- data/app/models/katello/alternate_content_source.rb +66 -0
- data/app/models/katello/authorization/alternate_content_source.rb +33 -0
- data/app/models/katello/authorization/repository.rb +3 -3
- data/app/models/katello/candlepin/repository_mapper.rb +13 -6
- data/app/models/katello/cdn_configuration.rb +15 -15
- data/app/models/katello/concerns/content_facet_host_extensions.rb +25 -0
- data/app/models/katello/concerns/host_managed_extensions.rb +7 -5
- data/app/models/katello/concerns/http_proxy_extensions.rb +14 -0
- data/app/models/katello/concerns/organization_extensions.rb +4 -2
- data/app/models/katello/concerns/setting_extensions.rb +14 -0
- data/app/models/katello/concerns/smart_proxy_extensions.rb +2 -1
- data/app/models/katello/content.rb +1 -0
- data/app/models/katello/content_credential.rb +6 -0
- data/app/models/katello/content_override.rb +7 -3
- data/app/models/katello/content_view.rb +33 -2
- data/app/models/katello/content_view_erratum_filter.rb +26 -12
- data/app/models/katello/content_view_filter.rb +4 -0
- data/app/models/katello/content_view_version.rb +12 -0
- data/app/models/katello/content_view_version_export_history.rb +3 -1
- data/app/models/katello/erratum.rb +9 -5
- data/app/models/katello/events/delete_latest_content_view_version.rb +40 -0
- data/app/models/katello/host/content_facet.rb +14 -0
- data/app/models/katello/host_available_module_stream.rb +12 -0
- data/app/models/katello/product_content.rb +1 -0
- data/app/models/katello/purpose_sla_status.rb +1 -1
- data/app/models/katello/purpose_status.rb +2 -2
- data/app/models/katello/repository.rb +7 -4
- data/app/models/katello/root_repository.rb +1 -1
- data/app/models/katello/smart_proxy_alternate_content_source.rb +8 -0
- data/app/models/katello/sync_plan.rb +1 -1
- data/app/presenters/katello/product_content_presenter.rb +15 -0
- data/app/services/katello/applicable_host_queue.rb +1 -1
- data/app/services/katello/content_unit_indexer.rb +2 -1
- data/app/services/katello/product_content_finder.rb +12 -2
- data/app/services/katello/pulp3/alternate_content_source.rb +117 -0
- data/app/services/katello/pulp3/api/file.rb +8 -0
- data/app/services/katello/pulp3/api/yum.rb +8 -0
- data/app/services/katello/pulp3/content_view_version/export.rb +27 -5
- data/app/services/katello/pulp3/content_view_version/import.rb +97 -71
- data/app/services/katello/pulp3/content_view_version/import_export_common.rb +4 -4
- data/app/services/katello/pulp3/content_view_version/import_gpg_keys.rb +13 -11
- data/app/services/katello/pulp3/content_view_version/import_validator.rb +67 -72
- data/app/services/katello/pulp3/content_view_version/importable_products.rb +40 -24
- data/app/services/katello/pulp3/content_view_version/importable_repositories.rb +88 -39
- data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +2 -2
- data/app/services/katello/pulp3/content_view_version/metadata_map.rb +117 -0
- data/app/services/katello/pulp3/pulp_content_unit.rb +6 -1
- data/app/services/katello/pulp3/repository/yum.rb +70 -12
- data/app/services/katello/pulp3/repository.rb +7 -91
- data/app/services/katello/pulp3/service_common.rb +66 -0
- data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +4 -1
- data/app/services/katello/ui_notifications/content_view/delete_latest_version_failure.rb +22 -0
- data/app/views/foreman/job_templates/change_content_source.erb +1 -1
- data/app/views/foreman/job_templates/install_errata.erb +5 -5
- data/app/views/foreman/job_templates/install_errata_by_search_query.erb +7 -6
- data/app/views/foreman/job_templates/install_group.erb +4 -4
- data/app/views/foreman/job_templates/install_package.erb +4 -4
- data/app/views/foreman/job_templates/install_packages_by_search_query.erb +3 -3
- data/app/views/foreman/job_templates/remove_group.erb +4 -4
- data/app/views/foreman/job_templates/remove_package.erb +4 -4
- data/app/views/foreman/job_templates/remove_packages_by_search_query.erb +3 -3
- data/app/views/foreman/job_templates/resolve_traces.erb +2 -2
- data/app/views/foreman/job_templates/restart_services.erb +3 -3
- data/app/views/foreman/job_templates/update_group.erb +4 -4
- data/app/views/foreman/job_templates/update_package.erb +4 -4
- data/app/views/foreman/job_templates/update_packages_by_search_query.erb +3 -3
- data/app/views/katello/api/v2/alternate_content_sources/base.json.rabl +15 -0
- data/app/views/katello/api/v2/alternate_content_sources/index.json.rabl +7 -0
- data/app/views/katello/api/v2/alternate_content_sources/show.json.rabl +3 -0
- data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +1 -1
- data/app/views/katello/api/v2/content_view_version_export_histories/show.json.rabl +2 -3
- data/app/views/katello/api/v2/content_view_versions/base.json.rabl +1 -1
- data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
- data/app/views/katello/api/v2/environments/show.json.rabl +2 -0
- data/app/views/katello/api/v2/errata/_counts.json.rabl +2 -2
- data/app/views/katello/api/v2/host_module_streams/base.json.rabl +2 -2
- data/app/views/katello/api/v2/hosts/host_collections.json.rabl +1 -1
- data/app/views/katello/api/v2/organizations/show.json.rabl +7 -1
- data/app/views/katello/api/v2/repositories/show.json.rabl +2 -1
- data/app/views/katello/sync_management/_repo.html.erb +8 -29
- data/config/routes/api/v2.rb +7 -0
- data/db/migrate/20150930183738_migrate_content_hosts.rb +0 -399
- data/db/migrate/20171025163149_remove_use_pulp_oauth_setting.rb +1 -1
- data/db/migrate/20171114150937_cleanup_installed_packages.rb +1 -1
- data/db/migrate/20180402160223_clean_up_force_post_sync_action_setting.rb +1 -1
- data/db/migrate/20211129200124_remove_dependency_solving_algorithm_setting.rb +1 -1
- data/db/migrate/20211220185935_clean_duplicate_content_units.rb +10 -12
- data/db/migrate/20220110223754_update_disconnected_settings.rb +5 -5
- data/db/migrate/20220117151612_add_alternate_content_sources.rb +48 -0
- data/db/migrate/20220124191056_add_type_to_cdn_configuration.rb +9 -4
- data/db/migrate/20220209203251_add_generated_for_to_content_views.rb +13 -0
- data/db/migrate/20220209205137_expand_sync_timeout_settings.rb +7 -7
- data/db/migrate/20220228173251_remove_drpm_from_ignorable_content.rb +12 -0
- data/db/migrate/20220404190836_delete_old_setting_data.rb +9 -0
- data/db/migrate/20220405220616_update_cdn_configuration_type.rb +11 -0
- data/db/migrate/20220419193414_content_settings_to_dsl_category.rb +5 -0
- data/db/seeds.d/110-content-view-autopublish.rb +13 -0
- data/db/seeds.d/150-module_job_templates.rb +1 -1
- data/engines/bastion/README.md +1 -0
- data/engines/bastion/app/assets/javascripts/bastion/components/bst-modal.directive.js +1 -0
- data/engines/bastion/app/views/bastion/layouts/assets.html.erb +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.controller.js +10 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-module-streams.controller.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-installed.controller.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-traces.controller.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +8 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/content.service.js +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-deb-repositories.html +26 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-debs.html +27 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.controller.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.routes.js +22 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/environments.html +13 -7
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +63 -17
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +7 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +10 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +21 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +8 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +7 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/discovery-create.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-create.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.routes.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/content-access-mode-banner.html +6 -1
- data/lib/katello/engine.rb +1 -5
- data/lib/katello/permission_creator.rb +32 -4
- data/lib/katello/plugin.rb +378 -4
- data/lib/katello/tasks/reset.rake.bak +67 -0
- data/lib/katello/tasks/update_content_default_http_proxy.rake +2 -3
- data/lib/katello/version.rb +1 -1
- data/locale/action_names.rb +47 -41
- data/locale/bn/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn/katello.po +820 -106
- data/locale/bn/katello.po.time_stamp +0 -0
- data/locale/cs/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs/katello.po +818 -104
- data/locale/cs/katello.po.time_stamp +0 -0
- data/locale/de/LC_MESSAGES/katello.mo +0 -0
- data/locale/de/katello.po +893 -179
- data/locale/de/katello.po.time_stamp +0 -0
- data/locale/en/LC_MESSAGES/katello.mo +0 -0
- data/locale/en/katello.po +817 -103
- data/locale/en/katello.po.time_stamp +0 -0
- data/locale/es/LC_MESSAGES/katello.mo +0 -0
- data/locale/es/katello.po +882 -168
- data/locale/es/katello.po.time_stamp +0 -0
- data/locale/fr/LC_MESSAGES/katello.mo +0 -0
- data/locale/fr/katello.po +1219 -505
- data/locale/fr/katello.po.time_stamp +0 -0
- data/locale/gu/LC_MESSAGES/katello.mo +0 -0
- data/locale/gu/katello.po +826 -112
- data/locale/gu/katello.po.time_stamp +0 -0
- data/locale/hi/LC_MESSAGES/katello.mo +0 -0
- data/locale/hi/katello.po +826 -112
- data/locale/hi/katello.po.time_stamp +0 -0
- data/locale/it/LC_MESSAGES/katello.mo +0 -0
- data/locale/it/katello.po +863 -148
- data/locale/it/katello.po.time_stamp +0 -0
- data/locale/ja/LC_MESSAGES/katello.mo +0 -0
- data/locale/ja/katello.po +1216 -499
- data/locale/ja/katello.po.time_stamp +0 -0
- data/locale/katello.pot +3847 -2507
- data/locale/kn/LC_MESSAGES/katello.mo +0 -0
- data/locale/kn/katello.po +826 -112
- data/locale/kn/katello.po.time_stamp +0 -0
- data/locale/ko/LC_MESSAGES/katello.mo +0 -0
- data/locale/ko/katello.po +912 -198
- data/locale/ko/katello.po.time_stamp +0 -0
- data/locale/mr/LC_MESSAGES/katello.mo +0 -0
- data/locale/mr/katello.po +826 -112
- data/locale/mr/katello.po.time_stamp +0 -0
- data/locale/or/LC_MESSAGES/katello.mo +0 -0
- data/locale/or/katello.po +826 -112
- data/locale/or/katello.po.time_stamp +0 -0
- data/locale/pa/LC_MESSAGES/katello.mo +0 -0
- data/locale/pa/katello.po +826 -112
- data/locale/pa/katello.po.time_stamp +0 -0
- data/locale/pt/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt/katello.po +817 -103
- data/locale/pt/katello.po.time_stamp +0 -0
- data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt_BR/katello.po +879 -165
- data/locale/pt_BR/katello.po.time_stamp +0 -0
- data/locale/ru/LC_MESSAGES/katello.mo +0 -0
- data/locale/ru/katello.po +927 -213
- data/locale/ru/katello.po.time_stamp +0 -0
- data/locale/ta/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta/katello.po +820 -106
- data/locale/ta/katello.po.time_stamp +0 -0
- data/locale/te/LC_MESSAGES/katello.mo +0 -0
- data/locale/te/katello.po +826 -112
- data/locale/te/katello.po.time_stamp +0 -0
- data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_CN/katello.po +1202 -486
- data/locale/zh_CN/katello.po.time_stamp +0 -0
- data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_TW/katello.po +856 -142
- data/locale/zh_TW/katello.po.time_stamp +0 -0
- data/webpack/components/EditableTextInput/EditableTextInput.js +20 -5
- data/webpack/components/Errata/index.js +38 -8
- data/webpack/components/Packages/index.js +1 -4
- data/webpack/components/Search/Search.js +18 -3
- data/webpack/components/SelectAllCheckbox/index.js +1 -0
- data/webpack/components/SelectableDropdown/SelectableDropdown.js +4 -2
- data/webpack/components/Table/EmptyStateMessage.js +21 -7
- data/webpack/components/Table/MainTable.js +29 -4
- data/webpack/components/Table/TableHooks.js +63 -19
- data/webpack/components/Table/TableWrapper.js +4 -2
- data/webpack/components/Table/components/SortableColumnHeaders.js +19 -0
- data/webpack/components/Table/components/TranslatedPlural.js +57 -0
- data/webpack/components/TypeAhead/TypeAhead.js +8 -0
- data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +13 -11
- data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +5 -2
- data/webpack/components/extensions/HostDetails/ActionsBar/index.js +27 -0
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +256 -0
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +202 -0
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/HostContentViewActions.js +19 -0
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/HostContentViewConstants.js +2 -0
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/changeHostCVModal.test.js +131 -0
- data/webpack/components/extensions/HostDetails/Cards/{__tests__ → ContentViewDetailsCard/__tests__}/contentViewDetailsCard.test.js +22 -0
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/contentViews.fixtures.json +443 -0
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/envPaths.fixtures.json +320 -0
- data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +57 -33
- data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.scss +3 -0
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsActions.js +30 -0
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.js +187 -0
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsConstants.js +7 -0
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +227 -0
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsSelectors.js +18 -0
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/availableHostCollections.fixtures.json +106 -0
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsCard.test.js +110 -0
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsModal.test.js +235 -0
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/removableHostCollections.fixtures.json +45 -0
- data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +33 -8
- data/webpack/components/extensions/HostDetails/DetailsTabCards/InstalledProductsCard.js +44 -0
- data/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js +107 -0
- data/webpack/components/extensions/HostDetails/DetailsTabCards/SystemPropertiesCardExtensions.js +38 -0
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +62 -39
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/HostErrataActions.js +1 -7
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsActions.js +1 -3
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsConstants.js +28 -0
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +486 -116
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/__tests__/moduleStreamsTab.test.js +147 -1
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/__tests__/modules.fixtures.json +6 -3
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/HostPackagesActions.js +1 -7
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +2 -1
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +48 -19
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +35 -47
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +1 -0
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsActions.js +33 -54
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsConstants.js +20 -0
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +269 -132
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +47 -11
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +30 -42
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +36 -1
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +94 -46
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +18 -2
- data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +6 -0
- data/webpack/containers/Application/config.js +5 -0
- data/webpack/global_index.js +30 -7
- data/webpack/global_test_setup.js +13 -0
- data/webpack/redux/actions/RedHatRepositories/enabled.js +2 -1
- data/webpack/redux/actions/RedHatRepositories/helpers.js +9 -8
- data/webpack/scenes/AlternateContentSources/ACSActions.js +53 -0
- data/webpack/scenes/AlternateContentSources/ACSConstants.js +4 -0
- data/webpack/scenes/AlternateContentSources/ACSIndexPage.js +23 -0
- data/webpack/scenes/AlternateContentSources/ACSSelectors.js +15 -0
- data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +152 -0
- data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsIndex.fixtures.json +91 -0
- data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +67 -0
- data/webpack/scenes/AlternateContentSources/index.js +4 -0
- data/webpack/scenes/Content/Details/ContentRepositories.js +1 -0
- data/webpack/scenes/Content/Table/ContentTable.js +1 -0
- data/webpack/scenes/ContentViews/ContentViewsActions.js +6 -2
- data/webpack/scenes/ContentViews/ContentViewsConstants.js +11 -3
- data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +2 -1
- data/webpack/scenes/ContentViews/Create/ContentViewFormComponents.js +10 -1
- data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +4 -3
- data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +1 -1
- data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +7 -5
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionFinish.js +29 -21
- data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +15 -8
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +3 -3
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +4 -4
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +3 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +4 -4
- data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +34 -8
- data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +33 -29
- data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +130 -79
- data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +17 -3
- data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +2 -1
- data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +2 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +6 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +41 -21
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +38 -20
- data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +2 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +8 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +9 -1
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +2 -1
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVRpmMatchContentModal.js +1 -0
- data/webpack/scenes/ContentViews/Details/Filters/Rules/ContainerTag/AddEditContainerTagRuleModal.js +27 -12
- data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +39 -17
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +27 -10
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +46 -23
- data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +3 -2
- data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +5 -2
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +161 -108
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +7 -7
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewRepoAdd.fixture.json +1 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/ActionSummary.js +58 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteContextWrapper.js +45 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteHelpers.js +30 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteModal.js +56 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ConfirmBulkDelete.js +126 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/FinishBulkDelete.js +61 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignActivationKeys.js +196 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignHosts.js +220 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReviewEnvironments.js +104 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteModal.test.js +122 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteVersions.fixtures.json +600 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/contentView.fixtures.json +1504 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/contentViewVersion.fixtures.json +936 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/environmentPaths.fixtures.json +261 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/hosts.fixtures.json +163 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/bulkDeleteSteps.js +79 -0
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +192 -167
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +2 -5
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionDeleteFinish.js +38 -53
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +6 -12
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +1 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +1 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +1 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +8 -20
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +23 -13
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +3 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.fixtures.json +4 -4
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +0 -3
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +4 -4
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +12 -14
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetails.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +96 -117
- data/webpack/scenes/ContentViews/Publish/PublishContentViewWizard.js +13 -19
- data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +9 -20
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +165 -148
- data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +2 -0
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +4 -4
- data/webpack/scenes/ContentViews/components/ContentViewIcon.js +14 -3
- data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +1 -1
- data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +4 -3
- data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +9 -5
- data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.scss +6 -1
- data/webpack/scenes/ContentViews/components/TaskPresenter/TaskPresenter.js +40 -35
- data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +2 -2
- data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +1 -1
- data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +4 -4
- data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsModal.test.js +1 -1
- data/webpack/scenes/ContentViews/helpers.js +3 -0
- data/webpack/scenes/Hosts/ChangeContentSource/helpers.js +5 -0
- data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +3 -3
- data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepository.js +2 -1
- data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/EnabledRepository.test.js +2 -0
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationConstants.js +3 -3
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnTypeForm.js +2 -0
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/{AirGappedTypeForm.js → ExportSyncForm.js} +7 -6
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/{UpstreamServerTypeForm.js → NetworkSyncForm.js} +15 -7
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/{AirGappedTypeForm.test.js → ExportSyncForm.test.js} +4 -4
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/{UpstreamServerTypeForm.test.js → NetworkSyncForm.test.js} +8 -8
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/index.js +11 -11
- data/webpack/scenes/Subscriptions/SubscriptionConstants.js +1 -0
- data/webpack/scenes/Subscriptions/SubscriptionsPage.js +8 -7
- data/webpack/scenes/Tasks/TaskActions.js +6 -0
- data/webpack/scenes/Tasks/TaskSelectors.js +11 -0
- data/webpack/scenes/Tasks/helpers.js +33 -5
- data/webpack/utils/helpers.js +2 -0
- metadata +158 -40
- data/app/models/setting/content.rb +0 -201
- data/webpack/components/Table/__test__/useBulkSelect.test.js +0 -99
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard.js +0 -96
- data/webpack/scenes/ContentViews/Details/DetailsContainer.js +0 -36
data/lib/katello/plugin.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'katello/permission_creator'
|
2
|
-
require 'katello/repository_types
|
3
|
-
require 'katello/host_status_manager
|
2
|
+
require 'katello/repository_types'
|
3
|
+
require 'katello/host_status_manager'
|
4
4
|
# rubocop:disable Metrics/BlockLength
|
5
|
+
|
5
6
|
Foreman::Plugin.register :katello do
|
6
7
|
requires_foreman '>= 2.6'
|
7
8
|
|
@@ -154,7 +155,7 @@ Foreman::Plugin.register :katello do
|
|
154
155
|
menu :top_menu,
|
155
156
|
:ansible_collections,
|
156
157
|
:caption => N_('Ansible Collections'),
|
157
|
-
:url => '/
|
158
|
+
:url => '/ansible_collections',
|
158
159
|
:url_hash => {:controller => 'katello/api/v2/ansible_collections',
|
159
160
|
:action => 'index'},
|
160
161
|
:engine => Katello::Engine,
|
@@ -194,6 +195,15 @@ Foreman::Plugin.register :katello do
|
|
194
195
|
:after => :content_hosts,
|
195
196
|
:turbolinks => false
|
196
197
|
|
198
|
+
menu :labs_menu,
|
199
|
+
:alternate_content_sources,
|
200
|
+
:url => '/labs/alternate_content_sources',
|
201
|
+
:url_hash => {:controller => 'katello/api/v2/alternate_content_sources_controller',
|
202
|
+
:action => 'index'},
|
203
|
+
:caption => N_('Alternate Content Sources'),
|
204
|
+
:parent => :lab_features_menu,
|
205
|
+
:turbolinks => false
|
206
|
+
|
197
207
|
extend_template_helpers Katello::KatelloUrlsHelper
|
198
208
|
extend_template_helpers Katello::Concerns::BaseTemplateScopeExtensions
|
199
209
|
|
@@ -216,7 +226,7 @@ Foreman::Plugin.register :katello do
|
|
216
226
|
:content_facet_attributes => [:content_view_id, :lifecycle_environment_id, :content_source_id,
|
217
227
|
:host, :kickstart_repository_id],
|
218
228
|
:subscription_facet_attributes => [:release_version, :autoheal, :purpose_usage, :purpose_role, :service_level, :host,
|
219
|
-
{:installed_products => [:product_id, :product_name, :arch, :version]}, :facts, :hypervisor_guest_uuids => [], :purpose_addon_ids => []]
|
229
|
+
{:installed_products => [:product_id, :product_name, :arch, :version]}, :facts, {:hypervisor_guest_uuids => []}, {:purpose_addon_ids => []}]
|
220
230
|
parameter_filter ::Hostgroup, :content_view_id, :lifecycle_environment_id, :content_source_id,
|
221
231
|
:kickstart_repository_id
|
222
232
|
parameter_filter Organization, :label, :service_level
|
@@ -302,6 +312,370 @@ Foreman::Plugin.register :katello do
|
|
302
312
|
multiple_actions_provider :hosts_change_content_source
|
303
313
|
end
|
304
314
|
|
315
|
+
settings do
|
316
|
+
category :katello, N_('Content') do
|
317
|
+
http_proxy_select = [{
|
318
|
+
name: _("HTTP Proxies"),
|
319
|
+
class: 'HttpProxy',
|
320
|
+
scope: 'all',
|
321
|
+
value_method: 'name',
|
322
|
+
text_method: 'name_and_url'
|
323
|
+
}]
|
324
|
+
download_policies = proc { hashify_parameters(::Katello::RootRepository::DOWNLOAD_POLICIES) }
|
325
|
+
proxy_download_policies = proc { hashify_parameters(::SmartProxy::DOWNLOAD_POLICIES) }
|
326
|
+
|
327
|
+
def hashify_parameters(parameters)
|
328
|
+
Hash[parameters.map { |p| [p, p] }]
|
329
|
+
end
|
330
|
+
|
331
|
+
def katello_template_setting_values(name)
|
332
|
+
templates = ProvisioningTemplate.where(:template_kind => TemplateKind.where(:name => name))
|
333
|
+
templates.each_with_object({}) { |tmpl, hash| hash[tmpl.name] = tmpl.name }
|
334
|
+
end
|
335
|
+
|
336
|
+
setting 'content_default_http_proxy',
|
337
|
+
type: :string,
|
338
|
+
default: nil,
|
339
|
+
full_name: N_('Default HTTP Proxy'),
|
340
|
+
description: N_("Default HTTP proxy for syncing content"),
|
341
|
+
collection: proc { http_proxy_select },
|
342
|
+
include_blank: N_("no global default")
|
343
|
+
|
344
|
+
setting 'cdn_ssl_version',
|
345
|
+
type: :string,
|
346
|
+
default: nil,
|
347
|
+
full_name: N_('CDN SSL version'),
|
348
|
+
description: N_("SSL version used to communicate with the CDN"),
|
349
|
+
collection: proc { hashify_parameters(Katello::Resources::CDN::SUPPORTED_SSL_VERSIONS) }
|
350
|
+
|
351
|
+
setting 'katello_default_provision',
|
352
|
+
type: :string,
|
353
|
+
default: 'Kickstart default',
|
354
|
+
full_name: N_('Default synced OS provisioning template'),
|
355
|
+
description: N_("Default provisioning template for Operating Systems created from synced content"),
|
356
|
+
collection: proc { katello_template_setting_values("provision") }
|
357
|
+
|
358
|
+
setting 'katello_default_finish',
|
359
|
+
type: :string,
|
360
|
+
default: 'Kickstart default finish',
|
361
|
+
full_name: N_('Default synced OS finish template'),
|
362
|
+
description: N_("Default finish template for new Operating Systems created from synced content"),
|
363
|
+
collection: proc { katello_template_setting_values("finish") }
|
364
|
+
|
365
|
+
setting 'katello_default_user_data',
|
366
|
+
type: :string,
|
367
|
+
default: 'Kickstart default user data',
|
368
|
+
full_name: N_('Default synced OS user-data'),
|
369
|
+
description: N_("Default user data for new Operating Systems created from synced content"),
|
370
|
+
collection: proc { katello_template_setting_values("user_data") }
|
371
|
+
|
372
|
+
setting 'katello_default_PXELinux',
|
373
|
+
type: :string,
|
374
|
+
default: 'Kickstart default PXELinux',
|
375
|
+
full_name: N_('Default synced OS PXELinux template'),
|
376
|
+
description: N_("Default PXELinux template for new Operating Systems created from synced content"),
|
377
|
+
collection: proc { katello_template_setting_values("PXELinux") }
|
378
|
+
|
379
|
+
setting 'katello_default_PXEGrub',
|
380
|
+
type: :string,
|
381
|
+
default: 'Kickstart default PXEGrub',
|
382
|
+
full_name: N_('Default synced OS PXEGrub template'),
|
383
|
+
description: N_("Default PXEGrub template for new Operating Systems created from synced content"),
|
384
|
+
collection: proc { katello_template_setting_values("PXEGrub") }
|
385
|
+
|
386
|
+
setting 'katello_default_PXEGrub2',
|
387
|
+
type: :string,
|
388
|
+
default: 'Kickstart default PXEGrub2',
|
389
|
+
full_name: N_('Default synced OS PXEGrub2 template'),
|
390
|
+
description: N_("Default PXEGrub2 template for new Operating Systems created from synced content"),
|
391
|
+
collection: proc { katello_template_setting_values("PXEGrub2") }
|
392
|
+
|
393
|
+
setting 'katello_default_iPXE',
|
394
|
+
type: :string,
|
395
|
+
default: 'Kickstart default iPXE',
|
396
|
+
full_name: N_('Default synced OS iPXE template'),
|
397
|
+
description: N_("Default iPXE template for new Operating Systems created from synced content"),
|
398
|
+
collection: proc { katello_template_setting_values("iPXE") }
|
399
|
+
|
400
|
+
setting 'katello_default_ptable',
|
401
|
+
type: :string,
|
402
|
+
default: 'Kickstart default',
|
403
|
+
full_name: N_('Default synced OS partition table'),
|
404
|
+
description: N_("Default partitioning table for new Operating Systems created from synced content"),
|
405
|
+
collection: proc { Hash[Template.all.where(:type => "Ptable").map { |tmp| [tmp[:name], tmp[:name]] }] }
|
406
|
+
|
407
|
+
setting 'katello_default_kexec',
|
408
|
+
type: :string,
|
409
|
+
default: 'Discovery Red Hat kexec',
|
410
|
+
full_name: N_('Default synced OS kexec template'),
|
411
|
+
description: N_("Default kexec template for new Operating Systems created from synced content"),
|
412
|
+
collection: proc { katello_template_setting_values("kexec") }
|
413
|
+
|
414
|
+
setting 'katello_default_atomic_provision',
|
415
|
+
type: :string,
|
416
|
+
default: 'Atomic Kickstart default',
|
417
|
+
full_name: N_('Default synced OS Atomic template'),
|
418
|
+
description: N_("Default provisioning template for new Atomic Operating Systems created from synced content"),
|
419
|
+
collection: proc { katello_template_setting_values("provision") }
|
420
|
+
|
421
|
+
setting 'manifest_refresh_timeout',
|
422
|
+
type: :integer,
|
423
|
+
default: 60 * 20,
|
424
|
+
full_name: N_('Timeout when refreshing a manifest (in seconds)'),
|
425
|
+
description: N_("Manifest refresh timeout")
|
426
|
+
|
427
|
+
setting 'content_action_accept_timeout',
|
428
|
+
type: :integer,
|
429
|
+
default: 20,
|
430
|
+
full_name: N_('Accept action timeout'),
|
431
|
+
description: N_("Time in seconds to wait for a host to pick up a katello-agent action")
|
432
|
+
|
433
|
+
setting 'content_action_finish_timeout',
|
434
|
+
type: :integer,
|
435
|
+
default: 3600,
|
436
|
+
full_name: N_('Finish action timeout'),
|
437
|
+
description: N_("Time in seconds to wait for a host to finish a katello-agent action")
|
438
|
+
|
439
|
+
setting 'subscription_connection_enabled',
|
440
|
+
type: :boolean,
|
441
|
+
default: true,
|
442
|
+
full_name: N_('Subscription connection enabled'),
|
443
|
+
description: N_("Can communicate with the Red Hat Portal for subscriptions.")
|
444
|
+
|
445
|
+
setting 'errata_status_installable',
|
446
|
+
type: :boolean,
|
447
|
+
default: false,
|
448
|
+
full_name: N_('Installable errata from content view'),
|
449
|
+
description: N_("Calculate errata host status based only on errata in a host's content view and lifecycle environment")
|
450
|
+
|
451
|
+
setting 'restrict_composite_view',
|
452
|
+
type: :boolean,
|
453
|
+
default: false,
|
454
|
+
full_name: N_('Restrict composite content view promotion'),
|
455
|
+
description: N_("If this is enabled, a composite content view may not be published or promoted unless the component content view versions that it includes exist in the target environment.")
|
456
|
+
|
457
|
+
setting 'check_services_before_actions',
|
458
|
+
type: :boolean,
|
459
|
+
default: true,
|
460
|
+
full_name: N_('Check services before actions'),
|
461
|
+
description: N_("Whether or not to check the status of backend services such as pulp and candlepin prior to performing some actions.")
|
462
|
+
|
463
|
+
setting 'foreman_proxy_content_batch_size',
|
464
|
+
type: :integer,
|
465
|
+
default: 100,
|
466
|
+
full_name: N_('Batch size to sync repositories in.'),
|
467
|
+
description: N_("How many repositories should be synced concurrently on the capsule. A smaller number may lead to longer sync times. A larger number will increase dynflow load.")
|
468
|
+
|
469
|
+
setting 'foreman_proxy_content_auto_sync',
|
470
|
+
type: :boolean,
|
471
|
+
default: true,
|
472
|
+
full_name: N_('Sync Smart Proxies after content view promotion'),
|
473
|
+
description: N_("Whether or not to auto sync the Smart Proxies after a content view promotion.")
|
474
|
+
|
475
|
+
setting 'download_rate_limit',
|
476
|
+
type: :integer,
|
477
|
+
default: 0,
|
478
|
+
full_name: N_('Download rate limit'),
|
479
|
+
description: N_("Maximum download rate when syncing a repository (requests per second). Use 0 for no limit.")
|
480
|
+
|
481
|
+
setting 'default_download_policy',
|
482
|
+
type: :string,
|
483
|
+
default: "immediate",
|
484
|
+
full_name: N_('Default Custom Repository download policy'),
|
485
|
+
description: N_("Default download policy for custom repositories (either 'immediate' or 'on_demand')"),
|
486
|
+
collection: download_policies
|
487
|
+
|
488
|
+
setting 'default_redhat_download_policy',
|
489
|
+
type: :string,
|
490
|
+
default: "on_demand",
|
491
|
+
full_name: N_('Default Red Hat Repository download policy'),
|
492
|
+
description: N_("Default download policy for enabled Red Hat repositories (either 'immediate' or 'on_demand')"),
|
493
|
+
collection: download_policies
|
494
|
+
|
495
|
+
setting 'default_proxy_download_policy',
|
496
|
+
type: :string,
|
497
|
+
default: "on_demand",
|
498
|
+
full_name: N_('Default Smart Proxy download policy'),
|
499
|
+
description: N_("Default download policy for Smart Proxy syncs (either 'inherit', immediate', or 'on_demand')"),
|
500
|
+
collection: proxy_download_policies
|
501
|
+
|
502
|
+
setting 'pulp_docker_registry_port',
|
503
|
+
type: :integer,
|
504
|
+
default: 5000,
|
505
|
+
full_name: N_('Pulp Docker registry port'),
|
506
|
+
description: N_("The port used by Pulp Crane to provide Docker Registries")
|
507
|
+
|
508
|
+
setting 'pulp_export_destination',
|
509
|
+
type: :string,
|
510
|
+
default: "/var/lib/pulp/katello-export",
|
511
|
+
full_name: N_('Pulp export destination filepath'),
|
512
|
+
description: N_("On-disk location for exported repositories")
|
513
|
+
|
514
|
+
setting 'pulpcore_export_destination',
|
515
|
+
type: :string,
|
516
|
+
default: "/var/lib/pulp/exports",
|
517
|
+
full_name: N_('Pulp 3 export destination filepath'),
|
518
|
+
description: N_("On-disk location for pulp 3 exported repositories")
|
519
|
+
|
520
|
+
setting 'pulp_client_key',
|
521
|
+
type: :string,
|
522
|
+
default: "/etc/pki/katello/private/pulp-client.key",
|
523
|
+
full_name: N_('Pulp client key'),
|
524
|
+
description: N_("Path for ssl key used for pulp server auth")
|
525
|
+
|
526
|
+
setting 'pulp_client_cert',
|
527
|
+
type: :string,
|
528
|
+
default: "/etc/pki/katello/certs/pulp-client.crt",
|
529
|
+
full_name: N_('Pulp client cert'),
|
530
|
+
description: N_("Path for ssl cert used for pulp server auth")
|
531
|
+
|
532
|
+
setting 'sync_total_timeout',
|
533
|
+
type: :integer,
|
534
|
+
default: 3600,
|
535
|
+
full_name: N_('Sync Total Timeout'),
|
536
|
+
description: N_("The maximum number of second that Pulp can take to do a single sync operation, e.g., download a single metadata file.")
|
537
|
+
|
538
|
+
setting 'sync_connect_timeout_v2',
|
539
|
+
type: :integer,
|
540
|
+
default: 60,
|
541
|
+
full_name: N_('Sync Connect Timeout'),
|
542
|
+
description: N_("The maximum number of seconds for Pulp to establish a new connection or for waiting for a free connection from a pool if pool connection limits are exceeded.")
|
543
|
+
|
544
|
+
setting 'sync_sock_connect_timeout',
|
545
|
+
type: :integer,
|
546
|
+
default: 60,
|
547
|
+
full_name: N_('Sync Sock Connect Timeout'),
|
548
|
+
description: N_("The maximum number of seconds for Pulp to connect to a peer for a new connection not given from a pool.")
|
549
|
+
|
550
|
+
setting 'sync_sock_read_timeout',
|
551
|
+
type: :integer,
|
552
|
+
default: 3600,
|
553
|
+
full_name: N_('Sync Sock Read Timeout'),
|
554
|
+
description: N_("The maximum number of seconds that Pulp can take to download a file, not counting connection time.")
|
555
|
+
|
556
|
+
setting 'remote_execution_by_default',
|
557
|
+
type: :boolean,
|
558
|
+
default: false,
|
559
|
+
full_name: N_('Use remote execution by default'),
|
560
|
+
description: N_("If this is enabled, remote execution is used instead of katello-agent for remote actions")
|
561
|
+
|
562
|
+
setting 'unregister_delete_host',
|
563
|
+
type: :boolean,
|
564
|
+
default: false,
|
565
|
+
full_name: N_('Delete Host upon unregister'),
|
566
|
+
description: N_("When unregistering a host via subscription-manager, also delete the host record. Managed resources linked to host such as virtual machines and DNS records may also be deleted.")
|
567
|
+
|
568
|
+
setting 'register_hostname_fact',
|
569
|
+
type: :string,
|
570
|
+
default: '',
|
571
|
+
full_name: N_('Subscription manager name registration fact'),
|
572
|
+
description: N_("When registering a host via subscription-manager, force use the specified fact (in the form of 'fact.fact')")
|
573
|
+
|
574
|
+
setting 'register_hostname_fact_strict_match',
|
575
|
+
type: :boolean,
|
576
|
+
default: false,
|
577
|
+
full_name: N_('Subscription manager name registration fact strict matching'),
|
578
|
+
description: N_('If this is enabled, and register_hostname_fact is set and provided, registration will look for a new host by name only using that fact, and will skip all hostname matching')
|
579
|
+
|
580
|
+
setting 'default_location_subscribed_hosts',
|
581
|
+
type: :string,
|
582
|
+
default: nil,
|
583
|
+
full_name: N_('Default location for subscribed hosts'),
|
584
|
+
description: N_('Default Location where new subscribed hosts will put upon registration'),
|
585
|
+
collection: proc { Hash[Location.unscoped.all.map { |loc| [loc[:title], loc[:title]] }] }
|
586
|
+
|
587
|
+
setting 'expire_soon_days',
|
588
|
+
type: :integer,
|
589
|
+
default: 120,
|
590
|
+
full_name: N_('Expire soon days'),
|
591
|
+
description: N_('The number of days remaining in a subscription before you will be reminded about renewing it.')
|
592
|
+
|
593
|
+
setting 'content_view_solve_dependencies',
|
594
|
+
type: :boolean,
|
595
|
+
default: false,
|
596
|
+
full_name: N_('content view Dependency Solving Default'),
|
597
|
+
description: N_('The default dependency solving value for new content views.')
|
598
|
+
|
599
|
+
setting 'host_dmi_uuid_duplicates',
|
600
|
+
type: :array,
|
601
|
+
default: [],
|
602
|
+
full_name: N_('Host Duplicate DMI UUIDs'),
|
603
|
+
description: N_("If hosts fail to register because of duplicate DMI UUIDs, add their comma-separated values here. Subsequent registrations will generate a unique DMI UUID for the affected hosts.")
|
604
|
+
|
605
|
+
setting 'host_profile_assume',
|
606
|
+
type: :boolean,
|
607
|
+
default: true,
|
608
|
+
full_name: N_('Host Profile Assume'),
|
609
|
+
description: N_("Allow new host registrations to assume registered profiles with matching hostname as long as the registering DMI UUID is not used by another host.")
|
610
|
+
|
611
|
+
setting 'host_profile_assume_build_can_change',
|
612
|
+
type: :boolean,
|
613
|
+
default: false,
|
614
|
+
full_name: N_('Host Profile Can Change In Build'),
|
615
|
+
description: N_("Allow host registrations to bypass 'Host Profile Assume' as long as the host is in build mode.")
|
616
|
+
|
617
|
+
setting 'host_re_register_build_only',
|
618
|
+
type: :boolean,
|
619
|
+
default: false,
|
620
|
+
full_name: N_('Host Can Re-Register Only In Build'),
|
621
|
+
description: N_("Allow hosts to re-register themselves only when they are in build mode")
|
622
|
+
|
623
|
+
setting 'host_tasks_workers_pool_size',
|
624
|
+
type: :integer,
|
625
|
+
default: 5,
|
626
|
+
full_name: N_('Host Tasks Workers Pool Size'),
|
627
|
+
description: N_("Amount of workers in the pool to handle the execution of host-related tasks. When set to 0, the default queue will be used instead. Restart of the dynflowd/foreman-tasks service is required.")
|
628
|
+
|
629
|
+
setting 'applicability_batch_size',
|
630
|
+
type: :integer,
|
631
|
+
default: 50,
|
632
|
+
full_name: N_('Applicability Batch Size'),
|
633
|
+
description: N_("Number of host applicability calculations to process per task.")
|
634
|
+
|
635
|
+
setting 'autosearch_while_typing',
|
636
|
+
type: :boolean,
|
637
|
+
default: true,
|
638
|
+
full_name: N_('Autosearch'),
|
639
|
+
description: N_('For pages that support it, automatically perform search while typing in search input.')
|
640
|
+
|
641
|
+
setting 'autosearch_delay',
|
642
|
+
type: :integer,
|
643
|
+
default: 500,
|
644
|
+
full_name: N_('Autosearch delay'),
|
645
|
+
description: N_('If Autosearch is enabled, delay in milliseconds before executing searches while typing.')
|
646
|
+
|
647
|
+
setting 'bulk_load_size',
|
648
|
+
type: :integer,
|
649
|
+
default: 2000,
|
650
|
+
full_name: N_('Pulp bulk load size'),
|
651
|
+
description: N_('The number of items fetched from a single paged Pulp API call.')
|
652
|
+
|
653
|
+
setting 'upload_profiles_without_dynflow',
|
654
|
+
type: :boolean,
|
655
|
+
default: true,
|
656
|
+
full_name: N_('Upload profiles without Dynflow'),
|
657
|
+
description: N_('Allow Katello to update host installed packages, enabled repos, and module inventory directly instead of wrapped in Dynflow tasks (try turning off if Puma processes are using too much memory)')
|
658
|
+
|
659
|
+
setting 'orphan_protection_time',
|
660
|
+
type: :integer,
|
661
|
+
default: 1440,
|
662
|
+
full_name: N_('Orphaned Content Protection Time'),
|
663
|
+
description: N_('Time in minutes to consider orphan content as orphaned.')
|
664
|
+
|
665
|
+
setting 'remote_execution_prefer_registered_through_proxy',
|
666
|
+
type: :boolean,
|
667
|
+
default: false,
|
668
|
+
full_name: N_('Prefer registered through proxy for remote execution'),
|
669
|
+
description: N_('Prefer using a proxy to which a host is registered when using remote execution')
|
670
|
+
|
671
|
+
setting 'delete_repo_across_cv',
|
672
|
+
type: :boolean,
|
673
|
+
default: true,
|
674
|
+
full_name: N_('Allow deleting repositories in published content views'),
|
675
|
+
description: N_("If this is enabled, repositories can be deleted even when they belong to published content views. The deleted repository will be removed from all content view versions.")
|
676
|
+
end
|
677
|
+
end
|
678
|
+
|
305
679
|
if Katello.with_remote_execution?
|
306
680
|
RemoteExecutionFeature.register(:katello_package_install, N_("Katello: Install Package"), :description => N_("Install package via Katello interface"), :provided_inputs => ['package'])
|
307
681
|
RemoteExecutionFeature.register(:katello_package_install_by_search, N_("Katello: Install packages by search query"), :description => N_("Install packages via Katello interface"), :provided_inputs => ['Package search query'])
|
@@ -0,0 +1,67 @@
|
|
1
|
+
namespace :katello do
|
2
|
+
namespace :reset_backends do
|
3
|
+
# Switch to foreman-maintain when Pulp3 services are added to it
|
4
|
+
service_stop = "sudo /usr/bin/systemctl status %s > /dev/null && sudo /usr/bin/systemctl stop %s"
|
5
|
+
service_start = "sudo /usr/bin/systemctl start %s"
|
6
|
+
|
7
|
+
task :pulp do
|
8
|
+
SERVICES = %w(rh-redis5-redis pulpcore-api pulpcore-content).freeze
|
9
|
+
|
10
|
+
puts "\e[33mStarting Pulp3 Reset\e[0m\n\n"
|
11
|
+
|
12
|
+
SERVICES.each { |s| system(service_stop.gsub("%s", s)) }
|
13
|
+
system("sudo systemctl stop 'pulpcore-worker@*' --all")
|
14
|
+
system("sudo runuser - postgres -c 'dropdb pulpcore'")
|
15
|
+
system("sudo runuser - postgres -c 'createdb pulpcore'")
|
16
|
+
|
17
|
+
Dir.chdir("/tmp") do
|
18
|
+
fail "\e[31mCannot migrate Pulp3 database\e[0m\n\n" unless system("sudo -u pulp PULP_SETTINGS='/etc/pulp/settings.py' DJANGO_SETTINGS_MODULE='pulpcore.app.settings' pulpcore-manager migrate --no-input")
|
19
|
+
puts "\e[33mRecreating Admin User\e[0m\n\n"
|
20
|
+
system("sudo -u pulp PULP_SETTINGS='/etc/pulp/settings.py' DJANGO_SETTINGS_MODULE='pulpcore.app.settings' pulpcore-manager reset-admin-password --password password")
|
21
|
+
end
|
22
|
+
|
23
|
+
SERVICES.each { |s| system(service_start.gsub("%s", s)) }
|
24
|
+
system("sudo systemctl start 'pulpcore-worker@*' --all")
|
25
|
+
puts "\e[32mPulp3 Database Reset Complete\e[0m\n\n"
|
26
|
+
end
|
27
|
+
|
28
|
+
task :candlepin do
|
29
|
+
puts "\e[33mStarting Candlepin Reset\e[0m\n\n"
|
30
|
+
|
31
|
+
system(service_stop.gsub("%s", 'tomcat'))
|
32
|
+
system("sudo runuser - postgres -c 'dropdb candlepin'")
|
33
|
+
system("sudo runuser - postgres -c 'createdb candlepin'")
|
34
|
+
system("sudo /usr/share/candlepin/cpdb --create --schema-only")
|
35
|
+
system("sudo /usr/share/candlepin/cpdb --update")
|
36
|
+
system(service_start.gsub("%s", 'tomcat'))
|
37
|
+
puts "\e[32mCandlepin Database Reset Complete\e[0m\n\n"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
task :reset_default_smart_proxy do
|
42
|
+
User.current = User.anonymous_admin
|
43
|
+
hostname = Socket.gethostname.chomp
|
44
|
+
SmartProxy.where(name: hostname, url: "https://#{hostname}:9090").first_or_create!
|
45
|
+
end
|
46
|
+
|
47
|
+
desc 'Resets the Foreman/Katello development environment. WARNING: This will destroy all your Foreman, Katello and Pulp data.'
|
48
|
+
task :reset_backends do
|
49
|
+
Rake::Task['katello:reset_backends:candlepin'].invoke
|
50
|
+
Rake::Task['katello:reset_backends:pulp'].invoke
|
51
|
+
end
|
52
|
+
|
53
|
+
task :reset => ['environment'] do
|
54
|
+
ENV['SEED_ADMIN_PASSWORD'] ||= 'changeme'
|
55
|
+
ENV['SEED_ORGANIZATION'] ||= 'Default Organization'
|
56
|
+
ENV['SEED_LOCATION'] ||= 'Default Location'
|
57
|
+
Rake::Task['katello:reset_backends'].invoke
|
58
|
+
Rake::Task['db:drop'].invoke
|
59
|
+
Rake::Task['db:create'].invoke
|
60
|
+
|
61
|
+
# Otherwise migration and seeds fail because they require a reloaded environment
|
62
|
+
system('rake db:migrate')
|
63
|
+
system('rake db:seed')
|
64
|
+
Rake::Task['katello:reset_default_smart_proxy'].invoke
|
65
|
+
puts "\e[32mReset Done\e[0m\n"
|
66
|
+
end
|
67
|
+
end
|
@@ -3,7 +3,6 @@ require File.expand_path("../engine", File.dirname(__FILE__))
|
|
3
3
|
namespace :katello do
|
4
4
|
desc "Sets the content default HTTP proxy to an existing HTTP proxy based on supplied URL."
|
5
5
|
task :update_default_http_proxy => :environment do
|
6
|
-
setting = ::Setting.find_by(name: 'content_default_http_proxy')
|
7
6
|
options = {}
|
8
7
|
o = OptionParser.new
|
9
8
|
o.banner = "Usage: rake katello:update_content_default_http_proxy -- --name HTTP_PROXY_NAME --url HTTP_PROXY_URL [--user HTTP_PROXY_USER] [--password HTTP_PROXY_PASSWORD]"
|
@@ -49,7 +48,7 @@ namespace :katello do
|
|
49
48
|
sanitized_url = uri.to_s
|
50
49
|
|
51
50
|
if http_proxy
|
52
|
-
|
51
|
+
Setting['content_default_http_proxy'] = http_proxy.name
|
53
52
|
http_proxy.update!(url: sanitized_url,
|
54
53
|
username: options[:username], password: options[:password])
|
55
54
|
puts "Content default HTTP proxy set to #{http_proxy.name_and_url}."
|
@@ -59,7 +58,7 @@ namespace :katello do
|
|
59
58
|
organizations: Organization.all,
|
60
59
|
locations: Location.all)
|
61
60
|
if new_proxy.save!
|
62
|
-
|
61
|
+
Setting['content_default_http_proxy'] = new_proxy.name
|
63
62
|
puts "Default content HTTP proxy set to #{new_proxy.name_and_url}."
|
64
63
|
end
|
65
64
|
end
|
data/lib/katello/version.rb
CHANGED
data/locale/action_names.rb
CHANGED
@@ -1,46 +1,52 @@
|
|
1
1
|
# Autogenerated!
|
2
|
-
_("
|
3
|
-
_("
|
4
|
-
_("
|
5
|
-
_("
|
6
|
-
_("
|
7
|
-
_("
|
8
|
-
_("Run Sync Plan:")
|
2
|
+
_("Package Profile Update")
|
3
|
+
_("Combined Profile Update")
|
4
|
+
_("Destroy")
|
5
|
+
_("Product Create")
|
6
|
+
_("Delete Product")
|
7
|
+
_("Reindex subscriptions")
|
9
8
|
_("Update")
|
10
|
-
_("
|
11
|
-
_("Disable")
|
12
|
-
_("Verify checksum")
|
13
|
-
_("Create Package Group")
|
14
|
-
_("Upload into")
|
15
|
-
_("Update redhat repository")
|
16
|
-
_("Update http proxy details")
|
17
|
-
_("Update content urls")
|
18
|
-
_("Synchronize")
|
19
|
-
_("Remove Content")
|
20
|
-
_("Instance update")
|
21
|
-
_("Index package groups")
|
22
|
-
_("Index module streams")
|
23
|
-
_("Index errata")
|
24
|
-
_("Index content")
|
25
|
-
_("Filtered index content")
|
26
|
-
_("Fetch pxe files")
|
27
|
-
_("Errata mail")
|
28
|
-
_("Discover")
|
29
|
-
_("Delete Package Group")
|
9
|
+
_("Update http proxy")
|
30
10
|
_("Delete")
|
31
11
|
_("Create")
|
32
|
-
_("
|
33
|
-
_("
|
34
|
-
_("
|
35
|
-
_("
|
36
|
-
_("
|
37
|
-
_("
|
12
|
+
_("Delete Package Group")
|
13
|
+
_("Discover")
|
14
|
+
_("Errata mail")
|
15
|
+
_("Fetch pxe files")
|
16
|
+
_("Filtered index content")
|
17
|
+
_("Upload into")
|
18
|
+
_("Index content")
|
19
|
+
_("Index errata")
|
20
|
+
_("Index module streams")
|
21
|
+
_("Index package groups")
|
22
|
+
_("Instance update")
|
23
|
+
_("Remove Content")
|
24
|
+
_("Synchronize")
|
25
|
+
_("Update content urls")
|
26
|
+
_("Update http proxy details")
|
27
|
+
_("Update redhat repository")
|
28
|
+
_("Create Package Group")
|
29
|
+
_("Verify checksum")
|
30
|
+
_("Disable")
|
31
|
+
_("Enable")
|
32
|
+
_("Run Sync Plan:")
|
33
|
+
_("Create Export History")
|
34
|
+
_("Create Import History")
|
35
|
+
_("Copy version units to library")
|
36
|
+
_("Export")
|
37
|
+
_("Export Library")
|
38
|
+
_("Export Repository")
|
39
|
+
_("Import")
|
40
|
+
_("Abstract")
|
41
|
+
_("Remote action:")
|
38
42
|
_("Updating System Purpose for host")
|
39
43
|
_("Update release version for host")
|
40
44
|
_("Update for host")
|
41
45
|
_("Update Content Overrides")
|
42
|
-
_("Package Profile Update")
|
43
46
|
_("Remove subscriptions")
|
47
|
+
_("Import Default Content View")
|
48
|
+
_("Import Content View Version")
|
49
|
+
_("Remove Version")
|
44
50
|
_("Hypervisors update")
|
45
51
|
_("Hypervisors")
|
46
52
|
_("Install Applicable Errata")
|
@@ -51,9 +57,7 @@ _("Publish Lifecycle Environment Repositories")
|
|
51
57
|
_("Delete Lifecycle Environment")
|
52
58
|
_("Republish Version Repositories")
|
53
59
|
_("Incremental Update")
|
54
|
-
_("Import
|
55
|
-
_("Import Content View Version")
|
56
|
-
_("Remove Version")
|
60
|
+
_("Import Repository")
|
57
61
|
_("Remove from Environment")
|
58
62
|
_("Remove Versions and Associations")
|
59
63
|
_("Publish")
|
@@ -66,10 +70,12 @@ _("Synchronize smart proxy")
|
|
66
70
|
_("Generate repository applicability")
|
67
71
|
_("Bulk generate applicability for hosts")
|
68
72
|
_("Generate host applicability")
|
73
|
+
_("Update Alternate Content Source")
|
74
|
+
_("Destroy Alternate Content Source")
|
75
|
+
_("Create Alternate Content Source")
|
69
76
|
_("Agent action")
|
70
|
-
_("Abstract async task")
|
71
77
|
_("Delete Activation Key")
|
72
|
-
_("
|
73
|
-
_("Import facts")
|
78
|
+
_("Abstract async task")
|
74
79
|
_("Import Puppet classes")
|
75
|
-
_("
|
80
|
+
_("Import facts")
|
81
|
+
_("Action with sub plans")
|
Binary file
|