katello 3.12.3 → 3.13.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 +22 -3
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +2 -2
- data/app/controllers/katello/api/v2/activation_keys_controller.rb +32 -15
- data/app/controllers/katello/api/v2/ansible_collections_controller.rb +19 -0
- data/app/controllers/katello/api/v2/content_view_filters_controller.rb +3 -0
- data/app/controllers/katello/api/v2/content_view_puppet_modules_controller.rb +1 -0
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +1 -0
- data/app/controllers/katello/api/v2/content_views_controller.rb +1 -0
- data/app/controllers/katello/api/v2/environments_controller.rb +1 -0
- data/app/controllers/katello/api/v2/errata_controller.rb +2 -1
- data/app/controllers/katello/api/v2/gpg_keys_controller.rb +1 -0
- data/app/controllers/katello/api/v2/host_collections_controller.rb +1 -0
- data/app/controllers/katello/api/v2/host_debs_controller.rb +34 -0
- data/app/controllers/katello/api/v2/host_errata_controller.rb +51 -4
- data/app/controllers/katello/api/v2/host_packages_controller.rb +1 -0
- data/app/controllers/katello/api/v2/module_streams_controller.rb +1 -0
- data/app/controllers/katello/api/v2/organizations_controller.rb +1 -3
- data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +18 -0
- data/app/controllers/katello/api/v2/products_controller.rb +1 -0
- data/app/controllers/katello/api/v2/repositories_controller.rb +46 -11
- data/app/controllers/katello/api/v2/repository_sets_controller.rb +6 -5
- data/app/controllers/katello/api/v2/srpms_controller.rb +24 -0
- data/app/controllers/katello/api/v2/sync_plans_controller.rb +1 -0
- data/app/controllers/katello/application_controller.rb +1 -0
- data/app/controllers/katello/concerns/api/v2/bulk_hosts_extensions.rb +2 -2
- data/app/controllers/katello/concerns/api/v2/hosts_controller_extensions.rb +9 -0
- data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +2 -0
- data/app/controllers/katello/concerns/hosts_controller_extensions.rb +1 -1
- data/app/helpers/katello/concerns/dashboard_helper_extensions.rb +13 -10
- data/app/lib/actions/candlepin/activation_key/create.rb +7 -1
- data/app/lib/actions/candlepin/activation_key/update.rb +7 -1
- data/app/lib/actions/candlepin/owner/destroy.rb +1 -1
- data/app/lib/actions/candlepin/product/update.rb +17 -0
- data/app/lib/actions/helpers/output_propagator.rb +13 -0
- data/app/lib/actions/katello/activation_key/create.rb +4 -1
- data/app/lib/actions/katello/activation_key/update.rb +8 -2
- data/app/lib/actions/katello/content_view/publish.rb +22 -34
- data/app/lib/actions/katello/event_queue/poller_thread.rb +22 -9
- data/app/lib/actions/katello/host/update.rb +3 -1
- data/app/lib/actions/katello/host/upload_profiles.rb +16 -0
- data/app/lib/actions/katello/organization/destroy.rb +0 -11
- data/app/lib/actions/katello/product/update.rb +8 -0
- data/app/lib/actions/katello/product/update_http_proxy.rb +19 -0
- data/app/lib/actions/katello/provider/update.rb +6 -7
- data/app/lib/actions/katello/pulp_selector.rb +15 -5
- data/app/lib/actions/katello/repository/check_matching_content.rb +3 -1
- data/app/lib/actions/katello/repository/clone_contents.rb +19 -6
- data/app/lib/actions/katello/repository/clone_to_environment.rb +3 -5
- data/app/lib/actions/katello/repository/create.rb +3 -1
- data/app/lib/actions/katello/repository/destroy.rb +5 -4
- data/app/lib/actions/katello/repository/discover.rb +8 -8
- data/app/lib/actions/katello/repository/export.rb +1 -1
- data/app/lib/actions/katello/repository/filtered_index_content.rb +10 -5
- data/app/lib/actions/katello/repository/finish_upload.rb +8 -0
- data/app/lib/actions/katello/repository/import_upload.rb +5 -2
- data/app/lib/actions/katello/repository/index_content.rb +3 -2
- data/app/lib/actions/katello/repository/metadata_generate.rb +10 -4
- data/app/lib/actions/katello/repository/remove_content.rb +11 -3
- data/app/lib/actions/katello/repository/sync.rb +14 -7
- data/app/lib/actions/katello/repository/update.rb +11 -5
- data/app/lib/actions/katello/repository/update_http_proxy_details.rb +17 -0
- data/app/lib/actions/katello/repository/upload_files.rb +7 -3
- data/app/lib/actions/katello/subscription/update.rb +11 -0
- data/app/lib/actions/katello/upstream_subscriptions/remove_entitlement.rb +3 -0
- data/app/lib/actions/katello/upstream_subscriptions/remove_entitlements.rb +4 -1
- data/app/lib/actions/middleware/backend_services_check.rb +10 -2
- data/app/lib/actions/middleware/propagate_output.rb +15 -0
- data/app/lib/actions/middleware/pulp3_services_check.rb +9 -0
- data/app/lib/actions/pulp/abstract_async_task.rb +8 -1
- data/app/lib/actions/pulp/orchestration/repository/copy_all_units.rb +19 -0
- data/app/lib/actions/pulp/orchestration/repository/refresh.rb +14 -0
- data/app/lib/actions/pulp/orchestration/repository/refresh_if_needed.rb +13 -0
- data/app/lib/actions/pulp/orchestration/repository/remove_units.rb +14 -0
- data/app/lib/actions/pulp/orchestration/repository/sync.rb +17 -0
- data/app/lib/actions/pulp/repository/copy_all_units.rb +1 -1
- data/app/lib/actions/pulp/repository/create.rb +0 -1
- data/app/lib/actions/pulp/repository/refresh.rb +0 -5
- data/app/lib/actions/pulp/repository/remove_units.rb +1 -1
- data/app/lib/actions/pulp/repository/sync.rb +8 -14
- data/app/lib/actions/pulp3/abstract.rb +2 -1
- data/app/lib/actions/pulp3/abstract_async_task.rb +15 -6
- data/app/lib/actions/pulp3/orchestration/repository/copy_all_units.rb +55 -0
- data/app/lib/actions/pulp3/orchestration/repository/create.rb +1 -2
- data/app/lib/actions/pulp3/orchestration/repository/delete.rb +1 -2
- data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +17 -2
- data/app/lib/actions/pulp3/orchestration/repository/remove_units.rb +18 -0
- data/app/lib/actions/pulp3/orchestration/repository/sync.rb +19 -0
- data/app/lib/actions/pulp3/orchestration/repository/update.rb +15 -0
- data/app/lib/actions/pulp3/repository/copy_content.rb +19 -0
- data/app/lib/actions/pulp3/repository/copy_version.rb +19 -0
- data/app/lib/actions/pulp3/repository/create_publication.rb +3 -2
- data/app/lib/actions/pulp3/repository/presenters/abstract_sync_presenter.rb +42 -0
- data/app/lib/actions/pulp3/repository/presenters/content_unit_presenter.rb +57 -0
- data/app/lib/actions/pulp3/repository/refresh_distribution.rb +7 -3
- data/app/lib/actions/pulp3/repository/remove_units.rb +23 -0
- data/app/lib/actions/pulp3/repository/save_distribution_references.rb +6 -4
- data/app/lib/actions/pulp3/repository/save_publication.rb +5 -4
- data/app/lib/actions/pulp3/repository/save_version.rb +8 -4
- data/app/lib/actions/pulp3/repository/sync.rb +55 -0
- data/app/lib/actions/pulp3/repository/{delete_publisher.rb → update_distributions.rb} +5 -5
- data/app/lib/actions/pulp3/repository/{create_publisher.rb → update_remote.rb} +2 -2
- data/app/lib/actions/pulp3/repository/update_repository.rb +16 -0
- data/app/lib/katello/errors.rb +9 -0
- data/app/lib/katello/resources/candlepin/activation_key.rb +5 -4
- data/app/lib/katello/resources/candlepin/product.rb +4 -0
- data/app/lib/katello/resources/candlepin/upstream_consumer.rb +11 -0
- data/app/lib/katello/resources/candlepin/upstream_pool.rb +6 -2
- data/app/lib/katello/resources/cdn.rb +3 -16
- data/app/lib/katello/util/cdn_var_substitutor.rb +0 -3
- data/app/lib/katello/util/http_proxy.rb +9 -9
- data/app/lib/katello/validators/hostgroup_kickstart_repository_validator.rb +1 -1
- data/app/models/katello/activation_key.rb +14 -0
- data/app/models/katello/activation_key_purpose_addon.rb +6 -0
- data/app/models/katello/ansible_collection.rb +32 -0
- data/app/models/katello/candlepin/repository_mapper.rb +1 -1
- data/app/models/katello/concerns/host_managed_extensions.rb +3 -0
- data/app/models/katello/concerns/http_proxy_extensions.rb +60 -0
- data/app/models/katello/concerns/location_extensions.rb +8 -0
- data/app/models/katello/concerns/organization_extensions.rb +9 -0
- data/app/models/katello/concerns/pulp_database_unit.rb +56 -81
- data/app/models/katello/concerns/setting_extensions.rb +14 -0
- data/app/models/katello/concerns/smart_proxy_extensions.rb +27 -11
- data/app/models/katello/concerns/subscription_facet_host_extensions.rb +8 -1
- data/app/models/katello/content_view.rb +4 -0
- data/app/models/katello/content_view_filter.rb +4 -8
- data/app/models/katello/docker_tag.rb +11 -10
- data/app/models/katello/erratum.rb +22 -0
- data/app/models/katello/event.rb +2 -0
- data/app/models/katello/events/auto_publish_composite_view.rb +41 -0
- data/app/models/katello/glue/pulp/repo.rb +0 -15
- data/app/models/katello/host/content_facet.rb +35 -4
- data/app/models/katello/host/subscription_facet.rb +14 -16
- data/app/models/katello/host_installed_deb.rb +7 -0
- data/app/models/katello/installed_deb.rb +10 -0
- data/app/models/katello/ping.rb +45 -10
- data/app/models/katello/product_content.rb +1 -1
- data/app/models/katello/purpose_addon.rb +11 -0
- data/app/models/katello/repository.rb +52 -41
- data/app/models/katello/repository_ansible_collection.rb +6 -0
- data/app/models/katello/repository_content_view_filter.rb +7 -0
- data/app/models/katello/rhsm_fact_parser.rb +11 -1
- data/app/models/katello/root_repository.rb +46 -4
- data/app/models/katello/srpm.rb +4 -0
- data/app/models/katello/subscription_facet_purpose_addon.rb +6 -0
- data/app/models/katello/yum_metadata_file.rb +3 -3
- data/app/models/setting/content.rb +32 -7
- data/app/overrides/add_about_page.rb +0 -7
- data/app/services/cert/certs.rb +1 -1
- data/app/services/katello/candlepin/consumer.rb +4 -0
- data/app/services/katello/event_queue.rb +33 -3
- data/app/services/katello/pulp/content_counts_calculator.rb +6 -0
- data/app/services/katello/pulp/docker_manifest.rb +1 -2
- data/app/services/katello/pulp/docker_manifest_list.rb +0 -1
- data/app/services/katello/pulp/file_unit.rb +1 -1
- data/app/services/katello/pulp/pulp_content_unit.rb +43 -0
- data/app/services/katello/pulp/repository.rb +32 -5
- data/app/services/katello/pulp/repository/file.rb +6 -1
- data/app/services/katello/pulp/repository/yum.rb +6 -6
- data/app/services/katello/pulp/rpm.rb +1 -1
- data/app/services/katello/pulp/srpm.rb +1 -1
- data/app/services/katello/pulp3/ansible_collection.rb +31 -0
- data/app/services/katello/pulp3/docker_blob.rb +17 -0
- data/app/services/katello/pulp3/docker_manifest.rb +36 -0
- data/app/services/katello/pulp3/docker_manifest_list.rb +30 -0
- data/app/services/katello/pulp3/docker_tag.rb +28 -0
- data/app/services/katello/pulp3/file_unit.rb +25 -0
- data/app/services/katello/pulp3/pulp_content_unit.rb +75 -0
- data/app/services/katello/pulp3/repository.rb +160 -47
- data/app/services/katello/pulp3/repository/ansible_collection.rb +49 -0
- data/app/services/katello/pulp3/repository/docker.rb +55 -0
- data/app/services/katello/pulp3/repository/file.rb +35 -25
- data/app/services/katello/repository_type.rb +15 -5
- data/app/services/katello/repository_type_manager.rb +32 -1
- data/app/views/dashboard/_subscription_widget.html.erb +7 -7
- data/app/views/foreman/smart_proxies/_content_tab.html.erb +5 -1
- data/app/views/katello/api/v2/activation_keys/base.json.rabl +5 -1
- data/app/views/katello/api/v2/ansible_collections/base.json.rabl +7 -0
- data/app/views/katello/api/v2/ansible_collections/index.json.rabl +7 -0
- data/app/views/katello/api/v2/ansible_collections/show.json.rabl +3 -0
- data/app/views/katello/api/v2/host_debs/base.json.rabl +4 -0
- data/app/views/katello/api/v2/host_debs/index.json.rabl +7 -0
- data/app/views/katello/api/v2/ping/show.json.rabl +2 -1
- data/app/views/katello/api/v2/repositories/base.json.rabl +3 -2
- data/app/views/katello/api/v2/repositories/show.json.rabl +8 -1
- data/app/views/katello/api/v2/srpms/index.json.rabl +7 -0
- data/app/views/katello/api/v2/srpms/show.json.rabl +5 -0
- data/app/views/katello/api/v2/subscription_facet/base.json.rabl +5 -1
- data/config/katello.yaml.example +1 -0
- data/config/routes/api/rhsm.rb +1 -0
- data/config/routes/api/v2.rb +16 -0
- data/config/routes/overrides.rb +4 -0
- data/db/migrate/20180502155123_add_installed_deb.rb +23 -0
- data/db/migrate/20190513162209_drop_repository_reference_publisher_href.rb +5 -0
- data/db/migrate/20190605014649_add_purpose_addons.rb +29 -0
- data/db/migrate/20190617142328_create_katello_ansible_collections.rb +25 -0
- data/db/migrate/20190618034438_add_ansible_collection_whitelist_to_katello_root_repositories.rb +5 -0
- data/db/migrate/20190619192151_add_activation_key_system_purpose_attributes.rb +14 -0
- data/db/migrate/20190701174401_add_http_proxy_policy_to_repository_root.rb +12 -0
- data/db/migrate/20190701192616_add_http_proxy_to_repository_root.rb +6 -0
- data/db/migrate/20190702182118_add_metadata_process_after_to_katello_event.rb +6 -0
- data/db/migrate/20190708195809_remove_all_manifest_downloaded.rb +11 -0
- data/db/migrate/20190723171639_update_content_view_filters_repositories_join_table.rb +11 -0
- data/db/seeds.d/115-http_proxy.rb +25 -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-info.controller.js +15 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details.controller.js +69 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-info.html +39 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion-katello-bootstrap.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion_katello.js +3 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-repository-sets-modal.controller.js +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +1 -7
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.routes.js +26 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-actions.controller.js +14 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-installed.controller.js +77 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs.controller.js +63 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-errata.controller.js +18 -21
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs-actions.html +62 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs-installed.html +52 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs.html +9 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html +21 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +1 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version-content.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-yum.html +4 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-debs.factory.js +20 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host.factory.js +9 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/http-proxies/http-proxies.module.js +14 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/http-proxies/http-proxy.factory.js +21 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/product-bulk-action.factory.js +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/products-bulk-http-proxy-modal.controller.js +77 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-http-proxy-modal.html +57 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +25 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.filter.js +13 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +75 -29
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/http-proxy-service.js +53 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +18 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +42 -16
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories.html +7 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +16 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/views/products.html +6 -0
- data/lib/katello.rb +0 -1
- data/lib/katello/engine.rb +2 -0
- data/lib/katello/permission_creator.rb +7 -2
- data/lib/katello/permissions/host_permissions.rb +3 -0
- data/lib/katello/plugin.rb +3 -2
- data/lib/katello/repository_types/ansible_collection.rb +8 -0
- data/lib/katello/repository_types/deb.rb +2 -1
- data/lib/katello/repository_types/docker.rb +23 -4
- data/lib/katello/repository_types/file.rb +7 -1
- data/lib/katello/repository_types/ostree.rb +2 -1
- data/lib/katello/repository_types/puppet.rb +2 -1
- data/lib/katello/repository_types/yum.rb +3 -2
- data/lib/katello/tasks/clean_published_repo_directories.rake +1 -1
- data/lib/katello/tasks/delete_orphaned_content.rake +16 -5
- data/lib/katello/tasks/jenkins.rake +2 -0
- data/lib/katello/tasks/update_content_default_http_proxy.rake +69 -0
- data/lib/katello/version.rb +1 -1
- data/package.json +10 -22
- data/webpack/{move_to_foreman/__mocks__ → __mocks__/foremanJS}/foreman_toast_notifications.js +0 -0
- data/webpack/__mocks__/foremanReact/common/helpers.js +3 -6
- data/webpack/__mocks__/foremanReact/common/keyCodes.js +8 -0
- data/webpack/__mocks__/foremanReact/common/urlHelpers.js +7 -0
- data/webpack/__mocks__/foremanReact/components/Settings/SettingsActions.js +4 -0
- data/webpack/__mocks__/foremanReact/components/Settings/SettingsConstants.js +2 -0
- data/webpack/__mocks__/foremanReact/components/common/Fill/GlobalFill.js +3 -0
- data/webpack/__mocks__/foremanReact/components/common/ModalProgressBar.js +8 -0
- data/webpack/components/SelectOrg/SetOrganization.js +11 -19
- data/webpack/components/WithOrganization/__snapshots__/withOrganization.test.js.snap +1 -3
- data/webpack/components/WithOrganization/withOrganization.js +2 -2
- data/webpack/components/WithOrganization/withOrganization.test.js +2 -2
- data/webpack/components/extensions/about/SystemStatuses.js +55 -0
- data/webpack/components/extensions/about/SystemStatusesActions.js +16 -0
- data/webpack/components/extensions/about/SystemStatusesConsts.js +3 -0
- data/webpack/components/extensions/about/SystemStatusesReducer.js +26 -0
- data/webpack/components/extensions/about/SystemStatusesSelectors.js +3 -0
- data/webpack/components/extensions/about/__tests__/SystemStatuses.fixtures.js +20 -0
- data/webpack/components/extensions/about/__tests__/SystemStatuses.test.js +14 -0
- data/webpack/components/extensions/about/__tests__/SystemStatusesReducer.test.js +32 -0
- data/webpack/components/extensions/about/__tests__/__snapshots__/SystemStatuses.test.js.snap +156 -0
- data/webpack/components/extensions/about/__tests__/__snapshots__/SystemStatusesReducer.test.js.snap +47 -0
- data/webpack/components/extensions/about/index.js +19 -0
- data/webpack/components/extensions/reducers.js +6 -0
- data/webpack/containers/Application/config.js +4 -10
- data/webpack/fills_index.js +10 -0
- data/webpack/move_to_foreman/common/helpers.js +0 -20
- data/webpack/move_to_foreman/components/common/table/components/TableSelectionCell.js +1 -0
- data/webpack/move_to_foreman/components/common/table/formatters/EntitlementsInlineEditFormatter.js +3 -3
- data/webpack/move_to_pf/LoadingState/LoadingState.js +1 -0
- data/webpack/move_to_pf/OptionTooltip/OptionTooltip.scss +2 -1
- data/webpack/move_to_pf/TypeAhead/TypeAhead.js +3 -4
- data/webpack/redux/actions/RedHatRepositories/helpers.js +6 -1
- data/webpack/redux/reducers/index.js +2 -0
- data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetailInfo.js +1 -0
- data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetails.js +1 -0
- data/webpack/scenes/ModuleStreams/Details/Profiles/TableSchema.js +1 -0
- data/webpack/scenes/ModuleStreams/Details/Profiles/__tests__/ProfileRpmsCellFormatter.test.js +0 -2
- data/webpack/scenes/ModuleStreams/Details/Repositories/TableSchema.js +3 -2
- data/webpack/scenes/ModuleStreams/Details/index.js +1 -1
- data/webpack/scenes/ModuleStreams/ModuleStreamsPage.js +2 -0
- data/webpack/scenes/ModuleStreams/ModuleStreamsTable.js +2 -0
- data/webpack/scenes/ModuleStreams/ModuleStreamsTableSchema.js +3 -2
- data/webpack/scenes/ModuleStreams/__tests__/ModuleStreamPage.test.js +0 -1
- data/webpack/scenes/ModuleStreams/__tests__/ModuleStreamsTable.test.js +0 -1
- data/webpack/scenes/ModuleStreams/index.js +1 -1
- data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepository.js +2 -3
- data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepositoryContent.js +1 -0
- data/webpack/scenes/RedHatRepositories/components/RecommendedRepositorySetsToggler.js +1 -0
- data/webpack/scenes/RedHatRepositories/components/RecommendedRepositorySetsToggler.scss +1 -1
- data/webpack/scenes/RedHatRepositories/components/RepositorySetRepositories.js +1 -0
- data/webpack/scenes/RedHatRepositories/components/RepositorySetRepository/RepositorySetRepository.js +3 -4
- data/webpack/scenes/RedHatRepositories/components/RepositorySetRepository/__test__/RepositorySetRepository.test.js +0 -2
- data/webpack/scenes/RedHatRepositories/components/SearchBar.js +1 -0
- data/webpack/scenes/RedHatRepositories/helpers.js +1 -1
- data/webpack/scenes/RedHatRepositories/index.js +3 -2
- data/webpack/scenes/RedHatRepositories/index.scss +1 -1
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailAssociations.js +3 -3
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProductContent.js +1 -0
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProducts.js +1 -0
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetails.js +1 -2
- data/webpack/scenes/Subscriptions/Details/__tests__/SubscriptionDetails.test.js +0 -1
- data/webpack/scenes/Subscriptions/Details/index.js +1 -1
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +1 -0
- data/webpack/scenes/Subscriptions/Manifest/__tests__/ManageManifestModal.test.js +1 -2
- data/webpack/scenes/Subscriptions/SubscriptionReducer.js +1 -1
- data/webpack/scenes/Subscriptions/SubscriptionsPage.js +3 -2
- data/webpack/scenes/Subscriptions/SubscriptionsPage.scss +1 -2
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +9 -9
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsTableSchema.js +2 -2
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/UpstreamSubscriptionsPage.test.js +0 -1
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/index.js +1 -1
- data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +1 -2
- data/webpack/scenes/Subscriptions/__tests__/SubscriptionsReducer.test.js +2 -1
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +2 -1
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionTypeFormatter.js +3 -2
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTable.js +1 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTableSchema.js +3 -2
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/SubscriptionsTable.test.js +1 -1
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/DeleteDialog.js +1 -1
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/InputsErrorsDialog.js +1 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/UnsavedChangesDialog.js +1 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/UpdateDialog.js +1 -1
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Table.js +1 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +1 -0
- data/webpack/scenes/Subscriptions/index.js +1 -1
- data/webpack/scenes/Tasks/helpers.js +5 -6
- metadata +161 -20
- data/app/lib/actions/katello/repository/clear.rb +0 -11
- data/app/views/overrides/about/_system_status.html.erb +0 -19
- data/webpack/move_to_foreman/Settings/SettingsActions.js +0 -28
- data/webpack/move_to_foreman/Settings/SettingsConstants.js +0 -3
- data/webpack/move_to_foreman/Settings/__tests__/SettingsActions.test.js +0 -41
- data/webpack/move_to_foreman/Settings/__tests__/settings.fixtures.js +0 -34
- data/webpack/move_to_foreman/components/common/ModalProgressBar/ModalProgressBar.js +0 -48
- data/webpack/move_to_foreman/components/common/ModalProgressBar/ModalProgressBar.scss +0 -15
- data/webpack/move_to_foreman/components/common/ModalProgressBar/__tests__/ModalProgressBar.test.js +0 -22
- data/webpack/move_to_foreman/components/common/ModalProgressBar/__tests__/__snapshots__/ModalProgressBar.test.js.snap +0 -60
- data/webpack/move_to_foreman/components/common/ModalProgressBar/index.js +0 -4
- data/webpack/move_to_foreman/foreman_toast_notifications.js +0 -22
@@ -18,7 +18,6 @@ module Katello
|
|
18
18
|
CDN_DOCKER_CONTAINER_LISTING = "CONTAINER_REGISTRY_LISTING".freeze
|
19
19
|
|
20
20
|
attr_reader :url, :product, :options
|
21
|
-
attr_accessor :proxy_host, :proxy_port, :proxy_user, :proxy_password
|
22
21
|
|
23
22
|
def substitutor(logger = nil)
|
24
23
|
@logger = logger
|
@@ -39,7 +38,6 @@ module Katello
|
|
39
38
|
options.reverse_merge!(:cert_store => store)
|
40
39
|
end
|
41
40
|
|
42
|
-
load_proxy_settings
|
43
41
|
@product = options[:product]
|
44
42
|
|
45
43
|
@url = url
|
@@ -137,25 +135,14 @@ module Katello
|
|
137
135
|
end
|
138
136
|
|
139
137
|
def net_http_class
|
140
|
-
if
|
141
|
-
Net::HTTP::Proxy
|
138
|
+
if (proxy = ::HttpProxy.default_global_content_proxy)
|
139
|
+
uri = URI(proxy.url) #Net::HTTP::Proxy ignores port as part of the url
|
140
|
+
Net::HTTP::Proxy("#{uri.host}#{uri.path}", uri.port, proxy.username, proxy.password)
|
142
141
|
else
|
143
142
|
Net::HTTP
|
144
143
|
end
|
145
144
|
end
|
146
145
|
|
147
|
-
def load_proxy_settings
|
148
|
-
if SETTINGS[:katello][:cdn_proxy] && SETTINGS[:katello][:cdn_proxy][:host]
|
149
|
-
self.proxy_host = parse_host(SETTINGS[:katello][:cdn_proxy][:host])
|
150
|
-
self.proxy_port = SETTINGS[:katello][:cdn_proxy][:port]
|
151
|
-
self.proxy_user = SETTINGS[:katello][:cdn_proxy][:user]
|
152
|
-
self.proxy_password = SETTINGS[:katello][:cdn_proxy][:password]
|
153
|
-
end
|
154
|
-
rescue URI::Error => e
|
155
|
-
Rails.logger.error "Could not parse cdn_proxy:"
|
156
|
-
Rails.logger.error e.to_s
|
157
|
-
end
|
158
|
-
|
159
146
|
def parse_host(host_or_url)
|
160
147
|
uri = URI.parse(host_or_url)
|
161
148
|
return uri.host || uri.path
|
@@ -6,34 +6,34 @@ module Katello
|
|
6
6
|
def proxy_uri
|
7
7
|
#Reset the scheme to proxy(s) based on http or https to handle cgi unescaping in rest-client
|
8
8
|
# this relies on katello/util/proxy_uri
|
9
|
-
if
|
9
|
+
if proxy
|
10
10
|
scheme = 'proxy' if proxy_scheme == 'http'
|
11
11
|
scheme = 'proxys' if proxy_scheme == 'https'
|
12
12
|
|
13
13
|
uri = URI("#{scheme}://#{proxy_host}:#{proxy_port}")
|
14
|
-
if
|
15
|
-
uri.user = CGI.escape(
|
16
|
-
uri.password = CGI.escape(
|
14
|
+
if proxy && proxy.username.present?
|
15
|
+
uri.user = CGI.escape(proxy.username)
|
16
|
+
uri.password = CGI.escape(proxy.password)
|
17
17
|
end
|
18
18
|
|
19
19
|
uri.to_s
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
def
|
24
|
-
|
23
|
+
def proxy
|
24
|
+
::HttpProxy.default_global_content_proxy
|
25
25
|
end
|
26
26
|
|
27
27
|
def proxy_host
|
28
|
-
|
28
|
+
URI(proxy.url).host
|
29
29
|
end
|
30
30
|
|
31
31
|
def proxy_scheme
|
32
|
-
|
32
|
+
URI(proxy.url).scheme
|
33
33
|
end
|
34
34
|
|
35
35
|
def proxy_port
|
36
|
-
|
36
|
+
URI(proxy.url).port
|
37
37
|
end
|
38
38
|
end # HttpProxy
|
39
39
|
end # Util
|
@@ -11,7 +11,7 @@ module Katello
|
|
11
11
|
return unless hostgroup.kickstart_repository_id
|
12
12
|
|
13
13
|
msg = if hostgroup.content_source.blank?
|
14
|
-
|
14
|
+
_("Please select a content source before assigning a kickstart repository")
|
15
15
|
elsif hostgroup.operatingsystem.blank?
|
16
16
|
_("Please select an operating system before assigning a kickstart repository")
|
17
17
|
elsif !hostgroup.operatingsystem.is_a?(Redhat)
|
@@ -22,10 +22,15 @@ module Katello
|
|
22
22
|
has_many :subscription_facet_activation_keys, :class_name => "Katello::SubscriptionFacetActivationKey", :dependent => :destroy
|
23
23
|
has_many :subscription_facets, :through => :subscription_facet_activation_keys
|
24
24
|
|
25
|
+
has_many :activation_key_purpose_addons, :class_name => "Katello::ActivationKeyPurposeAddon", :dependent => :destroy, :inverse_of => :activation_key
|
26
|
+
has_many :purpose_addons, :class_name => "Katello::PurposeAddon", :through => :activation_key_purpose_addons
|
27
|
+
|
25
28
|
alias_method :lifecycle_environment, :environment
|
26
29
|
|
27
30
|
before_validation :set_default_content_view, :unless => :persisted?
|
28
31
|
|
32
|
+
accepts_nested_attributes_for :purpose_addons
|
33
|
+
|
29
34
|
validates_lengths_from_database
|
30
35
|
validates_with Validators::KatelloNameFormatValidator, :attributes => :name
|
31
36
|
validates :name, :presence => true
|
@@ -61,6 +66,9 @@ module Katello
|
|
61
66
|
scoped_search :on => :name, :relation => :subscriptions, :rename => :subscription_name, :complete_value => true, :ext_method => :find_by_subscription_name
|
62
67
|
scoped_search :on => :id, :relation => :subscriptions, :rename => :subscription_id, :complete_value => true,
|
63
68
|
:only_explicit => true, :validator => ScopedSearch::Validators::INTEGER, :ext_method => :find_by_subscription_id
|
69
|
+
scoped_search :on => :purpose_usage, :rename => :usage, :complete_value => true
|
70
|
+
scoped_search :on => :purpose_role, :rename => :role, :complete_value => true
|
71
|
+
scoped_search :on => :name, :rename => :addon, :relation => :purpose_addon, :complete_value => true, :ext_method => :find_by_purpose_addons
|
64
72
|
|
65
73
|
def environment_exists
|
66
74
|
if environment_id && environment.nil?
|
@@ -162,6 +170,12 @@ module Katello
|
|
162
170
|
end
|
163
171
|
end
|
164
172
|
|
173
|
+
def self.find_by_purpose_addons(_key, operator, value)
|
174
|
+
conditions = sanitize_sql_for_conditions(["#{Katello::PurposeAddon.table_name}.name #{operator} ?", value_to_sql(operator, value)])
|
175
|
+
activation_keys = ::Katello::ActivationKey.joins(:purpose_addons).where(conditions)
|
176
|
+
return_activation_keys_by_id(activation_keys.pluck(:id))
|
177
|
+
end
|
178
|
+
|
165
179
|
private
|
166
180
|
|
167
181
|
def set_default_content_view
|
@@ -0,0 +1,6 @@
|
|
1
|
+
module Katello
|
2
|
+
class ActivationKeyPurposeAddon < Katello::Model
|
3
|
+
belongs_to :activation_key, inverse_of: :activation_key_purpose_addons, class_name: 'Katello::ActivationKey'
|
4
|
+
belongs_to :purpose_addon, inverse_of: :activation_key_purpose_addons, class_name: 'Katello::PurposeAddon'
|
5
|
+
end
|
6
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Katello
|
2
|
+
class AnsibleCollection < ApplicationRecord
|
3
|
+
include Concerns::PulpDatabaseUnit
|
4
|
+
|
5
|
+
self.table_name = 'katello_ansible_collections'
|
6
|
+
|
7
|
+
CONTENT_TYPE = 'ansible collection'.freeze
|
8
|
+
|
9
|
+
has_many :repository_ansible_collections, :class_name => "Katello::RepositoryAnsibleCollection", :dependent => :destroy, :inverse_of => :ansible_collection, :foreign_key => :ansible_collection_id
|
10
|
+
has_many :repositories, :through => :repository_ansible_collections, :class_name => "Katello::Repository"
|
11
|
+
|
12
|
+
scoped_search :on => :name, :complete_value => true
|
13
|
+
scoped_search :on => :namespace, :complete_value => true
|
14
|
+
scoped_search :on => :version, :complete_value => true
|
15
|
+
|
16
|
+
def self.default_sort
|
17
|
+
order(:name)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.repository_association_class
|
21
|
+
RepositoryAnsibleCollection
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.unit_id_field
|
25
|
+
'ansible_collection_id'
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.total_for_repositories(repos)
|
29
|
+
self.in_repositories(repos).count
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -39,6 +39,8 @@ module Katello
|
|
39
39
|
has_many :host_available_module_streams, :class_name => "::Katello::HostAvailableModuleStream", :foreign_key => :host_id, :dependent => :delete_all
|
40
40
|
has_many :available_module_streams, :class_name => "::Katello::AvailableModuleStream", :through => :host_available_module_streams
|
41
41
|
|
42
|
+
has_many :host_installed_debs, :class_name => "::Katello::HostInstalledDeb", :foreign_key => :host_id, :dependent => :delete_all
|
43
|
+
has_many :installed_debs, :class_name => "::Katello::InstalledDeb", :through => :host_installed_debs
|
42
44
|
has_many :host_traces, :class_name => "::Katello::HostTracer", :foreign_key => :host_id, :dependent => :destroy
|
43
45
|
|
44
46
|
has_many :host_collection_hosts, :class_name => "::Katello::HostCollectionHosts", :foreign_key => :host_id, :dependent => :destroy
|
@@ -55,6 +57,7 @@ module Katello
|
|
55
57
|
scoped_search :relation => :installed_packages, :on => :name, :complete_value => true, :rename => :installed_package_name, :only_explicit => true
|
56
58
|
scoped_search :relation => :available_module_streams, :on => :name, :complete_value => true, :rename => :available_module_stream_name, :only_explicit => true
|
57
59
|
scoped_search :relation => :available_module_streams, :on => :stream, :complete_value => true, :rename => :available_module_stream_stream, :only_explicit => true
|
60
|
+
scoped_search :relation => :installed_debs, :on => :name, :complete_value => true, :rename => :installed_package_name, :only_explicit => true
|
58
61
|
scoped_search :relation => :host_traces, :on => :application, :complete_value => true, :rename => :trace_app, :only_explicit => true
|
59
62
|
scoped_search :relation => :host_traces, :on => :app_type, :complete_value => true, :rename => :trace_app_type, :only_explicit => true
|
60
63
|
scoped_search :relation => :host_traces, :on => :helper, :complete_value => true, :rename => :trace_helper, :only_explicit => true
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Katello
|
2
|
+
module Concerns
|
3
|
+
module HttpProxyExtensions
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
has_many :root_repositories, :class_name => "::Katello::RootRepository", :foreign_key => :http_proxy_id,
|
8
|
+
:inverse_of => :http_proxy, :dependent => :nullify
|
9
|
+
after_update :update_default_proxy_setting
|
10
|
+
after_commit :update_repository_proxy_details
|
11
|
+
|
12
|
+
def self.default_global_content_proxy
|
13
|
+
if Setting[:content_default_http_proxy]
|
14
|
+
HttpProxy.unscoped.find_by(name: Setting[:content_default_http_proxy])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def update_default_proxy_setting
|
20
|
+
changes = self.previous_changes
|
21
|
+
if changes.key?(:name)
|
22
|
+
previous_name = changes[:name].first
|
23
|
+
setting = Setting.find_by(name: 'content_default_http_proxy')
|
24
|
+
|
25
|
+
if setting && setting.value == previous_name && !previous_name.blank?
|
26
|
+
setting.update_attribute(:value, self.name)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def update_repository_proxy_details
|
32
|
+
changes = self.previous_changes
|
33
|
+
if changes.key?(:url) || changes.key?(:username) || changes.key?(:password)
|
34
|
+
|
35
|
+
root_repos = RootRepository.with_selected_proxy(id)
|
36
|
+
|
37
|
+
if self == HttpProxy.default_global_content_proxy
|
38
|
+
root_repos += RootRepository.with_global_proxy
|
39
|
+
end
|
40
|
+
|
41
|
+
repos = root_repos.uniq.collect(&:library_instance)
|
42
|
+
|
43
|
+
unless repos.empty?
|
44
|
+
ForemanTasks.async_task(
|
45
|
+
::Actions::BulkAction,
|
46
|
+
::Actions::Katello::Repository::UpdateHttpProxyDetails,
|
47
|
+
repos.sort_by(&:pulp_id))
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def name_and_url
|
53
|
+
uri = URI(url)
|
54
|
+
uri.password = nil
|
55
|
+
uri.user = nil
|
56
|
+
"#{name} (#{uri})"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -7,6 +7,7 @@ module Katello
|
|
7
7
|
after_initialize :set_default_overrides, :if => :new_record?
|
8
8
|
after_save :reset_settings
|
9
9
|
before_destroy :assert_deletable
|
10
|
+
after_create :associate_default_http_proxy
|
10
11
|
end
|
11
12
|
|
12
13
|
def set_default_overrides
|
@@ -58,6 +59,13 @@ module Katello
|
|
58
59
|
end
|
59
60
|
end
|
60
61
|
|
62
|
+
def associate_default_http_proxy
|
63
|
+
if (default_proxy = ::HttpProxy.default_global_content_proxy)
|
64
|
+
default_proxy.locations << self
|
65
|
+
default_proxy.save
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
61
69
|
module ClassMethods
|
62
70
|
def default_puppet_content_location
|
63
71
|
::Location.unscoped.find_by_title(::Setting[:default_location_puppet_content]) if ::Setting[:default_location_puppet_content].present?
|
@@ -41,6 +41,8 @@ module Katello
|
|
41
41
|
scoped_search :on => :label, :complete_value => :true
|
42
42
|
|
43
43
|
after_create :associate_default_capsule
|
44
|
+
after_create :associate_default_http_proxy
|
45
|
+
|
44
46
|
validates_with Validators::KatelloLabelFormatValidator, :attributes => :label
|
45
47
|
validates :label, :uniqueness => true
|
46
48
|
|
@@ -96,6 +98,13 @@ module Katello
|
|
96
98
|
smart_proxy.organizations << self if smart_proxy
|
97
99
|
end
|
98
100
|
|
101
|
+
def associate_default_http_proxy
|
102
|
+
if (default_proxy = ::HttpProxy.default_global_content_proxy)
|
103
|
+
default_proxy.organizations << self
|
104
|
+
default_proxy.save
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
99
108
|
def create_anonymous_provider
|
100
109
|
self.providers << Katello::Provider.new(:name => Katello::Provider::ANONYMOUS, :provider_type => Katello::Provider::ANONYMOUS)
|
101
110
|
end
|
@@ -24,7 +24,7 @@ module Katello
|
|
24
24
|
"::Katello::Pulp::#{self.name.demodulize}".constantize
|
25
25
|
end
|
26
26
|
|
27
|
-
def
|
27
|
+
def many_repository_associations
|
28
28
|
true
|
29
29
|
end
|
30
30
|
|
@@ -44,7 +44,7 @@ module Katello
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def in_repositories(repos)
|
47
|
-
if
|
47
|
+
if many_repository_associations
|
48
48
|
where(:id => repository_association_class.where(:repository_id => repos).select(unit_id_field))
|
49
49
|
else
|
50
50
|
where(:repository_id => repos)
|
@@ -55,85 +55,55 @@ module Katello
|
|
55
55
|
content_unit_class.new(pulp_id)
|
56
56
|
end
|
57
57
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
service_class = SmartProxy.pulp_master!.content_service(content_type)
|
58
|
+
def unit_id_field
|
59
|
+
"#{self.name.demodulize.underscore}_id"
|
60
|
+
end
|
62
61
|
|
63
|
-
|
62
|
+
def import_all(pulp_ids = nil, repository = nil)
|
63
|
+
ids_to_associate = []
|
64
|
+
service_class = SmartProxy.pulp_master!.content_service(content_type)
|
65
|
+
service_class.pulp_units_batch_all(pulp_ids).each do |units|
|
64
66
|
units.each do |unit|
|
65
67
|
unit = unit.with_indifferent_access
|
66
68
|
model = Katello::Util::Support.active_record_retry do
|
67
|
-
self.where(:pulp_id => unit[
|
69
|
+
self.where(:pulp_id => unit[service_class.unit_identifier]).first_or_create
|
68
70
|
end
|
69
|
-
|
70
71
|
service = service_class.new(model.pulp_id)
|
71
72
|
service.backend_data = unit
|
72
73
|
service.update_model(model)
|
74
|
+
ids_to_associate << model.pulp_id
|
73
75
|
end
|
74
|
-
if index_repository_association
|
75
|
-
units.map { |unit| unit.slice('_id', 'repository_memberships') }
|
76
|
-
else
|
77
|
-
units.count
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
if pulp_ids
|
82
|
-
results = content_unit_class.fetch_by_uuids(pulp_ids, &process_block).flatten
|
83
|
-
update_repository_associations(results, true) if index_repository_association
|
84
|
-
else
|
85
|
-
results = content_unit_class.fetch_all(&process_block).flatten
|
86
|
-
update_repository_associations(results) if index_repository_association
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
def import_for_repository(repository, force = false)
|
91
|
-
ids = content_unit_class.ids_for_repository(repository.pulp_id)
|
92
|
-
# Rpms cannot change in Pulp so we do not index them if they are already present
|
93
|
-
# in our database. Errata and Package Groups can change in Pulp, so we index
|
94
|
-
# all of them in the repository on each sync.
|
95
|
-
if immutable_unit_types.include?(self) && !force
|
96
|
-
ids_to_import = ids - repository.rpms.map(&:pulp_id)
|
97
|
-
else
|
98
|
-
ids_to_import = ids
|
99
76
|
end
|
100
|
-
|
101
|
-
self.sync_repository_associations(repository, :pulp_ids => ids) if self.manage_repository_association
|
102
|
-
end
|
103
|
-
|
104
|
-
def unit_id_field
|
105
|
-
"#{self.name.demodulize.underscore}_id"
|
77
|
+
sync_repository_associations(repository, :pulp_ids => ids_to_associate, :additive => true) if self.many_repository_associations && repository && ids_to_associate.present?
|
106
78
|
end
|
107
79
|
|
108
|
-
def
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
insert_query = "insert into #{repository_association_class.table_name} (repository_id, #{unit_id_field})
|
114
|
-
select #{dest_repo.id} as repository_id, #{unit_id_field} from #{repository_association_class.table_name}
|
115
|
-
where repository_id = #{source_repo.id} and #{unit_id_field} not in (select #{unit_id_field}
|
116
|
-
from #{repository_association_class.table_name} where repository_id = #{dest_repo.id})"
|
117
|
-
else
|
118
|
-
columns = column_names - ["id", "pulp_id", "created_at", "updated_at", "repository_id"]
|
119
|
-
|
120
|
-
delete_query = "delete from #{self.table_name} where repository_id = #{dest_repo.id} and
|
121
|
-
pulp_id not in (select pulp_id from #{self.table_name} where repository_id = #{source_repo.id})"
|
122
|
-
insert_query = "insert into #{self.table_name} (repository_id, pulp_id, #{columns.join(',')})
|
123
|
-
select #{dest_repo.id} as repository_id, pulp_id, #{columns.join(',')} from #{self.table_name}
|
124
|
-
where repository_id = #{source_repo.id} and pulp_id not in (select pulp_id
|
125
|
-
from #{self.table_name} where repository_id = #{dest_repo.id})"
|
80
|
+
def import_for_repository(repository)
|
81
|
+
pulp_ids = []
|
82
|
+
service_class = SmartProxy.pulp_master!.content_service(content_type)
|
83
|
+
fetch_only_ids = !repository.content_view.default?
|
126
84
|
|
85
|
+
service_class.pulp_units_batch_for_repo(repository, fetch_identifiers: fetch_only_ids).each do |units|
|
86
|
+
units.each do |unit|
|
87
|
+
unit = unit.with_indifferent_access
|
88
|
+
pulp_id = unit[service_class.unit_identifier]
|
89
|
+
unless fetch_only_ids
|
90
|
+
model = Katello::Util::Support.active_record_retry do
|
91
|
+
self.where(:pulp_id => pulp_id).first_or_create
|
92
|
+
end
|
93
|
+
service = service_class.new(model.pulp_id)
|
94
|
+
service.backend_data = unit
|
95
|
+
model.repository_id = repository.id unless many_repository_associations
|
96
|
+
service.update_model(model)
|
97
|
+
end
|
98
|
+
pulp_ids << pulp_id
|
99
|
+
end
|
127
100
|
end
|
128
|
-
|
129
|
-
ActiveRecord::Base.connection.execute(insert_query)
|
101
|
+
sync_repository_associations(repository, :pulp_ids => pulp_ids) if self.many_repository_associations
|
130
102
|
end
|
131
103
|
|
132
104
|
def sync_repository_associations(repository, options = {})
|
133
105
|
additive = options.fetch(:additive, false)
|
134
|
-
|
135
|
-
pulp_ids = options.fetch(:pulp_ids) if associated_ids.nil?
|
136
|
-
|
106
|
+
pulp_ids = options.fetch(:pulp_ids)
|
137
107
|
associated_ids = with_pulp_id(pulp_ids).pluck(:id) if pulp_ids
|
138
108
|
|
139
109
|
table_name = self.repository_association_class.table_name
|
@@ -163,27 +133,32 @@ module Katello
|
|
163
133
|
end
|
164
134
|
end
|
165
135
|
|
166
|
-
def
|
167
|
-
|
168
|
-
|
136
|
+
def copy_repository_associations(source_repo, dest_repo)
|
137
|
+
if many_repository_associations
|
138
|
+
delete_query = "delete from #{repository_association_class.table_name} where repository_id = #{dest_repo.id} and
|
139
|
+
#{unit_id_field} not in (select #{unit_id_field} from #{repository_association_class.table_name} where repository_id = #{source_repo.id})"
|
169
140
|
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
141
|
+
insert_query = "insert into #{repository_association_class.table_name} (repository_id, #{unit_id_field})
|
142
|
+
select #{dest_repo.id} as repository_id, #{unit_id_field} from #{repository_association_class.table_name}
|
143
|
+
where repository_id = #{source_repo.id} and #{unit_id_field} not in (select #{unit_id_field}
|
144
|
+
from #{repository_association_class.table_name} where repository_id = #{dest_repo.id})"
|
145
|
+
else
|
146
|
+
columns = column_names - ["id", "pulp_id", "created_at", "updated_at", "repository_id"]
|
147
|
+
|
148
|
+
delete_query = "delete from #{self.table_name} where repository_id = #{dest_repo.id} and
|
149
|
+
pulp_id not in (select pulp_id from #{self.table_name} where repository_id = #{source_repo.id})"
|
150
|
+
insert_query = "insert into #{self.table_name} (repository_id, pulp_id, #{columns.join(',')})
|
151
|
+
select #{dest_repo.id} as repository_id, pulp_id, #{columns.join(',')} from #{self.table_name}
|
152
|
+
where repository_id = #{source_repo.id} and pulp_id not in (select pulp_id
|
153
|
+
from #{self.table_name} where repository_id = #{dest_repo.id})"
|
182
154
|
|
183
|
-
repo_unit_id.each do |repo_pulp_id, unit_pulp_ids|
|
184
|
-
sync_repository_associations(Repository.find_by(:pulp_id => repo_pulp_id), :pulp_ids => unit_pulp_ids, :additive => additive)
|
185
|
-
end
|
186
155
|
end
|
156
|
+
ActiveRecord::Base.connection.execute(delete_query)
|
157
|
+
ActiveRecord::Base.connection.execute(insert_query)
|
158
|
+
end
|
159
|
+
|
160
|
+
def with_pulp_id(unit_pulp_ids)
|
161
|
+
where('pulp_id in (?)', unit_pulp_ids)
|
187
162
|
end
|
188
163
|
end
|
189
164
|
end
|