katello 4.2.1 → 4.3.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/assets/javascripts/katello/common/katello.common.js +0 -67
- data/app/assets/javascripts/katello/common/katello.js +0 -27
- data/app/assets/javascripts/katello/common/vendor.js +0 -1
- data/app/assets/stylesheets/katello/katello.scss +0 -1
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +10 -2
- data/app/controllers/katello/api/v2/api_controller.rb +35 -9
- data/app/controllers/katello/api/v2/capsule_content_controller.rb +16 -2
- data/app/controllers/katello/api/v2/content_view_components_controller.rb +22 -1
- data/app/controllers/katello/api/v2/content_view_filters_controller.rb +65 -1
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +5 -1
- data/app/controllers/katello/api/v2/content_views_controller.rb +13 -6
- data/app/controllers/katello/api/v2/debs_controller.rb +74 -1
- data/app/controllers/katello/api/v2/errata_controller.rb +13 -10
- data/app/controllers/katello/api/v2/file_units_controller.rb +1 -0
- data/app/controllers/katello/api/v2/generic_content_units_controller.rb +1 -1
- data/app/controllers/katello/api/v2/host_errata_controller.rb +46 -5
- data/app/controllers/katello/api/v2/host_tracer_controller.rb +2 -1
- data/app/controllers/katello/api/v2/module_streams_controller.rb +4 -0
- data/app/controllers/katello/api/v2/organizations_controller.rb +22 -7
- data/app/controllers/katello/api/v2/products_bulk_actions_controller.rb +1 -1
- data/app/controllers/katello/api/v2/repositories_controller.rb +36 -19
- data/app/controllers/katello/api/v2/subscriptions_controller.rb +0 -8
- data/app/controllers/katello/api/v2/upstream_subscriptions_controller.rb +5 -1
- data/app/controllers/katello/concerns/api/v2/bulk_extensions.rb +40 -0
- data/app/controllers/katello/concerns/api/v2/host_errata_extensions.rb +4 -31
- data/app/controllers/katello/concerns/api/v2/registration_controller_extensions.rb +1 -1
- data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +1 -1
- data/app/helpers/katello/concerns/smart_proxy_helper_extensions.rb +2 -6
- data/app/helpers/katello/katello_url_helper.rb +1 -1
- data/app/lib/actions/candlepin/abstract_async_task.rb +6 -3
- data/app/lib/actions/candlepin/async_hypervisors.rb +12 -8
- data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +10 -1
- data/app/lib/actions/katello/capsule_content/sync_capsule.rb +3 -3
- data/app/lib/actions/katello/cdn_configuration/update.rb +38 -0
- data/app/lib/actions/katello/content_view/remove.rb +18 -7
- data/app/lib/actions/katello/content_view_version/destroy.rb +2 -2
- data/app/lib/actions/katello/content_view_version/republish_repositories.rb +1 -1
- data/app/lib/actions/katello/repository/clone_contents.rb +1 -2
- data/app/lib/actions/katello/repository/destroy.rb +21 -5
- data/app/lib/actions/katello/repository/fetch_pxe_files.rb +1 -1
- data/app/lib/actions/katello/repository/finish_upload.rb +1 -1
- data/app/lib/actions/katello/repository/import_upload.rb +1 -1
- data/app/lib/actions/katello/repository/index_content.rb +19 -6
- data/app/lib/actions/katello/repository/metadata_generate.rb +2 -0
- data/app/lib/actions/katello/repository/multi_clone_contents.rb +1 -1
- data/app/lib/actions/katello/repository/remove_content.rb +1 -1
- data/app/lib/actions/katello/repository/sync.rb +3 -7
- data/app/lib/actions/katello/repository_set/scan_cdn.rb +0 -4
- data/app/lib/actions/middleware/record_smart_proxy_sync_history.rb +1 -1
- data/app/lib/actions/pulp/orphan_cleanup/remove_unneeded_repos.rb +1 -1
- data/app/lib/actions/pulp/repository/clear.rb +1 -1
- data/app/lib/actions/pulp3/abstract_async_task.rb +10 -1
- data/app/lib/actions/pulp3/capsule_content/generate_metadata.rb +13 -18
- data/app/lib/actions/pulp3/capsule_content/refresh_distribution.rb +1 -11
- data/app/lib/actions/pulp3/content_view_version/create_export_history.rb +1 -1
- data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +3 -1
- data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +25 -42
- data/app/lib/actions/pulp3/orchestration/repository/sync.rb +8 -1
- data/app/lib/actions/pulp3/orchestration/repository/upload_content.rb +3 -3
- data/app/lib/actions/pulp3/repository/commit_upload.rb +1 -1
- data/app/lib/actions/pulp3/repository/import_upload.rb +8 -4
- data/app/lib/actions/pulp3/repository/multi_copy_content.rb +1 -1
- data/app/lib/actions/pulp3/repository/multi_copy_units.rb +1 -1
- data/app/lib/actions/pulp3/repository/presenters/abstract_sync_presenter.rb +18 -0
- data/app/lib/actions/pulp3/repository/presenters/content_unit_presenter.rb +7 -2
- data/app/lib/actions/pulp3/repository/presenters/repair_presenter.rb +6 -1
- data/app/lib/actions/pulp3/repository/save_artifact.rb +14 -4
- data/app/lib/katello/errors.rb +2 -0
- data/app/lib/katello/resources/candlepin/consumer.rb +0 -20
- data/app/lib/katello/resources/candlepin/proxy.rb +8 -2
- data/app/lib/katello/resources/candlepin/upstream_consumer.rb +2 -0
- data/app/lib/katello/resources/cdn/katello_cdn.rb +68 -0
- data/app/lib/katello/resources/cdn.rb +61 -29
- data/app/lib/katello/util/cdn_var_substitutor.rb +15 -9
- data/app/lib/katello/util/package.rb +22 -0
- data/app/lib/katello/util/path_with_substitutions.rb +12 -14
- data/app/models/katello/activation_key.rb +10 -0
- data/app/models/katello/ansible_collection.rb +1 -1
- data/app/models/katello/authorization/repository.rb +4 -4
- data/app/models/katello/candlepin/repository_mapper.rb +5 -1
- data/app/models/katello/cdn_configuration.rb +32 -0
- data/app/models/katello/concerns/content_facet_host_extensions.rb +40 -0
- data/app/models/katello/concerns/host_managed_extensions.rb +28 -2
- data/app/models/katello/concerns/hostgroup_extensions.rb +1 -1
- data/app/models/katello/concerns/organization_extensions.rb +3 -1
- data/app/models/katello/concerns/pulp_database_unit.rb +15 -5
- data/app/models/katello/concerns/remote_execution_provider_extensions.rb +9 -0
- data/app/models/katello/concerns/setting_extensions.rb +1 -1
- data/app/models/katello/concerns/smart_proxy_extensions.rb +4 -3
- data/app/models/katello/content_credential.rb +4 -0
- data/app/models/katello/content_facet_applicable_deb.rb +7 -0
- data/app/models/katello/content_view.rb +24 -1
- data/app/models/katello/content_view_component.rb +4 -0
- data/app/models/katello/content_view_erratum_filter.rb +2 -0
- data/app/models/katello/content_view_filter.rb +1 -1
- data/app/models/katello/content_view_package_filter_rule.rb +2 -1
- data/app/models/katello/content_view_version.rb +30 -1
- data/app/models/katello/deb.rb +71 -0
- data/app/models/katello/erratum.rb +13 -1
- data/app/models/katello/generic_content_unit.rb +3 -1
- data/app/models/katello/glue/pulp/repos.rb +2 -2
- data/app/models/katello/host/content_facet.rb +23 -2
- data/app/models/katello/host/subscription_facet.rb +1 -1
- data/app/models/katello/host_tracer.rb +21 -2
- data/app/models/katello/installed_deb.rb +1 -1
- data/app/models/katello/module_stream.rb +4 -0
- data/app/models/katello/ping.rb +20 -4
- data/app/models/katello/product.rb +7 -5
- data/app/models/katello/provider.rb +1 -24
- data/app/models/katello/repository.rb +37 -10
- data/app/models/katello/root_repository.rb +28 -14
- data/app/models/setting/content.rb +8 -13
- data/app/services/katello/applicability/applicable_content_helper.rb +20 -0
- data/app/services/katello/organization_creator.rb +8 -0
- data/app/services/katello/pulp3/api/ansible_collection.rb +0 -40
- data/app/services/katello/pulp3/api/apt.rb +0 -47
- data/app/services/katello/pulp3/api/content_guard.rb +1 -1
- data/app/services/katello/pulp3/api/core.rb +28 -23
- data/app/services/katello/pulp3/api/docker.rb +0 -50
- data/app/services/katello/pulp3/api/file.rb +0 -48
- data/app/services/katello/pulp3/api/generic.rb +1 -44
- data/app/services/katello/pulp3/api/yum.rb +4 -44
- data/app/services/katello/pulp3/generic_content_unit.rb +8 -4
- data/app/services/katello/pulp3/repository/ansible_collection.rb +4 -0
- data/app/services/katello/pulp3/repository/apt.rb +3 -3
- data/app/services/katello/pulp3/repository/generic.rb +10 -65
- data/app/services/katello/pulp3/repository/yum.rb +10 -0
- data/app/services/katello/pulp3/repository.rb +47 -21
- data/app/services/katello/pulp3/repository_mirror.rb +30 -11
- data/app/services/katello/pulp3/rpm.rb +2 -32
- data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +7 -8
- data/app/services/katello/pulp3/smart_proxy_repository.rb +1 -1
- data/app/services/katello/registration_manager.rb +2 -0
- data/app/services/katello/repository_type.rb +103 -15
- data/app/services/katello/repository_type_manager.rb +14 -8
- data/app/services/katello/ui_notifications/subscriptions/manifest_expired_warning.rb +1 -1
- data/app/services/katello/upstream_connection_checker.rb +1 -0
- data/app/views/foreman/job_templates/resolve_traces.erb +25 -0
- data/app/views/foreman/job_templates/resolve_traces_-_katello_ansible_default.erb +28 -0
- data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +1 -1
- data/app/views/katello/api/v2/common/_metadata.json.rabl +1 -0
- data/app/views/katello/api/v2/content_facet/base.json.rabl +3 -1
- data/app/views/katello/api/v2/content_facet/show.json.rabl +2 -1
- data/app/views/katello/api/v2/content_view_components/show.json.rabl +4 -0
- data/app/views/katello/api/v2/content_view_versions/base.json.rabl +7 -0
- data/app/views/katello/api/v2/content_views/base.json.rabl +12 -8
- data/app/views/katello/api/v2/content_views/index.json.rabl +1 -0
- data/app/views/katello/api/v2/content_views/permissions.rabl +8 -0
- data/app/views/katello/api/v2/debs/base.json.rabl +5 -0
- data/app/views/katello/api/v2/errata/index.json.rabl +4 -0
- data/app/views/katello/api/v2/generic_content_units/base.json.rabl +2 -0
- data/app/views/katello/api/v2/generic_content_units/show.json.rabl +7 -0
- data/app/views/katello/api/v2/host_tracer/base.json.rabl +1 -0
- data/app/views/katello/api/v2/module_streams/index.json.rabl +4 -0
- data/app/views/katello/api/v2/organizations/cdn_configuration.rabl +1 -0
- data/app/views/katello/api/v2/organizations/show.json.rabl +7 -0
- data/app/views/katello/api/v2/repositories/base.json.rabl +10 -17
- data/app/views/overrides/activation_keys/_host_synced_content_select.html.erb +2 -6
- data/config/routes/api/v2.rb +13 -0
- data/config/routes/overrides.rb +2 -0
- data/config/routes.rb +14 -2
- data/db/migrate/20140110000001_update_environments_add_katello_id.rb +1 -3
- data/db/migrate/20140610154745_content_view_puppet_environment_id.rb +0 -35
- data/db/migrate/20190802112101_add_applicable_debs.rb +16 -0
- data/db/migrate/20210201163238_migrate_background_download_policy_to_migrate.rb +2 -2
- data/db/migrate/20210909140337_add_last_indexed_to_repos.rb +5 -0
- data/db/migrate/20210910190324_move_background_settings_to_immediate.rb +25 -0
- data/db/migrate/20211006161617_add_filename_to_katello_generic_content_units.rb +5 -0
- data/db/migrate/20211019192121_create_cdn_configuration.katello.rb +30 -0
- data/db/migrate/20211025181315_add_additional_metadata_to_katello_generic_content_units.rb +5 -0
- data/engines/bastion/README.md +15 -0
- data/engines/bastion/app/assets/javascripts/bastion/components/nutupane.factory.js +2 -2
- data/engines/bastion/config/routes.rb +2 -0
- data/engines/bastion/vendor/assets/javascripts/bastion/angular/angular.js +3 -3
- data/engines/bastion/vendor/assets/javascripts/bastion/angular-sanitize/angular-sanitize.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/bastion_katello.js +3 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/registration.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs-applicable.controller.js +44 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-debs.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs-applicable.html +70 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-debs.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.routes.js +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html +5 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +25 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.routes.js +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-versions.html +0 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.controller.js +22 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/debs.routes.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb.controller.js +22 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-content-views.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-info.html +36 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-repositories.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb.html +4 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/views/debs.html +31 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/generic-content/generic-content.factory.js +21 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/generic-content/generic-content.module.js +17 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/package.controller.js +4 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-info.html +3 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/product-repositories.controller.js +6 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +30 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.filter.js +1 -13
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +32 -9
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +15 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +32 -19
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +28 -28
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-generic-content.html +57 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +46 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +57 -27
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repositories.module.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repositories.routes.js +16 -7
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository-types.service.js +30 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories.html +8 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/sync-plan-details-info.controller.js +6 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-info.html +1 -1
- data/engines/bastion_katello/lib/bastion_katello/engine.rb +1 -1
- data/lib/katello/engine.rb +0 -1
- data/lib/katello/permission_creator.rb +4 -3
- data/lib/katello/permissions/host_permissions.rb +1 -0
- data/lib/katello/permissions/organization_permissions.rb +2 -1
- data/lib/katello/plugin.rb +15 -11
- data/lib/katello/repository_types/ansible_collection.rb +13 -1
- data/lib/katello/repository_types/deb.rb +13 -0
- data/lib/katello/repository_types/docker.rb +13 -1
- data/lib/katello/repository_types/file.rb +13 -0
- data/lib/katello/repository_types/ostree.rb +48 -4
- data/lib/katello/repository_types/python.rb +26 -12
- data/lib/katello/repository_types/yum.rb +16 -1
- data/lib/katello/tasks/repository.rake +3 -12
- data/lib/katello/tasks/reset.rake +4 -5
- data/lib/katello/version.rb +1 -1
- data/package.json +3 -2
- data/webpack/__mocks__/react-intl/index.js +4 -0
- data/webpack/components/ActionableDetail.js +23 -3
- data/webpack/components/AddedStatusLabel.js +1 -1
- data/webpack/components/Bookmark/AddBookmarkModal.js +96 -0
- data/webpack/components/Bookmark/Bookmark.scss +28 -0
- data/webpack/components/Bookmark/BookmarkActions.js +24 -0
- data/webpack/components/Bookmark/BookmarkConstants.js +3 -0
- data/webpack/components/Bookmark/BookmarkSelectors.js +15 -0
- data/webpack/components/Bookmark/index.js +94 -0
- data/webpack/components/EditableSwitch.js +6 -1
- data/webpack/components/EditableTextInput/EditableTextInput.js +41 -13
- data/webpack/components/Errata/index.js +69 -0
- data/webpack/components/ErratumTypeLabel.js +31 -0
- data/webpack/components/Loading.js +5 -2
- data/webpack/components/RoutedTabs/__tests__/RoutedTabs.test.js +5 -11
- data/webpack/components/RoutedTabs/index.js +77 -2
- data/webpack/components/Search/Search.js +67 -80
- data/webpack/components/Search/__tests__/search.test.js +8 -26
- data/webpack/components/SelectAllCheckbox/SelectAllCheckbox.scss +3 -0
- data/webpack/components/SelectAllCheckbox/index.js +126 -0
- data/webpack/components/SelectableDropdown/SelectableDropdown.js +7 -2
- data/webpack/components/Table/EmptyStateMessage.js +38 -17
- data/webpack/components/Table/MainTable.js +49 -10
- data/webpack/components/Table/MainTable.scss +11 -0
- data/webpack/components/Table/PageControls.js +45 -0
- data/webpack/components/Table/TableHooks.js +230 -0
- data/webpack/components/Table/TableWrapper.js +221 -50
- data/webpack/components/Table/helpers.js +17 -0
- data/webpack/components/TypeAhead/TypeAhead.js +74 -58
- data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +25 -10
- data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.scss +9 -8
- data/webpack/components/TypeAhead/pf4Search/TypeAheadItems.js +2 -2
- data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +32 -22
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard.js +101 -0
- data/webpack/components/extensions/HostDetails/Cards/__tests__/contentViewDetailsCard.test.js +53 -0
- data/webpack/components/extensions/HostDetails/HostErrata/HostErrataActions.js +47 -0
- data/webpack/components/extensions/HostDetails/HostErrata/HostErrataConstants.js +32 -0
- data/webpack/components/extensions/HostDetails/HostErrata/HostErrataSelectors.js +16 -0
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/EmptyPage.js +19 -0
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +17 -0
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/constants.js +7 -0
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/helpers.js +3 -0
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/index.js +40 -0
- data/webpack/components/extensions/HostDetails/Tabs/EnableTracerEmptyState.js +42 -0
- data/webpack/components/extensions/HostDetails/Tabs/EnableTracerModal.js +118 -0
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab.js +347 -0
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab.scss +16 -0
- data/webpack/components/extensions/HostDetails/Tabs/ErratumExpansionContents.js +60 -0
- data/webpack/components/extensions/HostDetails/Tabs/ErratumExpansionDetail.js +69 -0
- data/webpack/components/extensions/HostDetails/Tabs/HostTracesActions.js +19 -0
- data/webpack/components/extensions/HostDetails/Tabs/HostTracesConstants.js +2 -0
- data/webpack/components/extensions/HostDetails/Tabs/HostTracesSelectors.js +19 -0
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +56 -0
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +5 -0
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab.js +188 -0
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab.scss +12 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/errata.fixtures.json +67 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +785 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/resolveTraces.fixtures.json +35 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracerEmptyTraceResults.fixtures.json +7 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracerEnableJobInvocation.fixtures.json +35 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/traces.fixtures.json +44 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +386 -0
- data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +20 -0
- data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +1 -1
- data/webpack/components/extensions/RegistrationCommands/index.js +1 -1
- data/webpack/components/pf3Table/components/Table.js +1 -1
- data/webpack/components/pf3Table/components/__snapshots__/Table.test.js.snap +3 -3
- data/webpack/containers/Application/Routes.js +3 -3
- data/webpack/containers/Application/config.js +21 -6
- data/webpack/containers/Application/overrides.scss +34 -3
- data/webpack/{fills_index.js → global_index.js} +11 -2
- data/webpack/global_test_setup.js +6 -1
- data/webpack/redux/actions/RedHatRepositories/helpers.js +4 -4
- data/webpack/scenes/AnsibleCollections/AnsibleCollectionsTableSchema.js +1 -1
- data/webpack/scenes/Content/ContentActions.js +31 -0
- data/webpack/scenes/Content/ContentConfig.js +138 -0
- data/webpack/scenes/Content/ContentConstants.js +7 -0
- data/webpack/scenes/Content/ContentPage.js +89 -0
- data/webpack/scenes/Content/ContentSelectors.js +43 -0
- data/webpack/scenes/Content/Details/ContentCounts.js +42 -0
- data/webpack/scenes/Content/Details/ContentDetails.js +66 -0
- data/webpack/scenes/Content/Details/ContentInfo.js +60 -0
- data/webpack/scenes/Content/Details/ContentRepositories.js +78 -0
- data/webpack/scenes/Content/Details/__tests__/ansibleCollectionDetails.fixtures.json +20 -0
- data/webpack/scenes/Content/Details/__tests__/ansibleCollectionRepositoryDetails.fixtures.json +71 -0
- data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +152 -0
- data/webpack/scenes/Content/Details/__tests__/pythonPackageDetails.fixtures.json +20 -0
- data/webpack/scenes/Content/Details/__tests__/pythonPackageRepositoryDetails.fixtures.json +71 -0
- data/webpack/scenes/Content/Details/index.js +4 -0
- data/webpack/scenes/Content/Table/ContentTable.js +90 -0
- data/webpack/scenes/Content/Table/index.js +3 -0
- data/webpack/scenes/Content/__tests__/ansibleCollections.fixtures.json +50 -0
- data/webpack/scenes/Content/__tests__/contentTable.test.js +89 -0
- data/webpack/scenes/Content/__tests__/contentTypes.fixtures.json +66 -0
- data/webpack/scenes/Content/__tests__/pythonPackages.fixtures.json +30 -0
- data/webpack/scenes/Content/index.js +4 -0
- data/webpack/scenes/ContentViews/ContentViewSelectors.js +5 -6
- data/webpack/scenes/ContentViews/ContentViewsActions.js +13 -8
- data/webpack/scenes/ContentViews/ContentViewsConstants.js +31 -4
- data/webpack/scenes/ContentViews/ContentViewsPage.js +4 -0
- data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +19 -7
- data/webpack/scenes/ContentViews/Copy/CopyContentViewModal.js +7 -5
- data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +1 -1
- data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +7 -3
- data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +1 -2
- data/webpack/scenes/ContentViews/Delete/CVDeleteContext.js +4 -0
- data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +170 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeleteEnvironmentsSelection.js +108 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionFinish.js +69 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +121 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +120 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReview.js +62 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVEnvironmentSelectionForm.scss +4 -0
- data/webpack/scenes/ContentViews/Delete/__tests__/CvData.fixtures.json +259 -0
- data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +155 -0
- data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +241 -0
- data/webpack/scenes/ContentViews/Delete/__tests__/cvDetails.fixtures.json +248 -0
- data/webpack/scenes/ContentViews/Delete/__tests__/cvVersionsData.fixtures.json +865 -0
- data/webpack/scenes/ContentViews/Delete/__tests__/envPathData.fixtures.json +424 -0
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +15 -7
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +123 -0
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +1 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentVersion.js +8 -5
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +109 -51
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.fixtures.json +21 -6
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +80 -16
- data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +248 -3
- data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +141 -0
- data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +36 -54
- data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +20 -4
- data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +63 -38
- data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +3 -4
- data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositorySelection.js +65 -0
- data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +260 -0
- data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +54 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +202 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +291 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +441 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +62 -3
- data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +302 -0
- data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +186 -23
- data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +144 -19
- data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +2 -0
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetails.js +44 -13
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +81 -17
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +43 -43
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVRpmMatchContentModal.js +96 -0
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContent.fixtures.json +166 -0
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +90 -0
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentSearch.fixtures.json +33 -0
- data/webpack/scenes/ContentViews/Details/Filters/Rules/ContainerTag/AddEditContainerTagRuleModal.js +91 -0
- data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +237 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.fixtures.json +42 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +265 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +218 -11
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +517 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/allFilterErrata.fixtures.json +122 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/allFilterModulesStreams.fixtures.json +60 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewErrataByDateDetails.fixtures.json +359 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetail.fixtures.json +88 -102
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +34 -9
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.fixtures.json +148 -132
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +25 -7
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvAllRepos.fixtures.json +150 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataDateFilterContent.test.js +74 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +404 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErratumFilterDetails.fixtures.json +89 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailModuleAffectedRepos.fixtures.json +383 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailWithAffectedRepos.fixtures.json +375 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterFixutre.fixture.json +282 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +392 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilterDetails.fixtures.json +97 -0
- data/webpack/scenes/ContentViews/Details/Filters/index.js +26 -0
- data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +68 -79
- data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +1 -2
- data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +163 -0
- data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromoteSelectors.js +16 -0
- data/webpack/scenes/ContentViews/Details/Repositories/ContentCounts.js +9 -1
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +88 -74
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +8 -9
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.fixtures.json +3 -3
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionContent.js +30 -9
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionEnvironments.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionErrata.js +9 -5
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionErrata.scss +2 -2
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +132 -14
- data/webpack/scenes/ContentViews/Details/Versions/Delete/DeleteContext.js +4 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +176 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +127 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +131 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +128 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionDeleteFinish.js +94 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +67 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedActivationKeys.fixture.json +53 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvAffectedHosts.fixture.json +153 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvDropDownOptionsResponse.fixture.json +192 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +313 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemoveResponse.fixture.json +74 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/versionRemoveEnvPaths.fixtures.json +352 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/versionsResponseData.fixtures.json +583 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +96 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +97 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +332 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +128 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.scss +44 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +66 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +125 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionRepositoryCell.js +115 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionAnsibleCollections.fixtures.json +449 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionComponent.fixtures.json +753 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDebPackages.fixtures.json +58 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.fixtures.json +158 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +289 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsCounts.fixtures.json +73 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +44 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDockerTags.fixtures.json +3024 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionErrata.fixtures.json +201 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionFiles.fixtures.json +22 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionModuleStreams.fixtures.json +196 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionRepositories.fixtures.json +1000 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionRpmPackageGroups.fixtures.json +44 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionRpmPackages.fixtures.json +394 -0
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.fixtures.json +4 -4
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +95 -26
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersionsWithTask.fixtures.json +2 -2
- data/webpack/scenes/ContentViews/Details/Versions/index.js +25 -0
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +20 -16
- data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +3 -5
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +106 -64
- data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +25 -4
- data/webpack/scenes/ContentViews/__tests__/basicContentViews.fixtures.js +1 -1
- data/webpack/scenes/ContentViews/__tests__/contentViewList.fixtures.json +4 -1
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +29 -36
- data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +10 -0
- data/webpack/scenes/ContentViews/components/CVBreadCrumb.js +117 -0
- data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +59 -0
- data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +4 -3
- data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +30 -11
- data/webpack/scenes/ContentViews/components/TaskPresenter/TaskPresenter.js +1 -1
- data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +38 -1
- data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +79 -0
- data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +107 -0
- data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsModal.test.js +59 -0
- data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsResponse.fixtures.json +116 -0
- data/webpack/scenes/ContentViews/expansions/__tests__/relatedCompositeCvs.fixtures.json +4 -0
- data/webpack/scenes/ContentViews/helpers.js +1 -0
- data/webpack/scenes/RedHatRepositories/components/RepositorySetRepository/RepositorySetRepository.js +1 -1
- data/webpack/scenes/RedHatRepositories/components/SearchBar.js +4 -3
- data/webpack/scenes/SmartProxy/SmartProxyContentTable.js +1 -1
- data/webpack/scenes/Subscriptions/SubscriptionsPage.js +17 -9
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +3 -3
- data/webpack/test-utils/nockWrapper.js +20 -3
- data/webpack/utils/helpers.js +16 -2
- data/webpack/utils/useDebounce.js +20 -0
- metadata +232 -54
- data/app/assets/javascripts/katello/widgets/tabs.js +0 -13
- data/app/assets/stylesheets/katello/widgets/tabs.scss +0 -69
- data/app/lib/actions/katello/provider/update.rb +0 -38
- data/webpack/components/RoutedTabs/RoutedTabs.js +0 -90
- data/webpack/components/Search/Search.test.js +0 -23
- data/webpack/components/Search/__snapshots__/Search.test.js.snap +0 -21
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab.js +0 -42
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.test.js +0 -145
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionPackages.js +0 -0
@@ -18,8 +18,8 @@
|
|
18
18
|
* Provides the functionality for manipulating repositories attached to a product.
|
19
19
|
*/
|
20
20
|
angular.module('Bastion.products').controller('ProductRepositoriesController',
|
21
|
-
['$scope', '$state', '$location', 'Notification', 'translate', 'ApiErrorHandler', 'Product', 'Repository', 'RepositoryBulkAction', 'CurrentOrganization', 'Nutupane',
|
22
|
-
function ($scope, $state, $location, Notification, translate, ApiErrorHandler, Product, Repository, RepositoryBulkAction, CurrentOrganization, Nutupane) {
|
21
|
+
['$scope', '$state', '$location', 'Notification', 'translate', 'ApiErrorHandler', 'Product', 'Repository', 'RepositoryBulkAction', 'CurrentOrganization', 'Nutupane', 'RepositoryTypesService',
|
22
|
+
function ($scope, $state, $location, Notification, translate, ApiErrorHandler, Product, Repository, RepositoryBulkAction, CurrentOrganization, Nutupane, RepositoryTypesService) {
|
23
23
|
var repositoriesNutupane = new Nutupane(Repository, {
|
24
24
|
'product_id': $scope.$stateParams.productId,
|
25
25
|
'search': $location.search().search || "",
|
@@ -82,6 +82,10 @@ angular.module('Bastion.products').controller('ProductRepositoriesController',
|
|
82
82
|
});
|
83
83
|
};
|
84
84
|
|
85
|
+
$scope.genericContentTypesFor = function(contentTypeLabel) {
|
86
|
+
return RepositoryTypesService.genericContentTypes(contentTypeLabel);
|
87
|
+
};
|
88
|
+
|
85
89
|
$scope.removeRepository = function (repository) {
|
86
90
|
repository.$delete(function () {
|
87
91
|
$scope.transitionTo('product.repositories', {productId: $scope.$stateParams.productId});
|
@@ -14,13 +14,14 @@
|
|
14
14
|
* @requires Architecture
|
15
15
|
* @requires HttpProxyPolicy
|
16
16
|
* @requires OSVersions
|
17
|
+
* @requires RepositoryTypesService
|
17
18
|
*
|
18
19
|
* @description
|
19
20
|
* Provides the functionality for the repository details info page.
|
20
21
|
*/
|
21
22
|
angular.module('Bastion.repositories').controller('RepositoryDetailsInfoController',
|
22
|
-
['$scope', '$q', 'translate', 'Notification', 'ContentCredential', 'CurrentOrganization', 'Checksum', 'DownloadPolicy', 'OstreeUpstreamSyncPolicy', 'Architecture', 'HttpProxy', 'HttpProxyPolicy', 'OSVersions',
|
23
|
-
function ($scope, $q, translate, Notification, ContentCredential, CurrentOrganization, Checksum, DownloadPolicy, OstreeUpstreamSyncPolicy, Architecture, HttpProxy, HttpProxyPolicy, OSVersions) {
|
23
|
+
['$scope', '$q', 'translate', 'Notification', 'ContentCredential', 'CurrentOrganization', 'Checksum', 'DownloadPolicy', 'OstreeUpstreamSyncPolicy', 'Architecture', 'HttpProxy', 'HttpProxyPolicy', 'OSVersions', 'RepositoryTypesService',
|
24
|
+
function ($scope, $q, translate, Notification, ContentCredential, CurrentOrganization, Checksum, DownloadPolicy, OstreeUpstreamSyncPolicy, Architecture, HttpProxy, HttpProxyPolicy, OSVersions, RepositoryTypesService) {
|
24
25
|
$scope.organization = CurrentOrganization;
|
25
26
|
|
26
27
|
$scope.progress = {uploading: false};
|
@@ -29,6 +30,7 @@ angular.module('Bastion.repositories').controller('RepositoryDetailsInfoControll
|
|
29
30
|
$scope.uploadURL = 'katello/api/v2/repositories/' + $scope.repository.id + '/upload_content';
|
30
31
|
$scope.repository['ignore_srpms'] = $scope.repository['ignorable_content'] && $scope.repository['ignorable_content'].includes("srpm");
|
31
32
|
$scope.repository['ansible_collection_auth_exists'] = $scope.repository['ansible_collection_auth_url'] && $scope.repository['ansible_collection_auth_token'];
|
33
|
+
$scope.genericContentTypes = RepositoryTypesService.genericContentTypes($scope.repository['content_type']);
|
32
34
|
});
|
33
35
|
|
34
36
|
$scope.gpgKeys = function () {
|
@@ -105,6 +107,16 @@ angular.module('Bastion.repositories').controller('RepositoryDetailsInfoControll
|
|
105
107
|
repository['upstream_authentication_token'] = null;
|
106
108
|
}
|
107
109
|
|
110
|
+
if ($scope.genericRemoteOptions && $scope.genericRemoteOptions !== []) {
|
111
|
+
$scope.genericRemoteOptions.forEach(function(option) {
|
112
|
+
if (option.type === "Array" && option.value) {
|
113
|
+
repository[option.name] = option.value.split(option.delimiter);
|
114
|
+
} else {
|
115
|
+
repository[option.name] = option.value;
|
116
|
+
}
|
117
|
+
});
|
118
|
+
}
|
119
|
+
|
108
120
|
if (!_.isEmpty(repository.commaTagsWhitelist)) {
|
109
121
|
repository["docker_tags_whitelist"] = repository.commaTagsWhitelist.split(",").map(function(tag) {
|
110
122
|
return tag.trim();
|
@@ -212,6 +224,22 @@ angular.module('Bastion.repositories').controller('RepositoryDetailsInfoControll
|
|
212
224
|
$scope.save($scope.repository);
|
213
225
|
};
|
214
226
|
|
227
|
+
$scope.$watch('repository.content_type', function () {
|
228
|
+
var remOptions, optionIndex;
|
229
|
+
$scope.genericRemoteOptions = RepositoryTypesService.getAttribute($scope.repository, "generic_remote_options");
|
230
|
+
if ($scope.genericRemoteOptions && $scope.genericRemoteOptions !== []) {
|
231
|
+
remOptions = angular.fromJson($scope.repository.generic_remote_options);
|
232
|
+
Object.keys(remOptions).forEach(function(key) {
|
233
|
+
if (remOptions[key]) {
|
234
|
+
optionIndex = $scope.genericRemoteOptions.map(function(option) {
|
235
|
+
return option.name;
|
236
|
+
}).indexOf(key);
|
237
|
+
$scope.genericRemoteOptions[optionIndex].value = remOptions[key].join($scope.genericRemoteOptions[optionIndex].delimiter);
|
238
|
+
}
|
239
|
+
});
|
240
|
+
}
|
241
|
+
});
|
242
|
+
|
215
243
|
$scope.policies = HttpProxyPolicy.policies;
|
216
244
|
$scope.proxies = [];
|
217
245
|
|
@@ -6,19 +6,7 @@
|
|
6
6
|
* @requires OstreeUpstreamSyncPolicy
|
7
7
|
* @requires YumContentUnits
|
8
8
|
* @requires HttpProxyPolicy
|
9
|
-
|
10
|
-
* @description
|
11
|
-
* Provides the Ostree Upstream Sync policy filter functionality for the repository details info page.
|
12
|
-
*/
|
13
|
-
angular.module('Bastion.components.formatters').filter('ostreeUpstreamSyncPolicyFilter', ['translate', 'OstreeUpstreamSyncPolicy', function (translate, OstreeUpstreamSyncPolicy) {
|
14
|
-
return function (displayValue, repository) {
|
15
|
-
var policy = repository["ostree_upstream_sync_policy"];
|
16
|
-
if ( policy === "custom") {
|
17
|
-
return OstreeUpstreamSyncPolicy.syncPolicyName(policy, repository["ostree_upstream_sync_depth"]);
|
18
|
-
}
|
19
|
-
return OstreeUpstreamSyncPolicy.syncPolicyName(policy);
|
20
|
-
};
|
21
|
-
}]);
|
9
|
+
**/
|
22
10
|
|
23
11
|
angular.module('Bastion.components.formatters').filter('upstreamPasswordFilter', [function () {
|
24
12
|
return function (displayValue, repository) {
|
@@ -18,14 +18,16 @@
|
|
18
18
|
* @requires Deb
|
19
19
|
* @requires ModuleStream
|
20
20
|
* @requires AnsibleCollection
|
21
|
+
* @requires GenericContent
|
22
|
+
* @requires RepositoryTypesService
|
21
23
|
*
|
22
24
|
* @description
|
23
25
|
* Provides the functionality for the repository details pane.
|
24
26
|
*/
|
25
27
|
angular.module('Bastion.repositories').controller('RepositoryManageContentController',
|
26
|
-
['$scope', '$state', 'translate', 'Notification', 'Nutupane', 'Repository', 'Package', 'PackageGroup', 'DockerManifest', 'DockerManifestList', 'DockerTag', 'OstreeBranch', 'File', 'Deb', 'ModuleStream', 'AnsibleCollection',
|
27
|
-
function ($scope, $state, translate, Notification, Nutupane, Repository, Package, PackageGroup, DockerManifest, DockerManifestList, DockerTag, OstreeBranch, File, Deb, ModuleStream, AnsibleCollection) {
|
28
|
-
var contentTypes;
|
28
|
+
['$scope', '$state', 'translate', 'Notification', 'Nutupane', 'Repository', 'Package', 'PackageGroup', 'DockerManifest', 'DockerManifestList', 'DockerTag', 'OstreeBranch', 'File', 'Deb', 'ModuleStream', 'AnsibleCollection', 'GenericContent', 'RepositoryTypesService',
|
29
|
+
function ($scope, $state, translate, Notification, Nutupane, Repository, Package, PackageGroup, DockerManifest, DockerManifestList, DockerTag, OstreeBranch, File, Deb, ModuleStream, AnsibleCollection, GenericContent, RepositoryTypesService) {
|
30
|
+
var contentTypes, nutupaneParams;
|
29
31
|
|
30
32
|
function success(response, selected) {
|
31
33
|
var message;
|
@@ -51,7 +53,15 @@ angular.module('Bastion.repositories').controller('RepositoryManageContentContro
|
|
51
53
|
$scope.product = repository.product;
|
52
54
|
});
|
53
55
|
|
54
|
-
$scope.
|
56
|
+
$scope.updateContentType = function () {
|
57
|
+
if ($state.params.contentTypeLabel) {
|
58
|
+
$scope.contentType = contentTypes[$state.params.contentTypeLabel];
|
59
|
+
nutupaneParams['content_type_name'] = $state.params.contentTypeLabel;
|
60
|
+
} else {
|
61
|
+
$scope.currentState = $state.current.name.split('.').pop();
|
62
|
+
$scope.contentType = contentTypes[$scope.currentState];
|
63
|
+
}
|
64
|
+
};
|
55
65
|
|
56
66
|
contentTypes = {
|
57
67
|
'packages': { type: Package, controllerName: 'katello_rpms' },
|
@@ -59,20 +69,33 @@ angular.module('Bastion.repositories').controller('RepositoryManageContentContro
|
|
59
69
|
'docker-manifests': { type: DockerManifest, controllerName: 'katello_docker_manifests' },
|
60
70
|
'docker-manifest-lists': { type: DockerManifestList, controllerName: 'katello_docker_manifest_lists' },
|
61
71
|
'docker-tags': {type: DockerTag, controllerName: 'katello_docker_tags'},
|
62
|
-
'ostree-branches': { type: OstreeBranch, controllerName: 'katello_ostree_branches' },
|
63
72
|
'files': { type: File, controllerName: 'katello_files' },
|
64
73
|
'debs': { type: Deb, controllerName: 'katello_debs' },
|
65
74
|
'module-streams': { type: ModuleStream, controllerName: 'katello_module_streams' },
|
66
75
|
'ansible-collections': { type: AnsibleCollection, controllerName: 'katello_ansible_collections'}
|
67
76
|
};
|
68
77
|
|
69
|
-
|
70
|
-
|
78
|
+
//Add in generic content types
|
79
|
+
_.each(RepositoryTypesService.genericContentTypes(), function (contentType) {
|
80
|
+
contentTypes[contentType['pluralized_label']] = {
|
81
|
+
type: GenericContent,
|
82
|
+
controllerName: 'katello_generic_content_units',
|
83
|
+
'pluralized_name': contentType['pluralized_name'],
|
84
|
+
removable: contentType.removable,
|
85
|
+
detailsColumns: contentType['details_columns']
|
86
|
+
};
|
71
87
|
});
|
88
|
+
|
89
|
+
nutupaneParams = {
|
90
|
+
'repository_id': $scope.$stateParams.repositoryId
|
91
|
+
};
|
92
|
+
|
93
|
+
|
94
|
+
$scope.updateContentType();
|
95
|
+
$scope.contentNutupane = new Nutupane($scope.contentType.type, nutupaneParams);
|
72
96
|
$scope.table = $scope.contentNutupane.table;
|
73
97
|
$scope.contentNutupane.primaryOnly = true;
|
74
|
-
|
75
|
-
$scope.controllerName = contentTypes[$scope.currentState].controllerName;
|
98
|
+
$scope.controllerName = $scope.contentType.controllerName;
|
76
99
|
|
77
100
|
$scope.removeContent = function () {
|
78
101
|
var selected = $scope.table.getSelected();
|
@@ -30,6 +30,17 @@
|
|
30
30
|
$scope.page.loading = false;
|
31
31
|
}
|
32
32
|
|
33
|
+
$scope.repositoryVersions = function () {
|
34
|
+
return _.groupBy($scope.repository.content_view_versions, function(version) {
|
35
|
+
return version.content_view_id;
|
36
|
+
});
|
37
|
+
};
|
38
|
+
|
39
|
+
$scope.repositoryWrapper = {
|
40
|
+
repository: $scope.repository,
|
41
|
+
repositoryVersions: {}
|
42
|
+
};
|
43
|
+
|
33
44
|
$scope.product = Product.get({id: $scope.$stateParams.productId}, function () {
|
34
45
|
$scope.page.loading = false;
|
35
46
|
}, function (response) {
|
@@ -47,6 +58,8 @@
|
|
47
58
|
$scope.repository.commaTagsWhitelist = "";
|
48
59
|
}
|
49
60
|
$scope.page.loading = false;
|
61
|
+
$scope.repositoryWrapper.repository = $scope.repository;
|
62
|
+
$scope.repositoryWrapper.repositoryVersions = $scope.repositoryVersions();
|
50
63
|
}, function (response) {
|
51
64
|
$scope.page.loading = false;
|
52
65
|
ApiErrorHandler.handleGETRequestErrors(response, $scope);
|
@@ -98,7 +111,7 @@
|
|
98
111
|
Notification.setSuccessMessage(translate('Repository "%s" successfully deleted').replace('%s', repositoryName));
|
99
112
|
};
|
100
113
|
|
101
|
-
repository
|
114
|
+
Repository.remove({id: repository.id}, success, errorHandler);
|
102
115
|
};
|
103
116
|
|
104
117
|
$scope.canRemove = function (repo, product) {
|
@@ -109,9 +122,7 @@
|
|
109
122
|
var readOnlyReason = null;
|
110
123
|
|
111
124
|
if (repo.$resolved && product.$resolved) {
|
112
|
-
if (repo
|
113
|
-
readOnlyReason = 'published';
|
114
|
-
} else if ($scope.denied('deletable', repo)) {
|
125
|
+
if ($scope.denied('deletable', repo)) {
|
115
126
|
readOnlyReason = 'permissions';
|
116
127
|
}
|
117
128
|
}
|
@@ -39,10 +39,6 @@
|
|
39
39
|
</li>
|
40
40
|
|
41
41
|
<li role="menuitem" ng-hide="syncInProgress(repository.last_sync) || denied('edit_products', product)">
|
42
|
-
<a ng-click="republishRepository(repository)" translate>
|
43
|
-
Republish Repository Metadata
|
44
|
-
</a>
|
45
|
-
|
46
42
|
<span class="disabled" ng-show="syncInProgress(repository.last_sync)" translate>
|
47
43
|
Cannot republish Repository, a sync is already in progress.
|
48
44
|
</span>
|
@@ -69,26 +65,43 @@
|
|
69
65
|
tooltip-placement="left"
|
70
66
|
tooltip-append-to-body="true">
|
71
67
|
</i>
|
72
|
-
<i class="fa fa-question-circle" ng-switch-when="published"
|
73
|
-
uib-tooltip="{{ 'You cannot remove this repository because it was published to a content view.' | translate }}"
|
74
|
-
tooltip-animation="false"
|
75
|
-
tooltip-placement="left"
|
76
|
-
tooltip-append-to-body="true">
|
77
|
-
</i>
|
78
|
-
<i class="fa fa-question-circle" ng-switch-when="redhat"
|
79
|
-
uib-tooltip="{{ 'You cannot remove this repository because it is a Red Hat repository.' | translate }}"
|
80
|
-
tooltip-animation="false"
|
81
|
-
tooltip-placement="left"
|
82
|
-
tooltip-append-to-body="true">
|
83
|
-
</i>
|
84
68
|
</span>
|
85
69
|
</span>
|
86
70
|
</li>
|
87
71
|
</ul>
|
88
72
|
|
89
|
-
<div bst-modal="removeRepository(repository)" model="
|
90
|
-
<div data-block="modal-header" translate>Remove Repository
|
91
|
-
<div data-block="modal-body"
|
73
|
+
<div bst-modal="removeRepository(repository)" model="repositoryWrapper">
|
74
|
+
<div data-block="modal-header" translate>Remove Repository {{ repositoryWrapper.repository.name }}?</div>
|
75
|
+
<div data-block="modal-body">
|
76
|
+
<div ng-show="repositoryWrapper.repository.promoted" style="margin-bottom: 1em">
|
77
|
+
<span translate>Repository will also be removed from the following published content view versions!</span>
|
78
|
+
<table class="table table-striped table-bordered" style="margin-top: 1em">
|
79
|
+
<thead>
|
80
|
+
<tr>
|
81
|
+
<th translate>Content View</th>
|
82
|
+
<th translate>Versions</th>
|
83
|
+
</tr>
|
84
|
+
</thead>
|
85
|
+
<tbody>
|
86
|
+
<tr ng-repeat="cvs in repositoryWrapper.repositoryVersions">
|
87
|
+
<td class="align-center">
|
88
|
+
<a href="/content_views/{{cvs[0]['content_view_id']}}" target="_blank">
|
89
|
+
{{cvs[0]['content_view_name']}}
|
90
|
+
</a>
|
91
|
+
</td>
|
92
|
+
<td>
|
93
|
+
<div ng-repeat="cvVersions in cvs">
|
94
|
+
<a href="/content_views/{{cvs[0]['content_view_id']}}#/versions/{{cvVersions['id']}}" target="_blank">
|
95
|
+
<span translate>Version {{ cvVersions['version'] }} </span>
|
96
|
+
</a>
|
97
|
+
</div>
|
98
|
+
</td>
|
99
|
+
</tr>
|
100
|
+
</tbody>
|
101
|
+
</table>
|
102
|
+
</div>
|
103
|
+
<span translate>Are you sure you want to remove repository {{ repositoryWrapper.repository.name }}?</span>
|
104
|
+
</div>
|
92
105
|
</div>
|
93
106
|
</span>
|
94
107
|
</div>
|
@@ -57,9 +57,24 @@
|
|
57
57
|
<dt ng-show="repository.content_type !== 'docker'" translate>Upstream URL</dt>
|
58
58
|
<dt ng-show="repository.content_type === 'docker'" translate>Registry URL</dt>
|
59
59
|
<dd bst-edit-text="repository.url"
|
60
|
-
on-save="save(repository)"
|
60
|
+
on-save="save(repository, true)"
|
61
61
|
readonly="product.redhat || denied('edit_products', product)">
|
62
62
|
</dd>
|
63
|
+
|
64
|
+
<span ng-show="repository.generic_remote_options !== []">
|
65
|
+
<span ng-repeat="option in genericRemoteOptions">
|
66
|
+
<dt>{{option.title}}</dt>
|
67
|
+
<dd bst-edit-text="genericRemoteOptions[$index].value"
|
68
|
+
on-save="save(repository)"
|
69
|
+
ng-if='option.input_type=="text"'>
|
70
|
+
</dd>
|
71
|
+
<dd bst-edit-textarea="genericRemoteOptions[$index].value"
|
72
|
+
on-save="save(repository)"
|
73
|
+
ng-if='option.input_type=="textarea"'>
|
74
|
+
</dd>
|
75
|
+
</span>
|
76
|
+
</span>
|
77
|
+
|
63
78
|
<span ng-if="repository.content_type == 'deb'">
|
64
79
|
<dt translate>Releases</dt>
|
65
80
|
<dd bst-edit-text="repository.deb_releases"
|
@@ -246,7 +261,7 @@
|
|
246
261
|
<dt translate>Publish via HTTPS</dt>
|
247
262
|
<dd translate>Yes</dd>
|
248
263
|
|
249
|
-
<span ng-hide="repository.content_type === '
|
264
|
+
<span ng-hide="repository.content_type === 'docker' || repository.content_type === 'ansible_collection'">
|
250
265
|
<dt translate>Publish via HTTP</dt>
|
251
266
|
<dd bst-edit-checkbox="repository.unprotected"
|
252
267
|
formatter="booleanToYesNo"
|
@@ -266,23 +281,6 @@
|
|
266
281
|
</span>
|
267
282
|
</p>
|
268
283
|
</dd>
|
269
|
-
<span ng-if="repository.content_type == 'ostree'">
|
270
|
-
<dt translate>Upstream Sync Policy</dt>
|
271
|
-
<dd bst-edit-custom="repository.ostree_upstream_sync_policy"
|
272
|
-
readonly="denied('edit_products', product)"
|
273
|
-
on-save="save(repository)"
|
274
|
-
formatter="ostreeUpstreamSyncPolicyFilter"
|
275
|
-
formatter-options="repository"
|
276
|
-
>
|
277
|
-
<select ng-options="id as name for (id, name) in ostreeUpstreamSyncPolicies" ng-model="repository.ostree_upstream_sync_policy">
|
278
|
-
</select>
|
279
|
-
<input id="ostree_upstream_sync_depth"
|
280
|
-
name="ostree_upstream_sync_depth"
|
281
|
-
ng-model="repository.ostree_upstream_sync_depth"
|
282
|
-
type="number"
|
283
|
-
ng-disabled="repository.ostree_upstream_sync_policy !== 'custom'"/>
|
284
|
-
</dd>
|
285
|
-
</span>
|
286
284
|
|
287
285
|
<span ng-if="(repository.content_type === 'yum' && !product.redhat) || repository.content_type === 'deb'">
|
288
286
|
<dt translate>GPG Key</dt>
|
@@ -314,7 +312,7 @@
|
|
314
312
|
options="certs()"
|
315
313
|
on-save="save(repository)">
|
316
314
|
</dd>
|
317
|
-
<span ng-if="repository.content_type == 'yum'">
|
315
|
+
<span ng-if="repository.content_type == 'yum' || repository.content_type == 'deb'">
|
318
316
|
<dt translate>Download Policy</dt>
|
319
317
|
<dd bst-edit-select="downloadPolicyDisplay(repository.download_policy)"
|
320
318
|
readonly="denied('edit_products', product)"
|
@@ -380,6 +378,16 @@
|
|
380
378
|
</thead>
|
381
379
|
|
382
380
|
<tbody>
|
381
|
+
|
382
|
+
<tr ng-repeat="content_type in genericContentTypes">
|
383
|
+
<td>{{ content_type['pluralized_name'] }}</td>
|
384
|
+
<td class="align-center">
|
385
|
+
<a ui-sref="product.repository.manage-content.generic-content({contentTypeLabel: '{{content_type['pluralized_label']}}', productId: product.id, repositoryId: repository.id})">
|
386
|
+
{{ repository.content_counts[content_type.label] || 0 }}
|
387
|
+
</a>
|
388
|
+
</td>
|
389
|
+
</tr>
|
390
|
+
|
383
391
|
<tr ng-show="repository.content_type === 'yum'">
|
384
392
|
<td translate>Packages</td>
|
385
393
|
<td class="align-center">
|
@@ -445,14 +453,6 @@
|
|
445
453
|
</a>
|
446
454
|
</td>
|
447
455
|
</tr>
|
448
|
-
<tr ng-show="repository.content_type === 'ostree'">
|
449
|
-
<td translate>OSTree Branches</td>
|
450
|
-
<td class="align-center">
|
451
|
-
<a ui-sref="product.repository.manage-content.ostree-branches({productId: product.id, repositoryId: repository.id})">
|
452
|
-
{{ repository.content_counts.ostree_branch || 0 }}
|
453
|
-
</a>
|
454
|
-
</td>
|
455
|
-
</tr>
|
456
456
|
<tr ng-show="repository.content_type === 'file'">
|
457
457
|
<td translate>Files</td>
|
458
458
|
<td class="align-center">
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<span page-title ng-model="repository">{{ 'Manage Content for Repository:' | translate }} {{ repository.name }}</span>
|
2
|
+
|
3
|
+
<div data-extend-template="layouts/partials/table.html">
|
4
|
+
<div data-block="list-actions">
|
5
|
+
<div bst-modal="removeContent()" model="table" ng-show="contentType.removable">
|
6
|
+
<div data-block="modal-header"
|
7
|
+
translate
|
8
|
+
translate-n="table.numSelected"
|
9
|
+
translate-plural="Remove {{ table.numSelected }} content units?">
|
10
|
+
Remove Content?
|
11
|
+
</div>
|
12
|
+
<div data-block="modal-body"
|
13
|
+
translate
|
14
|
+
translate-n="table.numSelected"
|
15
|
+
translate-plural="Are you sure you want to remove the {{ table.numSelected }} content units selected?">
|
16
|
+
Are you sure you want to remove the {{ table.getSelected()[0].name }} content unit?
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
|
20
|
+
<button type="button" class="btn btn-default"
|
21
|
+
ng-hide="denied('edit_products')"
|
22
|
+
ng-click="openModal()"
|
23
|
+
ng-disabled="table.working || table.numSelected === 0">
|
24
|
+
<i class="fa fa-trash-o" ng-hide="table.working"></i>
|
25
|
+
<span translate>Remove Content</span>
|
26
|
+
</button>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<div data-block="table">
|
30
|
+
<table class="table table-striped table-bordered" >
|
31
|
+
|
32
|
+
<thead>
|
33
|
+
<tr bst-table-head row-select>
|
34
|
+
<th bst-table-column ng-repeat="header in contentType.detailsColumns">
|
35
|
+
<span translate>{{header}}</span>
|
36
|
+
</th>
|
37
|
+
</tr>
|
38
|
+
</thead>
|
39
|
+
|
40
|
+
<tbody>
|
41
|
+
<tr bst-table-row ng-repeat="package in table.rows" row-select="package">
|
42
|
+
<td bst-table-cell ng-if="package.name">
|
43
|
+
{{ package.name }}
|
44
|
+
</td>
|
45
|
+
<td bst-table-cell ng-if="package.version">
|
46
|
+
{{ package.version }}
|
47
|
+
</td>
|
48
|
+
<td bst-table-cell ng-if="package.filename">
|
49
|
+
{{ package.filename }}
|
50
|
+
</td>
|
51
|
+
</tr>
|
52
|
+
</tbody>
|
53
|
+
|
54
|
+
</table>
|
55
|
+
</div>
|
56
|
+
|
57
|
+
</div>
|
@@ -87,6 +87,16 @@ angular.module('Bastion.repositories').controller('NewRepositoryController',
|
|
87
87
|
}
|
88
88
|
});
|
89
89
|
|
90
|
+
$scope.$watch('repository.content_type', function () {
|
91
|
+
$scope.genericRemoteOptions = RepositoryTypesService.getAttribute($scope.repository, "generic_remote_options");
|
92
|
+
$scope.urlDescription = RepositoryTypesService.getAttribute($scope.repository, "url_description");
|
93
|
+
if ($scope.genericRemoteOptions && $scope.genericRemoteOptions !== []) {
|
94
|
+
$scope.genericRemoteOptions.forEach(function(option) {
|
95
|
+
option.value = "";
|
96
|
+
});
|
97
|
+
}
|
98
|
+
});
|
99
|
+
|
90
100
|
$scope.handleFiles = function (element) {
|
91
101
|
var reader = new FileReader();
|
92
102
|
reader.addEventListener("loadend", function() {
|
@@ -119,9 +129,6 @@ angular.module('Bastion.repositories').controller('NewRepositoryController',
|
|
119
129
|
|
120
130
|
$scope.save = function (repository) {
|
121
131
|
var fields = ['upstream_password', 'upstream_username', 'ansible_collection_auth_token', 'ansible_collection_auth_url', 'ansible_collection_requirements'];
|
122
|
-
if (repository.content_type === 'ostree') {
|
123
|
-
repository.unprotected = false;
|
124
|
-
}
|
125
132
|
if (repository.content_type === 'yum') {
|
126
133
|
repository.os_versions = $scope.osVersionsParam();
|
127
134
|
if ($scope.repositoryForm.ignore_srpms.$modelValue) {
|
@@ -130,17 +137,28 @@ angular.module('Bastion.repositories').controller('NewRepositoryController',
|
|
130
137
|
repository.ignorable_content = [];
|
131
138
|
}
|
132
139
|
}
|
133
|
-
if (repository.content_type !== 'yum') {
|
140
|
+
if (repository.content_type !== 'yum' && repository.content_type !== 'deb' ) {
|
134
141
|
repository['download_policy'] = '';
|
135
142
|
}
|
136
143
|
if (repository.arch === 'No restriction') {
|
137
144
|
repository.arch = null;
|
138
145
|
}
|
146
|
+
|
139
147
|
angular.forEach(fields, function(field) {
|
140
148
|
if (repository[field] === '') {
|
141
149
|
repository[field] = null;
|
142
150
|
}
|
143
151
|
});
|
152
|
+
|
153
|
+
if ($scope.genericRemoteOptions && $scope.genericRemoteOptions !== []) {
|
154
|
+
$scope.genericRemoteOptions.forEach(function(option) {
|
155
|
+
if (option.type === "Array" && option.value !== "") {
|
156
|
+
repository[option.name] = option.value.split(option.delimiter);
|
157
|
+
} else {
|
158
|
+
repository[option.name] = option.value;
|
159
|
+
}
|
160
|
+
});
|
161
|
+
}
|
144
162
|
repository.$save(success, error);
|
145
163
|
};
|
146
164
|
|
@@ -156,6 +174,30 @@ angular.module('Bastion.repositories').controller('NewRepositoryController',
|
|
156
174
|
|
157
175
|
$scope.requirementPopover = $sce.trustAsHtml("To learn more about requirement.yml specification, visit <a href='https://docs.ansible.com/ansible/latest/galaxy/user_guide.html#install-multiple-collections-with-a-requirements-file' target=\"_blank\">documentation </a>");
|
158
176
|
|
177
|
+
$scope.debURLPopover = $sce.trustAsHtml("For standard Debian repos, this is the folder that contains the \"dists/\" and the \"pool/\" subfolders.");
|
178
|
+
|
179
|
+
$scope.distPopover = $sce.trustAsHtml("A \"distribution\" provides the path from the repository root to the \"Release\" file <br/>" +
|
180
|
+
"you want to access. Each distribution in the list should use /etc/apt/sources.list<br/>" +
|
181
|
+
"syntax. For most official Debian and Ubuntu repositories, the distribution is equal<br/>" +
|
182
|
+
"to either the codename or the suite. When syncing a repo using flat repository format<br/>" +
|
183
|
+
"specify exactly one distribution, which must end with a \"/\".");
|
184
|
+
|
185
|
+
$scope.componentPopover = $sce.trustAsHtml("Requesting a component that does not exist in the upstream repo, will result in <br/>" +
|
186
|
+
"a Pulp warning, but no error. A typo can therefore result in missing content.");
|
187
|
+
|
188
|
+
$scope.archPopover = $sce.trustAsHtml("A list of valid Debian machine architecture strings can be obtained by running <br/>" +
|
189
|
+
"\"dpkg-architecture -L\". If present in the upstream repo, the \"all\"<br/>" +
|
190
|
+
" architecture is always synced, and does not need to be provided here.<br/>" +
|
191
|
+
" Requesting an architecture that does not exist in the upstream repo, <br/>" +
|
192
|
+
"will result in a Pulp warning, but no error. A typo can therefore result <br/>" +
|
193
|
+
"in missing content.");
|
194
|
+
|
195
|
+
$scope.validateDebAttrList = function(deb_attribute) {
|
196
|
+
var value = document.getElementById(deb_attribute).value;
|
197
|
+
var pattern = new RegExp(/^((?!,).)*$/);
|
198
|
+
return pattern.test(value);
|
199
|
+
};
|
200
|
+
|
159
201
|
$scope.displayHttpProxyPolicyName = function (policy) {
|
160
202
|
return HttpProxyPolicy.displayHttpProxyPolicyName(policy);
|
161
203
|
};
|