katello 3.18.0.rc1 → 4.0.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_dynflow_proxy_controller.rb +0 -19
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +1 -3
- data/app/controllers/katello/api/v2/api_controller.rb +1 -2
- data/app/controllers/katello/api/v2/capsule_content_controller.rb +2 -2
- data/app/controllers/katello/api/v2/content_credentials_controller.rb +24 -24
- data/app/controllers/katello/api/v2/content_export_incrementals_controller.rb +98 -0
- data/app/controllers/katello/api/v2/content_exports_controller.rb +88 -0
- data/app/controllers/katello/api/v2/content_imports_controller.rb +59 -0
- data/app/controllers/katello/api/v2/content_view_filters_controller.rb +16 -7
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +57 -92
- data/app/controllers/katello/api/v2/content_views_controller.rb +12 -3
- data/app/controllers/katello/api/v2/host_debs_controller.rb +1 -0
- data/app/controllers/katello/api/v2/host_errata_controller.rb +2 -2
- data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +2 -3
- data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +20 -7
- data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +1 -1
- data/app/controllers/katello/api/v2/products_controller.rb +9 -9
- data/app/controllers/katello/api/v2/repositories_controller.rb +5 -19
- data/app/controllers/katello/api/v2/repository_sets_controller.rb +24 -14
- data/app/controllers/katello/api/v2/simple_content_access_controller.rb +34 -0
- data/app/controllers/katello/api/v2/subscriptions_controller.rb +1 -1
- data/app/controllers/katello/api/v2/upstream_subscriptions_controller.rb +8 -4
- data/app/controllers/katello/concerns/api/v2/authorization.rb +10 -0
- data/app/controllers/katello/concerns/api/v2/bulk_hosts_extensions.rb +22 -18
- data/app/controllers/katello/concerns/authorization/api/v2/content_views_controller.rb +1 -1
- data/app/controllers/katello/concerns/registration_controller_extensions.rb +16 -0
- data/app/helpers/katello/sync_management_helper.rb +0 -2
- data/app/lib/actions/candlepin/environment/create.rb +1 -1
- data/app/lib/actions/candlepin/environment/set_content.rb +1 -1
- data/app/lib/actions/helpers/smart_proxy_sync_history_helper.rb +24 -0
- data/app/lib/actions/katello/activation_key/create.rb +9 -11
- data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +6 -2
- data/app/lib/actions/katello/capsule_content/sync.rb +8 -8
- data/app/lib/actions/katello/capsule_content/sync_capsule.rb +31 -8
- data/app/lib/actions/katello/check_matching_content.rb +17 -0
- data/app/lib/actions/katello/content_view/environment_create.rb +6 -8
- data/app/lib/actions/katello/content_view/promote_to_environment.rb +1 -1
- data/app/lib/actions/katello/content_view/publish.rb +6 -5
- data/app/lib/actions/katello/content_view_version/import.rb +5 -11
- data/app/lib/actions/katello/content_view_version/import_library.rb +17 -0
- data/app/lib/actions/katello/content_view_version/incremental_update.rb +30 -10
- data/app/lib/actions/katello/host/hypervisors_update.rb +4 -4
- data/app/lib/actions/katello/host/update_system_purpose.rb +1 -1
- data/app/lib/actions/katello/host/upload_package_profile.rb +3 -1
- data/app/lib/actions/katello/host/upload_profiles.rb +8 -6
- data/app/lib/actions/katello/organization/create.rb +3 -5
- data/app/lib/actions/katello/organization/destroy.rb +1 -1
- data/app/lib/actions/katello/organization/manifest_delete.rb +3 -5
- data/app/lib/actions/katello/organization/manifest_import.rb +1 -1
- data/app/lib/actions/katello/organization/manifest_refresh.rb +1 -1
- data/app/lib/actions/katello/repository/check_matching_content.rb +3 -1
- data/app/lib/actions/katello/repository/clone_contents.rb +8 -11
- data/app/lib/actions/katello/repository/create.rb +0 -8
- data/app/lib/actions/katello/repository/filtered_index_content.rb +3 -0
- data/app/lib/actions/katello/repository/import_upload.rb +2 -0
- data/app/lib/actions/katello/repository/index_content.rb +1 -0
- data/app/lib/actions/katello/repository/multi_clone_contents.rb +9 -12
- data/app/lib/actions/katello/repository/remove_content.rb +1 -1
- data/app/lib/actions/katello/repository/sync.rb +3 -1
- data/app/lib/actions/katello/repository/update.rb +1 -8
- data/app/lib/actions/katello/repository/upload_files.rb +1 -0
- data/app/lib/actions/middleware/execute_if_contents_changed.rb +4 -1
- data/app/lib/actions/middleware/record_smart_proxy_sync_history.rb +35 -0
- data/app/lib/actions/pulp/consumer/sync_capsule.rb +4 -2
- data/app/lib/actions/pulp/orchestration/repository/refresh_repos.rb +0 -6
- data/app/lib/actions/pulp/repository/distributor_publish.rb +1 -1
- data/app/lib/actions/pulp3/abstract_async_task.rb +1 -0
- data/app/lib/actions/pulp3/capsule_content/refresh_distribution.rb +3 -3
- data/app/lib/actions/pulp3/capsule_content/sync.rb +1 -0
- data/app/lib/actions/pulp3/content_migration.rb +10 -0
- data/app/lib/actions/pulp3/content_migration_presenter.rb +59 -0
- data/app/lib/actions/pulp3/content_view/delete_repository_references.rb +1 -1
- data/app/lib/actions/pulp3/content_view_version/export.rb +6 -1
- data/app/lib/actions/pulp3/import_migration.rb +6 -1
- data/app/lib/actions/pulp3/orchestration/content_view_version/copy_version_units_to_library.rb +2 -1
- data/app/lib/actions/pulp3/orchestration/content_view_version/export.rb +30 -9
- data/app/lib/actions/pulp3/orchestration/content_view_version/export_library.rb +60 -0
- data/app/lib/actions/pulp3/orchestration/content_view_version/import.rb +0 -4
- data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +4 -1
- data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +16 -3
- data/app/lib/actions/pulp3/orchestration/repository/refresh_repos.rb +1 -6
- data/app/lib/actions/pulp3/repository/copy_content.rb +1 -1
- data/app/lib/actions/pulp3/repository/delete.rb +1 -1
- data/app/lib/actions/pulp3/repository/save_version.rb +1 -1
- data/app/lib/actions/pulp3/repository/upload_tag.rb +18 -0
- data/app/lib/katello/concerns/base_template_scope_extensions.rb +8 -0
- data/app/lib/katello/event_daemon/monitor.rb +53 -0
- data/app/lib/katello/event_daemon/runner.rb +99 -0
- data/app/lib/katello/logging.rb +32 -0
- data/app/lib/katello/messaging/connection.rb +1 -7
- data/app/lib/katello/validators/content_view_puppet_module_validator.rb +1 -1
- data/app/models/katello/activation_key.rb +2 -2
- data/app/models/katello/authorization/content_view_filter.rb +15 -0
- data/app/models/katello/authorization/content_view_version.rb +25 -2
- data/app/models/katello/authorization/content_view_version_export_history.rb +1 -1
- data/app/models/katello/authorization/organization.rb +8 -0
- data/app/models/katello/candlepin/repository_mapper.rb +1 -1
- data/app/models/katello/concerns/operatingsystem_extensions.rb +2 -0
- data/app/models/katello/concerns/organization_extensions.rb +2 -2
- data/app/models/katello/concerns/pulp_database_unit.rb +7 -0
- data/app/models/katello/concerns/redhat_extensions.rb +2 -2
- data/app/models/katello/concerns/smart_proxy_extensions.rb +33 -5
- data/app/models/katello/content_migration_progress.rb +4 -0
- data/app/models/katello/content_view.rb +35 -5
- data/app/models/katello/content_view_environment.rb +2 -2
- data/app/models/katello/content_view_filter.rb +5 -0
- data/app/models/katello/content_view_history.rb +2 -1
- data/app/models/katello/content_view_package_filter.rb +1 -1
- data/app/models/katello/content_view_puppet_environment.rb +2 -2
- data/app/models/katello/content_view_puppet_module.rb +8 -0
- data/app/models/katello/content_view_repository.rb +13 -1
- data/app/models/katello/content_view_version.rb +2 -1
- data/app/models/katello/content_view_version_export_history.rb +26 -1
- data/app/models/katello/erratum.rb +3 -1
- data/app/models/katello/glue/candlepin/pool.rb +2 -0
- data/app/models/katello/glue/pulp/repo.rb +0 -6
- data/app/models/katello/glue/pulp/repos.rb +1 -22
- data/app/models/katello/host/subscription_facet.rb +4 -0
- data/app/models/katello/ping.rb +11 -6
- data/app/models/katello/pool.rb +5 -0
- data/app/models/katello/product.rb +3 -3
- data/app/models/katello/repository.rb +36 -3
- data/app/models/katello/smart_proxy_sync_history.rb +8 -0
- data/app/models/katello/subscription_status.rb +3 -2
- data/app/presenters/katello/host_subscription_presenter.rb +3 -4
- data/app/presenters/katello/host_subscriptions_presenter.rb +24 -0
- data/app/services/katello/applicability/applicable_content_helper.rb +44 -15
- data/app/services/katello/candlepin_event_listener.rb +11 -19
- data/app/services/katello/event_monitor/poller_thread.rb +2 -11
- data/app/services/katello/pulp/smart_proxy_repository.rb +0 -15
- data/app/services/katello/pulp3/api/docker.rb +4 -0
- data/app/services/katello/pulp3/content_view_version/export.rb +122 -6
- data/app/services/katello/pulp3/content_view_version/import.rb +37 -22
- data/app/services/katello/pulp3/content_view_version/import_export_common.rb +6 -16
- data/app/services/katello/pulp3/content_view_version/import_validator.rb +84 -0
- data/app/services/katello/pulp3/docker_manifest.rb +1 -0
- data/app/services/katello/pulp3/docker_tag.rb +1 -0
- data/app/services/katello/pulp3/migration.rb +51 -10
- data/app/services/katello/pulp3/repository.rb +13 -4
- data/app/services/katello/pulp3/repository/docker.rb +5 -0
- data/app/services/katello/pulp3/repository/yum.rb +15 -10
- data/app/services/katello/pulp3/task.rb +7 -3
- data/app/services/katello/pulp3/task_group.rb +10 -0
- data/app/services/katello/repository_type.rb +3 -2
- data/app/services/katello/smart_proxy_helper.rb +9 -0
- data/app/views/foreman/hosts/_registration.html.erb +12 -0
- data/app/views/foreman/smart_proxies/_content_tab.html.erb +4 -47
- data/app/views/foreman/smart_proxies/show.html.erb +1 -1
- data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +22 -25
- data/app/views/katello/api/v2/content_view_version_export_histories/show.json.rabl +1 -0
- data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
- data/app/views/katello/api/v2/content_views/show.json.rabl +6 -0
- data/app/views/katello/api/v2/organizations/show.json.rabl +7 -9
- data/app/views/katello/layouts/react.html.erb +3 -2
- data/app/views/overrides/activation_keys/_host_tab_pane.html.erb +1 -5
- data/app/views/overrides/organizations/_edit_override.html.erb +1 -4
- data/app/views/overrides/smart_proxies/_environment_tab.html.erb +1 -1
- data/app/views/overrides/smart_proxies/_environment_tab_pane.html.erb +1 -1
- data/config/katello.yaml.example +0 -3
- data/config/routes/api/v2.rb +31 -13
- data/db/migrate/20150930183738_migrate_content_hosts.rb +1 -1
- data/db/migrate/20191204214919_add_content_view_version_counts.rb +0 -1
- data/db/migrate/20200514092553_move_katello_fields_from_hostgroups.katello.rb +5 -2
- data/db/migrate/20200929200357_create_katello_smart_proxy_sync_history.rb +13 -0
- data/db/migrate/20201021150008_add_import_only_to_katello_content_view.rb +5 -0
- data/db/migrate/20201119211133_pulp3_migration_progress.rb +9 -0
- data/db/migrate/20210119162528_delete_puppet_and_ostree_repos.rb +56 -0
- data/db/migrate/20210128231228_add_type_and_from_cvv_to_cvv_export_history.rb +14 -0
- data/db/migrate/20210201163238_migrate_background_download_policy_to_migrate.rb +7 -0
- data/db/seeds.d/104-proxy.rb +1 -1
- data/db/seeds.d/111-upgrade_tasks.rb +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/katello-agent-notice.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-system-purpose-modal.html +35 -40
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-host-register-os-client.directive.js +17 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +2 -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/content-hosts/views/register-client.html +12 -5
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-deb-client.html +38 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-oracle-client.html +5 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-sles-client.html +28 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register.html +14 -11
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.controller.js +6 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-activation-keys.controller.js +8 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-content-hosts.controller.js +9 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-details.controller.js +12 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter-details.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +7 -7
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-info.html +7 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +4 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/content-view-new.controller.js +17 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/views/content-view-new.html +16 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/views/content-views.html +5 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +78 -7
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +17 -20
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +17 -24
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +1292 -1170
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +17 -20
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +858 -807
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +18 -19
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +17 -24
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +17 -18
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +986 -971
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +19 -20
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +9 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/download-policy.service.js +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository-types.service.js +8 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +2 -2
- data/lib/katello/engine.rb +6 -6
- data/lib/katello/middleware/event_daemon.rb +1 -1
- data/lib/katello/permission_creator.rb +35 -14
- data/lib/katello/plugin.rb +8 -3
- data/lib/katello/tasks/delete_orphaned_content.rake +1 -3
- data/lib/katello/tasks/jenkins.rake +1 -1
- data/lib/katello/tasks/pulp3_content_switchover.rake +1 -1
- data/lib/katello/tasks/pulp3_migration.rake +18 -6
- data/lib/katello/tasks/pulp3_migration_abort.rake +22 -0
- data/lib/katello/tasks/pulp3_migration_stats.rake +28 -8
- data/lib/katello/tasks/pulp3_post_migration_check.rake +1 -3
- data/lib/katello/tasks/receptor/extract_orgs.rake +1 -1
- data/lib/katello/tasks/reimport.rake +1 -1
- data/lib/katello/tasks/repository.rake +3 -5
- data/lib/katello/tasks/upgrades/4.0/remove_ostree_puppet_content.rake +16 -0
- data/lib/katello/version.rb +1 -1
- data/lib/proxy_api/container_gateway.rb +21 -0
- data/locale/action_names.rb +51 -51
- data/locale/bn/katello.edit.po +0 -0
- data/locale/bn/katello.po +136 -51
- data/locale/cs/katello.edit.po +0 -0
- data/locale/cs/katello.po +136 -49
- data/locale/de/katello.edit.po +0 -0
- data/locale/de/katello.po +136 -48
- data/locale/en/katello.edit.po +0 -0
- data/locale/en/katello.po +136 -48
- data/locale/es/katello.edit.po +0 -0
- data/locale/es/katello.po +136 -48
- data/locale/fr/katello.edit.po +0 -0
- data/locale/fr/katello.po +136 -48
- data/locale/gu/katello.edit.po +0 -0
- data/locale/gu/katello.po +136 -51
- data/locale/hi/katello.edit.po +0 -0
- data/locale/hi/katello.po +136 -51
- data/locale/it/katello.edit.po +0 -0
- data/locale/it/katello.po +136 -48
- data/locale/ja/katello.edit.po +0 -0
- data/locale/ja/katello.po +136 -48
- data/locale/katello.pot +941 -767
- data/locale/kn/katello.edit.po +0 -0
- data/locale/kn/katello.po +136 -51
- data/locale/ko/katello.edit.po +0 -0
- data/locale/ko/katello.po +136 -48
- data/locale/mr/katello.edit.po +0 -0
- data/locale/mr/katello.po +136 -51
- data/locale/or/katello.edit.po +0 -0
- data/locale/or/katello.po +136 -51
- data/locale/pa/katello.edit.po +0 -0
- data/locale/pa/katello.po +136 -51
- data/locale/pt/katello.edit.po +0 -0
- data/locale/pt/katello.po +136 -51
- data/locale/pt_BR/katello.edit.po +0 -0
- data/locale/pt_BR/katello.po +136 -48
- data/locale/ru/katello.edit.po +0 -0
- data/locale/ru/katello.po +136 -48
- data/locale/ta/katello.edit.po +0 -0
- data/locale/ta/katello.po +136 -51
- data/locale/te/katello.edit.po +0 -0
- data/locale/te/katello.po +136 -51
- data/locale/zh_CN/katello.edit.po +0 -0
- data/locale/zh_CN/katello.po +136 -48
- data/locale/zh_TW/katello.edit.po +0 -0
- data/locale/zh_TW/katello.po +136 -48
- data/package.json +1 -1
- data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +0 -1
- data/webpack/__mocks__/foremanReact/components/Pagination/PaginationHooks.js +2 -0
- data/webpack/__mocks__/foremanReact/components/common/dates/LongDateTime.js +5 -0
- data/webpack/{scenes/ContentViews/Details/Repositories → components/SelectableDropdown}/SelectableDropdown.js +20 -3
- data/webpack/components/SelectableDropdown/__tests__/SelectableDropdown.test.js +45 -0
- data/webpack/components/SelectableDropdown/index.js +3 -0
- data/webpack/components/Table/TableWrapper.js +2 -1
- data/webpack/components/Table/helpers.js +14 -0
- data/webpack/components/TypeAhead/TypeAhead.js +2 -1
- data/webpack/components/TypeAhead/pf3Search/TypeAheadSearch.js +2 -1
- data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +0 -1
- data/webpack/containers/Application/overrides.scss +6 -0
- data/webpack/index.js +6 -0
- data/webpack/redux/actions/RedHatRepositories/helpers.js +5 -5
- data/webpack/scenes/ContentViews/ContentViewsActions.js +31 -2
- data/webpack/scenes/ContentViews/ContentViewsConstants.js +5 -1
- data/webpack/scenes/ContentViews/Copy/ContentViewCopySelectors.js +16 -0
- data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +77 -0
- data/webpack/scenes/ContentViews/Copy/CopyContentViewModal.js +44 -0
- data/webpack/scenes/ContentViews/Copy/__tests__/contentViewCopyResult.fixtures.json +42 -0
- data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +39 -0
- data/webpack/scenes/ContentViews/Copy/index.js +4 -0
- data/webpack/scenes/ContentViews/Create/ContentViewCreateSelectors.js +16 -0
- data/webpack/scenes/ContentViews/Create/ContentViewFormComponents.js +58 -0
- data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +175 -0
- data/webpack/scenes/ContentViews/Create/CreateContentViewModal.js +27 -0
- data/webpack/scenes/ContentViews/Create/__tests__/contentViewCreateResult.fixtures.json +42 -0
- data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +92 -0
- data/webpack/scenes/ContentViews/Create/index.js +4 -0
- data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +16 -0
- data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +20 -1
- data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +17 -7
- data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +19 -13
- data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +40 -0
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +124 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.fixtures.json +134 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +92 -0
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +44 -25
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.test.js +17 -7
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +24 -0
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +53 -3
- data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +4 -3
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +41 -0
- data/webpack/scenes/ContentViews/helpers.js +13 -0
- data/webpack/scenes/SmartProxy/Content.js +17 -0
- data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +11 -0
- data/webpack/scenes/SmartProxy/SmartProxyContentConstants.js +3 -0
- data/webpack/scenes/SmartProxy/SmartProxyContentSelectors.js +16 -0
- data/webpack/scenes/SmartProxy/SmartProxyContentTable.js +152 -0
- data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentResult.fixtures.json +140 -0
- data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +38 -0
- data/webpack/scenes/SmartProxy/index.js +4 -0
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +13 -11
- data/webpack/scenes/Subscriptions/Manifest/ManifestActions.js +3 -3
- data/webpack/scenes/Subscriptions/Manifest/__tests__/ManifestActions.test.js +2 -2
- data/webpack/scenes/Subscriptions/Manifest/__tests__/SimpleContentAccess.test.js +2 -2
- data/webpack/test-utils/react-testing-lib-wrapper.js +8 -2
- data/webpack/utils/helpers.js +3 -0
- metadata +110 -31
- data/app/controllers/katello/api/v2/gpg_keys_controller.rb +0 -114
- data/app/overrides/disable_turbolinks_on_proxies_index.rb +0 -5
- data/app/services/katello/event_daemon.rb +0 -135
- data/app/services/katello/pulp/content_counts_calculator.rb +0 -60
- data/lib/katello/tasks/common.rake +0 -7
- data/lib/katello/tasks/reports.rake +0 -4
- data/lib/katello/tasks/upgrades/3.10/update_gpg_key_urls.rake +0 -32
- data/webpack/__mocks__/foremanReact/components/common/Fill/GlobalFill.js +0 -3
- data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.scss +0 -5
- data/webpack/scenes/ContentViews/Table/actionResolver.js +0 -28
@@ -2,8 +2,8 @@ module Katello
|
|
2
2
|
class ContentViewEnvironment < Katello::Model
|
3
3
|
audited :associated_with => :content_view
|
4
4
|
include ForemanTasks::Concerns::ActionSubject
|
5
|
-
include Glue::Candlepin::Environment
|
6
|
-
include Glue
|
5
|
+
include Glue::Candlepin::Environment
|
6
|
+
include Glue
|
7
7
|
include Authorization::ContentViewEnvironment
|
8
8
|
|
9
9
|
belongs_to :content_view, :class_name => "Katello::ContentView", :inverse_of => :content_view_environments
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module Katello
|
2
2
|
class ContentViewFilter < Katello::Model
|
3
|
+
include Authorization::ContentViewFilter
|
3
4
|
audited :associations => [:repositories]
|
4
5
|
DOCKER = 'docker'.freeze
|
5
6
|
RPM = Rpm::CONTENT_TYPE
|
@@ -157,6 +158,10 @@ module Katello
|
|
157
158
|
if self.content_view.composite?
|
158
159
|
errors.add(:base, _("cannot contain filters if composite view"))
|
159
160
|
end
|
161
|
+
|
162
|
+
if self.content_view.import_only?
|
163
|
+
errors.add(:base, _("cannot add filter to import-only view"))
|
164
|
+
end
|
160
165
|
end
|
161
166
|
|
162
167
|
def validate_filter_repos(errors, content_view)
|
@@ -43,7 +43,7 @@ module Katello
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def self.generate_rpm_clauses(package_filenames = [])
|
46
|
-
{ 'filename' => { "$in" => package_filenames } } unless package_filenames.empty?
|
46
|
+
{ 'filename' => { "$in" => package_filenames.sort } } unless package_filenames.empty?
|
47
47
|
end
|
48
48
|
|
49
49
|
def applicable_rpms
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module Katello
|
2
2
|
class ContentViewPuppetEnvironment < Katello::Model
|
3
3
|
include ForemanTasks::Concerns::ActionSubject
|
4
|
-
include Glue::Pulp::Repo
|
5
|
-
include Glue
|
4
|
+
include Glue::Pulp::Repo
|
5
|
+
include Glue
|
6
6
|
|
7
7
|
belongs_to :environment, :class_name => "Katello::KTEnvironment",
|
8
8
|
:inverse_of => :content_view_puppet_environments
|
@@ -17,6 +17,8 @@ module Katello
|
|
17
17
|
|
18
18
|
before_validation :set_attributes
|
19
19
|
|
20
|
+
validate :import_only_content_view
|
21
|
+
|
20
22
|
def puppet_module
|
21
23
|
PuppetModule.find_by(:pulp_id => self.uuid)
|
22
24
|
end
|
@@ -42,6 +44,12 @@ module Katello
|
|
42
44
|
|
43
45
|
private
|
44
46
|
|
47
|
+
def import_only_content_view
|
48
|
+
if self.content_view.import_only?
|
49
|
+
errors.add(:base, "Cannot add puppet modules to an import-only content view.")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
45
53
|
def set_attributes
|
46
54
|
if self.uuid.present?
|
47
55
|
puppet_module = PuppetModule.with_identifiers(self.uuid).first
|
@@ -7,6 +7,10 @@ module Katello
|
|
7
7
|
Repository::DEB_TYPE
|
8
8
|
].freeze
|
9
9
|
|
10
|
+
ALLOWED_IMPORT_REPOSITORY_TYPES = [
|
11
|
+
Repository::YUM_TYPE
|
12
|
+
].freeze
|
13
|
+
|
10
14
|
belongs_to :content_view, :inverse_of => :content_view_repositories,
|
11
15
|
:class_name => "Katello::ContentView"
|
12
16
|
belongs_to :repository, :inverse_of => :content_view_repositories,
|
@@ -27,7 +31,7 @@ module Katello
|
|
27
31
|
end
|
28
32
|
|
29
33
|
def ensure_repository_type
|
30
|
-
unless
|
34
|
+
unless allowed_repository_types.include?(repository.content_type)
|
31
35
|
errors.add(:base, _("Cannot add %s repositories to a content view.") % repository.content_type)
|
32
36
|
end
|
33
37
|
end
|
@@ -41,5 +45,13 @@ module Katello
|
|
41
45
|
errors.add(:base, _("Repositories from published Content Views are not allowed."))
|
42
46
|
end
|
43
47
|
end
|
48
|
+
|
49
|
+
def allowed_repository_types
|
50
|
+
if self.content_view.import_only?
|
51
|
+
ALLOWED_IMPORT_REPOSITORY_TYPES
|
52
|
+
else
|
53
|
+
ALLOWED_REPOSITORY_TYPES
|
54
|
+
end
|
55
|
+
end
|
44
56
|
end
|
45
57
|
end
|
@@ -322,7 +322,8 @@ module Katello
|
|
322
322
|
end
|
323
323
|
|
324
324
|
def content_counts_map
|
325
|
-
|
325
|
+
# if its empty, calculate it on demand
|
326
|
+
update_content_counts! if content_counts.blank?
|
326
327
|
counts = Hash[content_counts.map { |key, value| ["#{key}_count", value] }]
|
327
328
|
counts.merge("module_stream_count" => counts["modulemd_count"],
|
328
329
|
"package_count" => counts["rpm_count"],
|
@@ -2,13 +2,24 @@ module Katello
|
|
2
2
|
class ContentViewVersionExportHistory < Katello::Model
|
3
3
|
include Authorization::ContentViewVersionExportHistory
|
4
4
|
|
5
|
+
COMPLETE = "complete".freeze
|
6
|
+
INCREMENTAL = "incremental".freeze
|
7
|
+
EXPORT_TYPES = [COMPLETE, INCREMENTAL].freeze
|
8
|
+
|
5
9
|
belongs_to :content_view_version, :class_name => "Katello::ContentViewVersion", :inverse_of => :export_histories
|
6
10
|
validates_lengths_from_database
|
7
11
|
validates :content_view_version_id, :presence => true
|
8
|
-
validates :destination_server, :
|
12
|
+
validates :destination_server, :uniqueness => { :scope => [:content_view_version_id, :destination_server, :path] }
|
13
|
+
validates :export_type, :inclusion => { :in => EXPORT_TYPES,
|
14
|
+
:allow_blank => false,
|
15
|
+
:message => _("Invalid export_type from one of the following: %s" % EXPORT_TYPES.join(', '))
|
16
|
+
}
|
17
|
+
|
9
18
|
validates :metadata, :presence => true
|
10
19
|
serialize :metadata, Hash
|
11
20
|
|
21
|
+
before_validation :set_export_type, :if => -> { export_type.blank? }
|
22
|
+
|
12
23
|
scope :with_organization_id, ->(organization_id) do
|
13
24
|
where(:content_view_version_id => ContentViewVersion.with_organization_id(organization_id))
|
14
25
|
end
|
@@ -20,5 +31,19 @@ module Katello
|
|
20
31
|
scoped_search :on => :content_view_id, :relation => :content_view_version, :validator => ScopedSearch::Validators::INTEGER, :only_explicit => true
|
21
32
|
scoped_search :on => :content_view_version_id, :only_explicit => true, :validator => ScopedSearch::Validators::INTEGER
|
22
33
|
scoped_search :on => :id, :only_explicit => true, :validator => ScopedSearch::Validators::INTEGER
|
34
|
+
scoped_search :on => :export_type, :rename => :type, :complete_value => EXPORT_TYPES
|
35
|
+
|
36
|
+
def self.latest(content_view, destination_server: nil)
|
37
|
+
where(content_view_version: content_view.versions,
|
38
|
+
destination_server: destination_server).order(:created_at).last
|
39
|
+
end
|
40
|
+
|
41
|
+
def export_type_from_metadata
|
42
|
+
cvve.metadata[:incremental] ? INCREMENTAL : COMPLETE
|
43
|
+
end
|
44
|
+
|
45
|
+
def set_export_type
|
46
|
+
self.export_type = export_type_from_metadata
|
47
|
+
end
|
23
48
|
end
|
24
49
|
end
|
@@ -173,9 +173,11 @@ module Katello
|
|
173
173
|
property :package_names, array_of: String, desc: 'Returns names of packages the errata can be applied to'
|
174
174
|
property :cves, array_of: 'ErratumCve', desc: 'Returns CVEs associated with the errata'
|
175
175
|
property :reboot_suggested, one_of: [true, false], desc: 'Returns true if reboot is suggested after errata applying, false otherwise'
|
176
|
+
property :title, String, desc: 'Returns the errata title, e.g. "Important: net-snmp security update"'
|
177
|
+
property :summary, String, desc: 'Returns the errata summary, the length can very, it is usually in range of 60 to 1000 characters. It can include empty line characters.'
|
176
178
|
end
|
177
179
|
class Jail < ::Safemode::Jail
|
178
|
-
allow :errata_id, :errata_type, :issued, :created_at, :severity, :package_names, :cves, :reboot_suggested
|
180
|
+
allow :errata_id, :errata_type, :issued, :created_at, :severity, :package_names, :cves, :reboot_suggested, :title, :summary
|
179
181
|
end
|
180
182
|
end
|
181
183
|
end
|
@@ -92,6 +92,8 @@ module Katello
|
|
92
92
|
end
|
93
93
|
|
94
94
|
# rubocop:disable Metrics/MethodLength,Metrics/AbcSize
|
95
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
96
|
+
# rubocop:disable Metrics/PerceivedComplexity
|
95
97
|
def import_data(index_hosts_and_activation_keys = false)
|
96
98
|
pool_attributes = {}.with_indifferent_access
|
97
99
|
pool_json = self.backend_data
|
@@ -113,12 +113,6 @@ module Katello
|
|
113
113
|
backend_service(capsule).generate_distributors
|
114
114
|
end
|
115
115
|
|
116
|
-
def populate_from(repos_map)
|
117
|
-
found = repos_map[self.pulp_id]
|
118
|
-
prepopulate(found) if found
|
119
|
-
!found.nil?
|
120
|
-
end
|
121
|
-
|
122
116
|
def package_group_count
|
123
117
|
content_unit_counts = 0
|
124
118
|
if self.pulp_repo_facts
|
@@ -12,27 +12,6 @@ module Katello
|
|
12
12
|
"#{path_prefix}/#{path}"
|
13
13
|
end
|
14
14
|
|
15
|
-
def self.prepopulate!(products, environment, repos = [], content_view = nil)
|
16
|
-
if content_view.nil?
|
17
|
-
if environment.library?
|
18
|
-
content_view = environment.default_content_view
|
19
|
-
else
|
20
|
-
fail "No content view specified for a Non library environment #{environment.inspect}"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
items = Katello.pulp_server.extensions.repository.search_by_repository_ids(Repository.in_environment(environment).pluck(:pulp_id))
|
25
|
-
full_repos = {}
|
26
|
-
items.each { |item| full_repos[item["id"]] = item }
|
27
|
-
|
28
|
-
products.each do |prod|
|
29
|
-
prod.repos(environment, content_view).each do |repo|
|
30
|
-
repo.populate_from(full_repos)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
repos.each { |repo| repo.populate_from(full_repos) }
|
34
|
-
end
|
35
|
-
|
36
15
|
module InstanceMethods
|
37
16
|
def distributions(env)
|
38
17
|
to_ret = []
|
@@ -125,7 +104,7 @@ module Katello
|
|
125
104
|
AND inner_select.resource_id = locks_foreman_tasks_tasks.resource_id")
|
126
105
|
.distinct
|
127
106
|
|
128
|
-
max_per_repoid.
|
107
|
+
max_per_repoid.index_by { |x| [x.resource_id, x] }
|
129
108
|
end
|
130
109
|
|
131
110
|
def sync_state_aggregated
|
@@ -282,6 +282,10 @@ module Katello
|
|
282
282
|
name.gsub('_', '-').chomp('.').downcase
|
283
283
|
end
|
284
284
|
|
285
|
+
def unsubscribed_hypervisor?
|
286
|
+
self.hypervisor && !self.candlepin_consumer.entitlements?
|
287
|
+
end
|
288
|
+
|
285
289
|
def candlepin_consumer
|
286
290
|
@candlepin_consumer ||= Katello::Candlepin::Consumer.new(self.uuid, self.host.organization.label)
|
287
291
|
end
|
data/app/models/katello/ping.rb
CHANGED
@@ -5,10 +5,17 @@ module Katello
|
|
5
5
|
PACKAGES = %w(katello candlepin pulp qpid foreman tfm hammer).freeze
|
6
6
|
|
7
7
|
class << self
|
8
|
+
def pulpcore_enabled # for downstream 6.9, remove in 6.10
|
9
|
+
SETTINGS[:katello][:use_pulp_2_for_content_type].nil? || (!SETTINGS[:katello][:use_pulp_2_for_content_type][:yum] &&
|
10
|
+
!SETTINGS[:katello][:use_pulp_2_for_content_type][:docker] &&
|
11
|
+
!SETTINGS[:katello][:use_pulp_2_for_content_type][:file]) ||
|
12
|
+
system('systemctl is-enabled pulpcore-api.service')
|
13
|
+
end
|
14
|
+
|
8
15
|
def services(capsule_id = nil)
|
9
16
|
proxy = fetch_proxy(capsule_id)
|
10
17
|
services = [:candlepin, :candlepin_auth, :foreman_tasks, :katello_events, :candlepin_events]
|
11
|
-
services += [:pulp3] if proxy&.pulp3_enabled?
|
18
|
+
services += [:pulp3] if proxy&.pulp3_enabled? && pulpcore_enabled
|
12
19
|
if proxy.nil? || proxy.has_feature?(SmartProxy::PULP_NODE_FEATURE) || proxy.has_feature?(SmartProxy::PULP_FEATURE)
|
13
20
|
services += [:pulp, :pulp_auth]
|
14
21
|
end
|
@@ -16,9 +23,7 @@ module Katello
|
|
16
23
|
services
|
17
24
|
end
|
18
25
|
|
19
|
-
#
|
20
26
|
# Calls "status" services in all backend engines.
|
21
|
-
#
|
22
27
|
def ping(services: nil, capsule_id: nil)
|
23
28
|
services ||= self.services(capsule_id)
|
24
29
|
result = {}
|
@@ -51,7 +56,7 @@ module Katello
|
|
51
56
|
running = status&.dig(:running)
|
52
57
|
|
53
58
|
if running
|
54
|
-
result[:message] = "#{status[:processed_count]} Processed, #{status[:failed_count]} Failed"
|
59
|
+
result[:message] = "#{status[:processed_count].to_i} Processed, #{status[:failed_count].to_i} Failed"
|
55
60
|
else
|
56
61
|
result[:status] = FAIL_RETURN_CODE
|
57
62
|
result[:message] = _("Not running")
|
@@ -60,14 +65,14 @@ module Katello
|
|
60
65
|
|
61
66
|
def ping_katello_events(result)
|
62
67
|
exception_watch(result) do
|
63
|
-
status = Katello::
|
68
|
+
status = Katello::EventDaemon::Runner.service_status(:katello_events)
|
64
69
|
event_daemon_status(status, result)
|
65
70
|
end
|
66
71
|
end
|
67
72
|
|
68
73
|
def ping_candlepin_events(result)
|
69
74
|
exception_watch(result) do
|
70
|
-
status = Katello::
|
75
|
+
status = Katello::EventDaemon::Runner.service_status(:candlepin_events)
|
71
76
|
event_daemon_status(status, result)
|
72
77
|
end
|
73
78
|
end
|
data/app/models/katello/pool.rb
CHANGED
@@ -22,6 +22,7 @@ module Katello
|
|
22
22
|
where(["end_date < ?", days.to_i.days.from_now.end_of_day])
|
23
23
|
end
|
24
24
|
scope :upstream, -> { where.not(upstream_pool_id: nil) }
|
25
|
+
scope :redhat, -> { joins(:products).merge(Katello::Product.redhat).distinct }
|
25
26
|
|
26
27
|
include Glue::Candlepin::Pool
|
27
28
|
include Glue::Candlepin::CandlepinObject
|
@@ -51,6 +52,10 @@ module Katello
|
|
51
52
|
|
52
53
|
DAYS_RECENTLY_EXPIRED = 30
|
53
54
|
|
55
|
+
def redhat?
|
56
|
+
self.class.redhat.where(:id => self.id).exists?
|
57
|
+
end
|
58
|
+
|
54
59
|
def active?
|
55
60
|
active
|
56
61
|
end
|
@@ -3,9 +3,9 @@ module Katello
|
|
3
3
|
audited
|
4
4
|
|
5
5
|
include ForemanTasks::Concerns::ActionSubject
|
6
|
-
include Glue::Candlepin::Product
|
7
|
-
include Glue::Pulp::Repos
|
8
|
-
include Glue
|
6
|
+
include Glue::Candlepin::Product
|
7
|
+
include Glue::Pulp::Repos
|
8
|
+
include Glue
|
9
9
|
|
10
10
|
include Katello::Authorization::Product
|
11
11
|
|
@@ -12,9 +12,9 @@ module Katello
|
|
12
12
|
|
13
13
|
include ForemanTasks::Concerns::ActionSubject
|
14
14
|
include Glue::Candlepin::Repository
|
15
|
-
include Glue::Pulp::Repo
|
15
|
+
include Glue::Pulp::Repo
|
16
16
|
|
17
|
-
include Glue
|
17
|
+
include Glue
|
18
18
|
include Authorization::Repository
|
19
19
|
include Katello::Engine.routes.url_helpers
|
20
20
|
|
@@ -109,6 +109,8 @@ module Katello
|
|
109
109
|
has_many :distribution_references, :class_name => 'Katello::Pulp3::DistributionReference', :foreign_key => :repository_id,
|
110
110
|
:dependent => :destroy, :inverse_of => :repository
|
111
111
|
|
112
|
+
has_many :smart_proxy_sync_histories, :class_name => "::Katello::SmartProxySyncHistory", :inverse_of => :repository, :dependent => :delete_all
|
113
|
+
|
112
114
|
validates_with Validators::ContainerImageNameValidator, :attributes => :container_repository_name, :allow_blank => false, :if => :docker?
|
113
115
|
validates :container_repository_name, :if => :docker?, :uniqueness => {message: ->(object, _data) do
|
114
116
|
_("for repository '%{name}' is not unique and cannot be created in '%{env}'. Its Container Repository Name (%{container_name}) conflicts with an existing repository. Consider changing the Lifecycle Environment's Registry Name Pattern to something more specific.") %
|
@@ -120,6 +122,8 @@ module Katello
|
|
120
122
|
|
121
123
|
scope :has_url, -> { joins(:root).where.not("#{RootRepository.table_name}.url" => nil) }
|
122
124
|
scope :on_demand, -> { joins(:root).where("#{RootRepository.table_name}.download_policy" => ::Runcible::Models::YumImporter::DOWNLOAD_ON_DEMAND) }
|
125
|
+
scope :immediate, -> { joins(:root).where("#{RootRepository.table_name}.download_policy" => ::Runcible::Models::YumImporter::DOWNLOAD_IMMEDIATE) }
|
126
|
+
scope :non_immediate, -> { joins(:root).where.not("#{RootRepository.table_name}.download_policy" => ::Runcible::Models::YumImporter::DOWNLOAD_IMMEDIATE) }
|
123
127
|
scope :in_default_view, -> { joins(:content_view_version => :content_view).where("#{Katello::ContentView.table_name}.default" => true) }
|
124
128
|
scope :in_non_default_view, -> { joins(:content_view_version => :content_view).where("#{Katello::ContentView.table_name}.default" => false) }
|
125
129
|
scope :deb_type, -> { with_type(DEB_TYPE) }
|
@@ -141,7 +145,7 @@ module Katello
|
|
141
145
|
scoped_search :rename => :product, :on => :name, :relation => :product, :complete_value => true
|
142
146
|
scoped_search :rename => :product_id, :on => :id, :relation => :product
|
143
147
|
scoped_search :on => :content_type, :relation => :root, :complete_value => -> do
|
144
|
-
Katello::RepositoryTypeManager.repository_types.keys.
|
148
|
+
Katello::RepositoryTypeManager.repository_types.keys.index_by { |value| value.to_sym }
|
145
149
|
end
|
146
150
|
scoped_search :on => :content_view_id, :relation => :content_view_repositories, :validator => ScopedSearch::Validators::INTEGER, :only_explicit => true
|
147
151
|
scoped_search :on => :distribution_version, :complete_value => true
|
@@ -152,6 +156,7 @@ module Katello
|
|
152
156
|
scoped_search :on => :redhat, :complete_value => { :true => true, :false => false }, :ext_method => :search_by_redhat
|
153
157
|
scoped_search :on => :container_repository_name, :complete_value => true
|
154
158
|
scoped_search :on => :description, :relation => :root, :only_explicit => true
|
159
|
+
scoped_search :on => :download_policy, :relation => :root, :only_explicit => true
|
155
160
|
scoped_search :on => :name, :relation => :product, :rename => :product_name
|
156
161
|
scoped_search :on => :id, :relation => :product, :rename => :product_id, :only_explicit => true
|
157
162
|
scoped_search :on => :label, :relation => :root, :complete_value => true, :only_explicit => true
|
@@ -285,6 +290,10 @@ module Katello
|
|
285
290
|
root.download_policy == Runcible::Models::YumImporter::DOWNLOAD_ON_DEMAND
|
286
291
|
end
|
287
292
|
|
293
|
+
def immediate?
|
294
|
+
root.download_policy == ::Runcible::Models::YumImporter::DOWNLOAD_IMMEDIATE
|
295
|
+
end
|
296
|
+
|
288
297
|
def yum_gpg_key_url
|
289
298
|
# if the repo has a gpg key return a url to access it
|
290
299
|
if self.root.gpg_key.try(:content).present?
|
@@ -531,6 +540,30 @@ module Katello
|
|
531
540
|
clone
|
532
541
|
end
|
533
542
|
|
543
|
+
def self.synced_on_capsule(smart_proxy)
|
544
|
+
smart_proxy.smart_proxy_sync_histories.map { |sph| sph.repository unless sph.finished_at.nil? }
|
545
|
+
end
|
546
|
+
|
547
|
+
def clear_smart_proxy_sync_histories(smart_proxy = nil)
|
548
|
+
if smart_proxy
|
549
|
+
self.smart_proxy_sync_histories.where(:smart_proxy_id => smart_proxy.id).try(:delete_all)
|
550
|
+
else
|
551
|
+
self.smart_proxy_sync_histories.delete_all
|
552
|
+
end
|
553
|
+
end
|
554
|
+
|
555
|
+
def create_smart_proxy_sync_history(smart_proxy)
|
556
|
+
clear_smart_proxy_sync_histories(smart_proxy)
|
557
|
+
sp_history_args = {
|
558
|
+
:smart_proxy_id => smart_proxy.id,
|
559
|
+
:repository_id => self.id,
|
560
|
+
:started_at => Time.now
|
561
|
+
}
|
562
|
+
sp_history = ::Katello::SmartProxySyncHistory.create sp_history_args
|
563
|
+
sp_history.save!
|
564
|
+
sp_history.id
|
565
|
+
end
|
566
|
+
|
534
567
|
def latest_sync_audit
|
535
568
|
self.audits.where(:action => AUDIT_SYNC_ACTION).order(:created_at).last
|
536
569
|
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
module Katello
|
2
|
+
class SmartProxySyncHistory < Katello::Model
|
3
|
+
self.table_name = 'katello_smart_proxy_sync_history'
|
4
|
+
|
5
|
+
belongs_to :smart_proxy, :class_name => "::SmartProxy", :inverse_of => :smart_proxy_sync_histories
|
6
|
+
belongs_to :repository, :class_name => "Katello::Repository", :inverse_of => :smart_proxy_sync_histories
|
7
|
+
end
|
8
|
+
end
|