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
@@ -8,11 +8,25 @@ module Katello
|
|
8
8
|
if: ->(setting) { setting.name == 'default_download_policy' }
|
9
9
|
|
10
10
|
after_save :recalculate_errata_status
|
11
|
+
after_commit :update_global_proxies
|
11
12
|
end
|
12
13
|
|
13
14
|
def recalculate_errata_status
|
14
15
|
ForemanTasks.async_task(Actions::Katello::Host::RecalculateErrataStatus) if saved_change_to_attribute?(:value) && name == 'errata_status_installable'
|
15
16
|
end
|
17
|
+
|
18
|
+
def update_global_proxies
|
19
|
+
if saved_change_to_attribute?(:value) && name == 'content_default_http_proxy'
|
20
|
+
repos = RootRepository.with_global_proxy.collect(&:library_instance).uniq
|
21
|
+
|
22
|
+
unless repos.empty?
|
23
|
+
ForemanTasks.async_task(
|
24
|
+
::Actions::BulkAction,
|
25
|
+
::Actions::Katello::Repository::UpdateHttpProxyDetails,
|
26
|
+
repos.sort_by(&:pulp_id))
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
16
30
|
end
|
17
31
|
end
|
18
32
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'proxy_api'
|
2
2
|
require 'proxy_api/pulp'
|
3
3
|
require 'proxy_api/pulp_node'
|
4
|
+
|
4
5
|
module Katello
|
5
6
|
module Concerns
|
6
7
|
module SmartProxyExtensions
|
@@ -14,6 +15,7 @@ module Katello
|
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
18
|
+
PULP3_FEATURE = "Pulp3".freeze
|
17
19
|
PULP_FEATURE = "Pulp".freeze
|
18
20
|
PULP_NODE_FEATURE = "Pulp Node".freeze
|
19
21
|
|
@@ -113,16 +115,15 @@ module Katello
|
|
113
115
|
@pulp_api ||= Katello::Pulp::Server.config(pulp_url, User.remote_user)
|
114
116
|
end
|
115
117
|
|
116
|
-
def
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
client
|
118
|
+
def pulp3_configuration(config_class)
|
119
|
+
config_class.new do |config|
|
120
|
+
config.host = pulp3_host!
|
121
|
+
config.scheme = 'https'
|
122
|
+
config.username = 'admin'
|
123
|
+
config.password = 'password'
|
124
|
+
config.debugging = true
|
125
|
+
config.logger = ::Foreman::Logging.logger('katello/pulp_rest')
|
126
|
+
end
|
126
127
|
end
|
127
128
|
|
128
129
|
def backend_service_type(repository)
|
@@ -133,17 +134,32 @@ module Katello
|
|
133
134
|
end
|
134
135
|
end
|
135
136
|
|
137
|
+
def pulp3_enabled?
|
138
|
+
self.has_feature? PULP3_FEATURE
|
139
|
+
end
|
140
|
+
|
136
141
|
def pulp3_support?(repository)
|
137
142
|
type = Katello::RepositoryTypeManager.repository_types[repository.content_type]
|
138
143
|
type.pulp3_plugin && self.capabilities('Pulp3').try(:include?, type.pulp3_plugin)
|
139
144
|
end
|
140
145
|
|
146
|
+
def content_pulp3_support?(content_type)
|
147
|
+
content_type = content_type.is_a?(String) ? content_type : content_type.model_class::CONTENT_TYPE
|
148
|
+
type = Katello::RepositoryTypeManager.find_repository_type content_type
|
149
|
+
type.pulp3_plugin && SmartProxy.pulp_master!.capabilities('Pulp3').try(:include?, type.pulp3_plugin)
|
150
|
+
end
|
151
|
+
|
141
152
|
def pulp3_host!
|
142
153
|
url = self.setting('Pulp3', 'pulp_url')
|
143
154
|
fail "Cannot determine pulp3 url, check smart proxy configuration" unless url
|
144
155
|
URI.parse(url).host
|
145
156
|
end
|
146
157
|
|
158
|
+
def pulp3_url(path = nil)
|
159
|
+
pulp_url = self.setting('Pulp3', 'pulp_url')
|
160
|
+
path.blank? ? pulp_url : "#{pulp_url.sub(%r|/$|, '')}/#{path.sub(%r|^/|, '')}"
|
161
|
+
end
|
162
|
+
|
147
163
|
def pulp_mirror?
|
148
164
|
self.has_feature? PULP_NODE_FEATURE
|
149
165
|
end
|
@@ -177,7 +193,7 @@ module Katello
|
|
177
193
|
end
|
178
194
|
|
179
195
|
#this will rely on smart proxy capabilities when available
|
180
|
-
content_type.pulp2_service_class
|
196
|
+
content_pulp3_support?(content_type) ? content_type.pulp3_service_class : content_type.pulp2_service_class
|
181
197
|
end
|
182
198
|
|
183
199
|
def set_default_download_policy
|
@@ -34,6 +34,7 @@ module Katello
|
|
34
34
|
|
35
35
|
has_many :activation_keys, :through => :subscription_facet
|
36
36
|
has_many :pools, :through => :subscription_facet
|
37
|
+
has_many :purpose_addons, :through => :subscription_facet
|
37
38
|
has_many :subscriptions, :through => :pools
|
38
39
|
has_one :subscription_status_object, :class_name => 'Katello::SubscriptionStatus', :foreign_key => 'host_id', :dependent => :destroy
|
39
40
|
has_one :purpose_sla_status_object, :class_name => 'Katello::PurposeSlaStatus', :foreign_key => 'host_id', :dependent => :destroy
|
@@ -68,7 +69,7 @@ module Katello
|
|
68
69
|
scoped_search :on => :id, :relation => :pools, :rename => :subscription_id, :complete_value => true, :ext_method => :find_by_subscription_id, :only_explicit => true
|
69
70
|
scoped_search :on => :purpose_role, :rename => :role, :relation => :subscription_facet, :complete_value => true
|
70
71
|
scoped_search :on => :purpose_usage, :rename => :usage, :relation => :subscription_facet, :complete_value => true
|
71
|
-
scoped_search :on => :
|
72
|
+
scoped_search :on => :name, :rename => :addon, :relation => :purpose_addons, :complete_value => true, :ext_method => :find_by_purpose_addon
|
72
73
|
end
|
73
74
|
|
74
75
|
module ClassMethods
|
@@ -76,6 +77,12 @@ module Katello
|
|
76
77
|
::Katello::PurposeStatus.status_map
|
77
78
|
end
|
78
79
|
|
80
|
+
def find_by_purpose_addon(_key, operator, value)
|
81
|
+
conditions = sanitize_sql_for_conditions(["#{Katello::PurposeAddon.table_name}.name #{operator} ?", value_to_sql(operator, value)])
|
82
|
+
hosts = ::Host::Managed.joins(:purpose_addons).where(conditions)
|
83
|
+
return_hosts(hosts)
|
84
|
+
end
|
85
|
+
|
79
86
|
def find_by_activation_key(_key, operator, value)
|
80
87
|
conditions = sanitize_sql_for_conditions(["#{Katello::ActivationKey.table_name}.name #{operator} ?", value_to_sql(operator, value)])
|
81
88
|
hosts = ::Host::Managed.joins(:activation_keys).where(conditions)
|
@@ -318,6 +318,10 @@ module Katello
|
|
318
318
|
components.select { |component| component.repositories.where(:library_instance => library_instance).any? }
|
319
319
|
end
|
320
320
|
|
321
|
+
def auto_publish_components
|
322
|
+
component_composites.where(latest: true).joins(:composite_content_view).where(self.class.table_name => {auto_publish: true})
|
323
|
+
end
|
324
|
+
|
321
325
|
def publish_repositories
|
322
326
|
repositories = composite? ? repositories_to_publish_by_library_instance.values : repositories_to_publish
|
323
327
|
repositories.each do |repos|
|
@@ -13,12 +13,8 @@ module Katello
|
|
13
13
|
:class_name => "Katello::ContentView",
|
14
14
|
:inverse_of => :filters
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
has_and_belongs_to_many :repositories,
|
19
|
-
:uniq => true,
|
20
|
-
:class_name => "Katello::Repository",
|
21
|
-
:join_table => :katello_content_view_filters_repositories
|
16
|
+
has_many :repository_content_view_filters, :class_name => "Katello::RepositoryContentViewFilter", :dependent => :delete_all, :inverse_of => :filter, :foreign_key => :content_view_filter_id
|
17
|
+
has_many :repositories, :through => :repository_content_view_filters, :class_name => "Katello::Repository"
|
22
18
|
|
23
19
|
validates_lengths_from_database
|
24
20
|
validate :validate_content_view
|
@@ -124,8 +120,8 @@ module Katello
|
|
124
120
|
end
|
125
121
|
|
126
122
|
def self.applicable(repo)
|
127
|
-
query = %{ (katello_content_view_filters.id in (select content_view_filter_id from
|
128
|
-
(katello_content_view_filters.id not in (select content_view_filter_id from
|
123
|
+
query = %{ (katello_content_view_filters.id in (select content_view_filter_id from katello_repository_content_view_filters where repository_id = #{repo.id})) or
|
124
|
+
(katello_content_view_filters.id not in (select content_view_filter_id from katello_repository_content_view_filters))
|
129
125
|
}
|
130
126
|
where(query).select("DISTINCT katello_content_view_filters.id")
|
131
127
|
end
|
@@ -48,10 +48,16 @@ module Katello
|
|
48
48
|
where(:id => ids)
|
49
49
|
end
|
50
50
|
|
51
|
-
def self.
|
52
|
-
|
53
|
-
super
|
54
|
-
|
51
|
+
def self.import_for_repository(repository)
|
52
|
+
self.where(:repository_id => repository).destroy_all
|
53
|
+
super(repository)
|
54
|
+
pulp_ids = self.where(:repository_id => repository.id).pluck(:pulp_id)
|
55
|
+
import_all(pulp_ids) unless pulp_ids.blank?
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.import_all(pulp_ids = nil)
|
59
|
+
self.destroy_all if pulp_ids.blank?
|
60
|
+
self.where(:repository_id => nil).destroy_all
|
55
61
|
if pulp_ids
|
56
62
|
repos = ::Katello::Repository.joins(:docker_tags).where("katello_docker_tags.pulp_id" => pulp_ids).distinct
|
57
63
|
::Katello::DockerMetaTag.import_meta_tags(repos)
|
@@ -60,12 +66,7 @@ module Katello
|
|
60
66
|
end
|
61
67
|
end
|
62
68
|
|
63
|
-
def self.
|
64
|
-
::Katello::DockerTag.where(:repository_id => repository).destroy_all
|
65
|
-
super(repository, true)
|
66
|
-
end
|
67
|
-
|
68
|
-
def self.manage_repository_association
|
69
|
+
def self.many_repository_associations
|
69
70
|
false
|
70
71
|
end
|
71
72
|
|
@@ -34,6 +34,14 @@ module Katello
|
|
34
34
|
scoped_search :relation => :packages, :on => :nvrea, :rename => :package, :complete_value => true, :only_explicit => true
|
35
35
|
scoped_search :relation => :packages, :on => :name, :rename => :package_name, :complete_value => true, :only_explicit => true
|
36
36
|
|
37
|
+
scoped_search :on => :modular,
|
38
|
+
:only_explicit => true,
|
39
|
+
:ext_method => :find_by_modular,
|
40
|
+
:complete_value => {:true => 0, :false => 1},
|
41
|
+
:special_values => ['true', 'false'],
|
42
|
+
:validator => ->(value) { ['true', 'false'].include?(value.downcase) },
|
43
|
+
:operators => ["="]
|
44
|
+
|
37
45
|
before_save lambda { |erratum| erratum.title = erratum.title.truncate(255) unless erratum.title.blank? }
|
38
46
|
|
39
47
|
def self.of_type(type)
|
@@ -43,6 +51,8 @@ module Katello
|
|
43
51
|
scope :security, -> { of_type(Erratum::SECURITY) }
|
44
52
|
scope :bugfix, -> { of_type(Erratum::BUGZILLA) }
|
45
53
|
scope :enhancement, -> { of_type(Erratum::ENHANCEMENT) }
|
54
|
+
scope :modular, -> { where(:id => Erratum.joins(:packages => :module_stream_errata_packages)) }
|
55
|
+
scope :non_modular, -> { where.not(:id => modular) }
|
46
56
|
|
47
57
|
def self.repository_association_class
|
48
58
|
RepositoryErratum
|
@@ -132,6 +142,18 @@ module Katello
|
|
132
142
|
return streams.flatten.uniq
|
133
143
|
end
|
134
144
|
|
145
|
+
def self.find_by_modular(_key, operator, value)
|
146
|
+
conditions = ""
|
147
|
+
if operator == '='
|
148
|
+
query = value.downcase == "true" ? modular : non_modular
|
149
|
+
conditions = "#{table_name}.id in (#{query.select(:id).to_sql})"
|
150
|
+
else
|
151
|
+
#failure condition. No such value so must return 0
|
152
|
+
conditions = "1=0"
|
153
|
+
end
|
154
|
+
{ :conditions => conditions }
|
155
|
+
end
|
156
|
+
|
135
157
|
class Jail < ::Safemode::Jail
|
136
158
|
allow :errata_id, :errata_type, :issued, :created_at, :severity, :package_names, :cves, :reboot_suggested
|
137
159
|
end
|
data/app/models/katello/event.rb
CHANGED
@@ -4,6 +4,8 @@ module Katello
|
|
4
4
|
# Note: Do not use active record call backs or dependent references on this class
|
5
5
|
# Direct deletes are made in EventQueue#clear_events (instead of destroys).
|
6
6
|
|
7
|
+
serialize :metadata, Hash
|
8
|
+
|
7
9
|
def validate_event_type
|
8
10
|
unless EventQueue.supported_event_types.include?(self.event_type)
|
9
11
|
errors.add(:event_type, _("Unsupported event type %{type}. Supported: %{types}") %
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Katello
|
2
|
+
module Events
|
3
|
+
class AutoPublishCompositeView
|
4
|
+
EVENT_TYPE = 'auto_publish_composite_view'.freeze
|
5
|
+
|
6
|
+
attr_reader :composite_view
|
7
|
+
attr_accessor :metadata, :retry
|
8
|
+
|
9
|
+
def self.retry_seconds
|
10
|
+
180
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize(composite_view_id)
|
14
|
+
@composite_view = ::Katello::ContentView.find_by_id(composite_view_id)
|
15
|
+
Rails.logger.warn "Content View not found for ID #{object_id}" if @composite_view.nil?
|
16
|
+
yield(self) if block_given?
|
17
|
+
end
|
18
|
+
|
19
|
+
def run
|
20
|
+
return unless composite_view
|
21
|
+
|
22
|
+
begin
|
23
|
+
ForemanTasks.async_task(::Actions::Katello::ContentView::Publish,
|
24
|
+
composite_view,
|
25
|
+
metadata[:description],
|
26
|
+
triggered_by: metadata[:version_id])
|
27
|
+
rescue => e
|
28
|
+
self.retry = true if e.is_a?(ForemanTasks::Lock::LockConflict)
|
29
|
+
deliver_failure_notification
|
30
|
+
raise e
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def deliver_failure_notification
|
37
|
+
::Katello::UINotifications::ContentView::AutoPublishFailure.deliver!(composite_view)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -137,21 +137,6 @@ module Katello
|
|
137
137
|
content_unit_counts
|
138
138
|
end
|
139
139
|
|
140
|
-
def sync(options = {})
|
141
|
-
sync_options = {}
|
142
|
-
sync_options[:max_speed] ||= SETTINGS[:katello][:pulp][:sync_KBlimit] if SETTINGS[:katello][:pulp][:sync_KBlimit] # set bandwidth limit
|
143
|
-
sync_options[:num_threads] ||= SETTINGS[:katello][:pulp][:sync_threads] if SETTINGS[:katello][:pulp][:sync_threads] # set threads per sync
|
144
|
-
pulp_tasks = Katello.pulp_server.extensions.repository.sync(self.pulp_id, :override_config => sync_options)
|
145
|
-
|
146
|
-
task = PulpSyncStatus.using_pulp_task(pulp_tasks) do |t|
|
147
|
-
t.organization = organization
|
148
|
-
t.parameters ||= {}
|
149
|
-
t.parameters[:options] = options
|
150
|
-
end
|
151
|
-
task.save!
|
152
|
-
return [task]
|
153
|
-
end
|
154
|
-
|
155
140
|
def clone_file_metadata(to_repo)
|
156
141
|
Katello.pulp_server.extensions.yum_repo_metadata_file.copy(self.pulp_id, to_repo.pulp_id)
|
157
142
|
end
|
@@ -28,12 +28,43 @@ module Katello
|
|
28
28
|
validates :host, :presence => true, :allow_blank => false
|
29
29
|
validates_with Validators::ContentViewEnvironmentValidator
|
30
30
|
|
31
|
+
def bindable_types
|
32
|
+
[
|
33
|
+
{
|
34
|
+
type: Repository::DEB_TYPE,
|
35
|
+
matcher: '/pulp/deb/',
|
36
|
+
paths: []
|
37
|
+
},
|
38
|
+
{
|
39
|
+
type: Repository::YUM_TYPE,
|
40
|
+
matcher: '/pulp/repos/',
|
41
|
+
paths: []
|
42
|
+
}
|
43
|
+
]
|
44
|
+
end
|
45
|
+
|
31
46
|
def update_repositories_by_paths(paths)
|
32
|
-
|
33
|
-
|
47
|
+
bindable_paths = bindable_types
|
48
|
+
relative_paths = []
|
49
|
+
|
50
|
+
paths.each do |path|
|
51
|
+
bindable_paths.each do |supported|
|
52
|
+
relative_path = path.gsub(supported[:matcher], '')
|
53
|
+
relative_paths << relative_path
|
54
|
+
if path.starts_with?(supported[:matcher])
|
55
|
+
supported[:paths] << relative_path
|
56
|
+
break
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
repos = bindable_paths.flat_map do |supported|
|
62
|
+
repos = Repository.joins(:root).where(RootRepository.table_name => {content_type: supported[:type]}, relative_path: supported[:paths])
|
63
|
+
relative_paths -= repos.pluck(:relative_path)
|
64
|
+
repos
|
65
|
+
end
|
34
66
|
|
35
|
-
|
36
|
-
missing.each do |repo_path|
|
67
|
+
relative_paths.each do |repo_path|
|
37
68
|
Rails.logger.warn("System #{self.host.name} (#{self.host.id}) requested binding to unknown repo #{repo_path}")
|
38
69
|
end
|
39
70
|
|
@@ -4,6 +4,7 @@ module Katello
|
|
4
4
|
audited :associated_with => :host, :associations => [:pools], :except => [:last_checkin]
|
5
5
|
self.table_name = 'katello_subscription_facets'
|
6
6
|
include Facets::Base
|
7
|
+
include DirtyAssociations
|
7
8
|
|
8
9
|
belongs_to :user, :inverse_of => :subscription_facets, :class_name => "::User"
|
9
10
|
belongs_to :hypervisor_host, :class_name => "::Host::Managed", :foreign_key => "hypervisor_host_id"
|
@@ -11,6 +12,9 @@ module Katello
|
|
11
12
|
has_many :subscription_facet_activation_keys, :class_name => "Katello::SubscriptionFacetActivationKey", :dependent => :destroy, :inverse_of => :subscription_facet
|
12
13
|
has_many :activation_keys, :through => :subscription_facet_activation_keys, :class_name => "Katello::ActivationKey"
|
13
14
|
|
15
|
+
has_many :subscription_facet_purpose_addons, :class_name => "Katello::SubscriptionFacetPurposeAddon", :dependent => :destroy, :inverse_of => :subscription_facet
|
16
|
+
has_many :purpose_addons, :class_name => "Katello::PurposeAddon", :through => :subscription_facet_purpose_addons
|
17
|
+
|
14
18
|
has_many :subscription_facet_pools, :class_name => "Katello::SubscriptionFacetPool", :dependent => :delete_all, :inverse_of => :subscription_facet
|
15
19
|
has_many :pools, :through => :subscription_facet_pools, :class_name => "Katello::Pool"
|
16
20
|
|
@@ -19,13 +23,13 @@ module Katello
|
|
19
23
|
|
20
24
|
has_many :compliance_reasons, :class_name => "Katello::ComplianceReason", :dependent => :destroy, :inverse_of => :subscription_facet
|
21
25
|
|
22
|
-
serialize :purpose_addons, Array
|
23
|
-
|
24
26
|
validates :host, :presence => true, :allow_blank => false
|
25
27
|
|
26
28
|
DEFAULT_TYPE = 'system'.freeze
|
27
29
|
|
28
|
-
accepts_nested_attributes_for :installed_products
|
30
|
+
accepts_nested_attributes_for :installed_products, :purpose_addons
|
31
|
+
|
32
|
+
dirty_has_many_associations :purpose_addons
|
29
33
|
|
30
34
|
attr_accessor :facts
|
31
35
|
|
@@ -53,7 +57,9 @@ module Katello
|
|
53
57
|
self.update_installed_products(consumer_params['installedProducts']) if consumer_params.key?('installedProducts')
|
54
58
|
self.purpose_role = consumer_params['role'] unless consumer_params['role'].nil?
|
55
59
|
self.purpose_usage = consumer_params['usage'] unless consumer_params['usage'].nil?
|
56
|
-
|
60
|
+
unless consumer_params['addOns'].nil?
|
61
|
+
self.purpose_addon_ids = consumer_params['addOns'].map { |addon_name| ::Katello::PurposeAddon.find_or_create_by(name: addon_name).id }
|
62
|
+
end
|
57
63
|
|
58
64
|
unless consumer_params['releaseVer'].blank?
|
59
65
|
release = consumer_params['releaseVer']
|
@@ -127,7 +133,7 @@ module Katello
|
|
127
133
|
:autoheal => autoheal,
|
128
134
|
:usage => purpose_usage,
|
129
135
|
:role => purpose_role,
|
130
|
-
:addOns => purpose_addons,
|
136
|
+
:addOns => purpose_addons.pluck(:name),
|
131
137
|
:serviceLevel => service_level,
|
132
138
|
:releaseVer => release_version,
|
133
139
|
:environment => {:id => self.candlepin_environment_id},
|
@@ -266,17 +272,9 @@ module Katello
|
|
266
272
|
|
267
273
|
if hosts_size == 1
|
268
274
|
host = hosts.first
|
275
|
+
found_uuid = host.fact_values.find { |fv| fv.fact_name_id == uuid_fact_id }
|
269
276
|
|
270
|
-
if host.name == host_name
|
271
|
-
unless host.build
|
272
|
-
found_uuid = host.fact_values.where(fact_name_id: uuid_fact_id).first
|
273
|
-
if found_uuid && found_uuid.value != host_uuid
|
274
|
-
fail Katello::Errors::RegistrationError, _("This host is reporting a DMI UUID that differs from the existing registration.")
|
275
|
-
end
|
276
|
-
end
|
277
|
-
|
278
|
-
return host
|
279
|
-
end
|
277
|
+
return host if host.name == host_name && (host.build || found_uuid&.value == host_uuid)
|
280
278
|
end
|
281
279
|
|
282
280
|
hostnames = hosts.pluck(:name).sort.join(', ')
|
@@ -292,7 +290,7 @@ module Katello
|
|
292
290
|
end
|
293
291
|
|
294
292
|
def backend_update_needed?
|
295
|
-
%w(release_version service_level autoheal purpose_role purpose_usage
|
293
|
+
%w(release_version service_level autoheal purpose_role purpose_usage purpose_addon_ids).each do |method|
|
296
294
|
return true if self.send("#{method}_changed?")
|
297
295
|
end
|
298
296
|
if self.host.content_facet
|