katello 3.18.5 → 4.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of katello might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/katello/katello.scss +72 -0
- data/app/controllers/katello/api/registry/registry_proxies_controller.rb +6 -4
- data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +0 -19
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +1 -3
- data/app/controllers/katello/api/v2/content_credentials_controller.rb +24 -24
- data/app/controllers/katello/api/v2/content_export_incrementals_controller.rb +1 -1
- data/app/controllers/katello/api/v2/content_exports_controller.rb +4 -0
- data/app/controllers/katello/api/v2/content_views_controller.rb +2 -2
- data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +2 -3
- data/app/controllers/katello/api/v2/repositories_controller.rb +3 -19
- data/app/controllers/katello/api/v2/simple_content_access_controller.rb +34 -0
- data/app/controllers/katello/api/v2/subscriptions_controller.rb +1 -1
- data/app/controllers/katello/api/v2/upstream_subscriptions_controller.rb +8 -4
- data/app/controllers/katello/concerns/api/v2/authorization.rb +1 -14
- data/app/controllers/katello/concerns/authorization/api/v2/content_views_controller.rb +1 -1
- data/app/helpers/katello/sync_management_helper.rb +0 -2
- data/app/lib/actions/candlepin/environment/create.rb +1 -1
- data/app/lib/actions/candlepin/environment/set_content.rb +1 -1
- data/app/lib/actions/katello/activation_key/create.rb +9 -11
- data/app/lib/actions/katello/capsule_content/sync.rb +8 -8
- data/app/lib/actions/katello/capsule_content/sync_capsule.rb +9 -0
- data/app/lib/actions/katello/check_matching_content.rb +17 -0
- data/app/lib/actions/katello/content_view/environment_create.rb +6 -8
- data/app/lib/actions/katello/content_view/publish.rb +1 -1
- data/app/lib/actions/katello/content_view_version/incremental_update.rb +11 -7
- data/app/lib/actions/katello/host/hypervisors_update.rb +4 -4
- data/app/lib/actions/katello/organization/create.rb +3 -5
- data/app/lib/actions/katello/organization/destroy.rb +1 -1
- data/app/lib/actions/katello/organization/manifest_delete.rb +3 -5
- data/app/lib/actions/katello/organization/manifest_import.rb +1 -1
- data/app/lib/actions/katello/organization/manifest_refresh.rb +1 -1
- data/app/lib/actions/katello/orphan_cleanup/remove_orphans.rb +1 -1
- data/app/lib/actions/katello/repository/check_matching_content.rb +3 -1
- data/app/lib/actions/katello/repository/clone_contents.rb +8 -11
- data/app/lib/actions/katello/repository/create.rb +0 -8
- data/app/lib/actions/katello/repository/filtered_index_content.rb +3 -0
- data/app/lib/actions/katello/repository/index_content.rb +1 -0
- data/app/lib/actions/katello/repository/multi_clone_contents.rb +9 -12
- data/app/lib/actions/katello/repository/sync.rb +1 -5
- data/app/lib/actions/katello/repository/update.rb +0 -8
- data/app/lib/actions/middleware/execute_if_contents_changed.rb +4 -1
- data/app/lib/actions/pulp/orchestration/repository/refresh_repos.rb +0 -6
- data/app/lib/actions/pulp3/capsule_content/refresh_distribution.rb +3 -3
- data/app/lib/actions/pulp3/content_guard/refresh_all_distributions.rb +1 -2
- data/app/lib/actions/pulp3/content_migration_presenter.rb +2 -5
- data/app/lib/actions/pulp3/orchestration/repository/refresh_repos.rb +1 -6
- data/app/lib/katello/concerns/base_template_scope_extensions.rb +8 -0
- data/app/lib/katello/errors.rb +1 -1
- data/app/lib/katello/event_daemon/monitor.rb +53 -0
- data/app/lib/katello/event_daemon/runner.rb +99 -0
- data/app/lib/katello/logging.rb +32 -0
- data/app/lib/katello/messaging/connection.rb +1 -7
- data/app/lib/katello/util/pulpcore_content_filters.rb +1 -1
- data/app/lib/katello/validators/content_view_puppet_module_validator.rb +1 -1
- data/app/models/katello/activation_key.rb +2 -2
- data/app/models/katello/candlepin/repository_mapper.rb +1 -1
- data/app/models/katello/concerns/hostgroup_extensions.rb +2 -4
- data/app/models/katello/concerns/organization_extensions.rb +2 -2
- data/app/models/katello/concerns/pulp_database_unit.rb +0 -12
- data/app/models/katello/concerns/redhat_extensions.rb +8 -9
- data/app/models/katello/concerns/smart_proxy_extensions.rb +24 -0
- data/app/models/katello/content_view.rb +5 -1
- data/app/models/katello/content_view_environment.rb +2 -2
- data/app/models/katello/content_view_puppet_environment.rb +2 -2
- data/app/models/katello/content_view_version.rb +2 -1
- data/app/models/katello/content_view_version_export_history.rb +20 -0
- data/app/models/katello/erratum.rb +3 -1
- data/app/models/katello/file_unit.rb +0 -4
- data/app/models/katello/glue/candlepin/pool.rb +2 -0
- data/app/models/katello/glue/pulp/repo.rb +0 -6
- data/app/models/katello/glue/pulp/repos.rb +1 -22
- data/app/models/katello/host/content_facet.rb +31 -9
- data/app/models/katello/ping.rb +19 -39
- data/app/models/katello/pool.rb +5 -0
- data/app/models/katello/product.rb +3 -3
- data/app/models/katello/repository.rb +3 -3
- data/app/presenters/katello/host_subscription_presenter.rb +3 -4
- data/app/presenters/katello/host_subscriptions_presenter.rb +24 -0
- data/app/services/katello/applicability/applicable_content_helper.rb +6 -8
- data/app/services/katello/candlepin_event_listener.rb +11 -19
- data/app/services/katello/event_monitor/poller_thread.rb +2 -11
- data/app/services/katello/pulp/repository.rb +2 -4
- data/app/services/katello/pulp/smart_proxy_repository.rb +0 -15
- data/app/services/katello/pulp3/api/core.rb +0 -14
- data/app/services/katello/pulp3/erratum.rb +1 -2
- data/app/services/katello/pulp3/migration.rb +9 -83
- data/app/services/katello/pulp3/migration_plan.rb +5 -54
- data/app/services/katello/pulp3/migration_switchover.rb +5 -36
- data/app/services/katello/pulp3/repository/apt.rb +2 -1
- data/app/services/katello/pulp3/repository/yum.rb +2 -11
- data/app/services/katello/pulp3/repository.rb +13 -34
- data/app/services/katello/pulp3/rpm.rb +1 -5
- data/app/services/katello/pulp3/task.rb +5 -8
- data/app/services/katello/pulp3/task_group.rb +5 -13
- data/app/services/katello/repository_type.rb +1 -1
- data/app/views/foreman/smart_proxies/_content_tab.html.erb +4 -47
- data/app/views/foreman/smart_proxies/show.html.erb +1 -1
- data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +22 -25
- data/app/views/katello/api/v2/content_view_version_export_histories/show.json.rabl +1 -0
- data/app/views/katello/api/v2/organizations/show.json.rabl +7 -9
- data/app/views/katello/sync_management/_products.html.erb +1 -1
- data/app/views/overrides/organizations/_edit_override.html.erb +1 -4
- data/app/views/overrides/smart_proxies/_environment_tab.html.erb +1 -1
- data/app/views/overrides/smart_proxies/_environment_tab_pane.html.erb +1 -1
- data/config/katello.yaml.example +0 -3
- data/config/routes/api/v2.rb +8 -10
- data/db/migrate/20191204214919_add_content_view_version_counts.rb +0 -1
- data/db/migrate/20200514092553_move_katello_fields_from_hostgroups.katello.rb +1 -1
- data/db/migrate/20210119162528_delete_puppet_and_ostree_repos.rb +56 -0
- data/db/migrate/20210128231228_add_type_and_from_cvv_to_cvv_export_history.rb +14 -0
- data/db/migrate/20210201163238_migrate_background_download_policy_to_migrate.rb +7 -0
- data/db/seeds.d/104-proxy.rb +1 -1
- data/db/seeds.d/111-upgrade_tasks.rb +2 -1
- data/engines/bastion/app/assets/javascripts/bastion/auth/authorization.service.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/capsule-content/capsule-content.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-host-register-os-client.directive.js +17 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-client.html +11 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-deb-client.html +38 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-oracle-client.html +5 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-sles-client.html +28 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register.html +14 -11
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter-details.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/download-policy.service.js +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.controller.js +2 -2
- data/lib/katello/engine.rb +4 -5
- data/lib/katello/middleware/event_daemon.rb +1 -1
- data/lib/katello/permission_creator.rb +3 -2
- data/lib/katello/plugin.rb +2 -2
- data/lib/katello/tasks/jenkins.rake +1 -1
- data/lib/katello/tasks/pulp3_content_switchover.rake +20 -31
- data/lib/katello/tasks/pulp3_migration.rake +25 -45
- data/lib/katello/tasks/pulp3_migration_abort.rake +0 -8
- data/lib/katello/tasks/pulp3_migration_stats.rake +3 -46
- data/lib/katello/tasks/upgrades/4.0/remove_ostree_puppet_content.rake +16 -0
- data/lib/katello/version.rb +1 -1
- data/lib/proxy_api/container_gateway.rb +21 -0
- data/locale/bn/katello.edit.po +0 -0
- data/locale/cs/katello.edit.po +0 -0
- data/locale/de/katello.edit.po +0 -0
- data/locale/en/katello.edit.po +0 -0
- data/locale/es/katello.edit.po +0 -0
- data/locale/fr/katello.edit.po +0 -0
- data/locale/gu/katello.edit.po +0 -0
- data/locale/hi/katello.edit.po +0 -0
- data/locale/it/katello.edit.po +0 -0
- data/locale/ja/katello.edit.po +0 -0
- data/locale/kn/katello.edit.po +0 -0
- data/locale/ko/katello.edit.po +0 -0
- data/locale/mr/katello.edit.po +0 -0
- data/locale/or/katello.edit.po +0 -0
- data/locale/pa/katello.edit.po +0 -0
- data/locale/pt/katello.edit.po +0 -0
- data/locale/pt_BR/katello.edit.po +0 -0
- data/locale/ru/katello.edit.po +0 -0
- data/locale/ta/katello.edit.po +0 -0
- data/locale/te/katello.edit.po +0 -0
- data/locale/zh_CN/katello.edit.po +0 -0
- data/locale/zh_TW/katello.edit.po +0 -0
- data/package.json +1 -1
- data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +0 -1
- data/webpack/__mocks__/foremanReact/components/Pagination/PaginationHooks.js +2 -0
- data/webpack/__mocks__/foremanReact/components/common/dates/LongDateTime.js +5 -0
- data/webpack/{scenes/ContentViews/Details/Repositories → components/SelectableDropdown}/SelectableDropdown.js +20 -3
- data/webpack/components/SelectableDropdown/__tests__/SelectableDropdown.test.js +45 -0
- data/webpack/components/SelectableDropdown/index.js +3 -0
- data/webpack/components/Table/TableWrapper.js +2 -1
- data/webpack/components/Table/helpers.js +14 -0
- data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +0 -1
- data/webpack/containers/Application/overrides.scss +6 -0
- data/webpack/index.js +6 -0
- data/webpack/redux/actions/RedHatRepositories/helpers.js +5 -5
- data/webpack/scenes/ContentViews/ContentViewsActions.js +31 -2
- data/webpack/scenes/ContentViews/ContentViewsConstants.js +5 -1
- data/webpack/scenes/ContentViews/Copy/ContentViewCopySelectors.js +16 -0
- data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +77 -0
- data/webpack/scenes/ContentViews/Copy/CopyContentViewModal.js +44 -0
- data/webpack/scenes/ContentViews/Copy/__tests__/contentViewCopyResult.fixtures.json +42 -0
- data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +39 -0
- data/webpack/scenes/ContentViews/Copy/index.js +4 -0
- data/webpack/scenes/ContentViews/Create/ContentViewCreateSelectors.js +16 -0
- data/webpack/scenes/ContentViews/Create/ContentViewFormComponents.js +58 -0
- data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +175 -0
- data/webpack/scenes/ContentViews/Create/CreateContentViewModal.js +27 -0
- data/webpack/scenes/ContentViews/Create/__tests__/contentViewCreateResult.fixtures.json +42 -0
- data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +92 -0
- data/webpack/scenes/ContentViews/Create/index.js +4 -0
- data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +16 -0
- data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +20 -1
- data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +17 -7
- data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +19 -13
- data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +40 -0
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +124 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.fixtures.json +134 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +92 -0
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +44 -25
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailRepos.test.js +17 -7
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +24 -0
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +53 -3
- data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +4 -3
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +41 -0
- data/webpack/scenes/ContentViews/helpers.js +13 -0
- data/webpack/scenes/SmartProxy/Content.js +17 -0
- data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +11 -0
- data/webpack/scenes/SmartProxy/SmartProxyContentConstants.js +3 -0
- data/webpack/scenes/SmartProxy/SmartProxyContentSelectors.js +16 -0
- data/webpack/scenes/SmartProxy/SmartProxyContentTable.js +152 -0
- data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentResult.fixtures.json +140 -0
- data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +38 -0
- data/webpack/scenes/SmartProxy/index.js +4 -0
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +2 -7
- data/webpack/scenes/Subscriptions/Manifest/ManifestActions.js +3 -3
- data/webpack/scenes/Subscriptions/Manifest/__tests__/ManifestActions.test.js +2 -2
- data/webpack/scenes/Subscriptions/Manifest/__tests__/SimpleContentAccess.test.js +2 -2
- data/webpack/scenes/Subscriptions/Manifest/index.js +0 -1
- data/webpack/test-utils/react-testing-lib-wrapper.js +5 -2
- data/webpack/utils/helpers.js +3 -0
- metadata +103 -63
- data/app/controllers/katello/api/v2/gpg_keys_controller.rb +0 -114
- data/app/lib/actions/pulp3/content_migration_reset.rb +0 -22
- data/app/lib/katello/util/hostgroup_facets_helper.rb +0 -126
- data/app/overrides/disable_turbolinks_on_proxies_index.rb +0 -5
- data/app/services/katello/event_daemon.rb +0 -135
- data/app/services/katello/pulp/content_counts_calculator.rb +0 -60
- data/db/migrate/20210201165835_add_migration_missing_content.rb +0 -12
- data/db/migrate/20210420140050_add_pulp3_hrefs_to_content_types_deb.rb +0 -5
- data/lib/katello/tasks/check_config.rake +0 -11
- data/lib/katello/tasks/fix_hostgroup_facets.rake +0 -8
- data/lib/katello/tasks/pulp3_migration_approve_corrupted.rake +0 -21
- data/lib/katello/tasks/pulp3_migration_reset.rake +0 -26
- data/lib/katello/tasks/reports.rake +0 -7
- data/lib/katello/tasks/upgrades/3.10/update_gpg_key_urls.rake +0 -32
- data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.scss +0 -5
- data/webpack/scenes/ContentViews/Table/actionResolver.js +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3942a71eb36eb3e5c9e6adcf139e30a2443a038eea11c417e55c6b590580465f
|
4
|
+
data.tar.gz: f59fa795ac9c2298450020e4c8f90409691374acc1f09e1c49a88e661d06cdd6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff801d6c4540553020d70162d030def3a7782771f58fe8e85a81def49dd1abdb4abeab3b039ce56a2741636e745bba0887e0713ae534809e952ab0fc0482ba23
|
7
|
+
data.tar.gz: 4920f4ab7232331cc2d79a56f05625811a71f334e8909bab61a7d74cbbb8fbf345a9394a888bf44ca94dac9ae17dd4f53a069f6a7fd822926377dd8b9dc1c6ed
|
@@ -163,6 +163,78 @@ input:focus {
|
|
163
163
|
@extend .status_exclamation_icon;
|
164
164
|
}
|
165
165
|
|
166
|
+
/* BUTTONS */
|
167
|
+
input[type='submit'], button, .button {
|
168
|
+
font-size: 10px;
|
169
|
+
display: inline-block;
|
170
|
+
vertical-align: bottom;
|
171
|
+
background: -moz-linear-gradient(top, #f9f9f9, #f0f0f0, #e5e5e5, #e9e9e9);
|
172
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), color-stop(0.9, #e5e5e5), to(#e9e9e9));
|
173
|
+
box-shadow: none;
|
174
|
+
border: 1px solid darken($stroke_color, 20%);
|
175
|
+
color: #221e1f;
|
176
|
+
cursor: pointer;
|
177
|
+
padding: 4px 8px;
|
178
|
+
border-radius: 5px;
|
179
|
+
text-shadow: 0 1px 0 rgba($white_color, 1);
|
180
|
+
min-height: 14px;
|
181
|
+
.nomargin {
|
182
|
+
margin: 0;
|
183
|
+
}
|
184
|
+
&:hover {
|
185
|
+
background: -moz-linear-gradient(top, $white_color, $white_color, #cfcfcf);
|
186
|
+
background: -webkit-gradient(linear, left top, left bottom, from($white_color), color-stop(0.6, $white_color), to(#cfcfcf));
|
187
|
+
box-shadow: 0 1px 2px rgba(0,0,0,0.5);
|
188
|
+
text-decoration: none;
|
189
|
+
color: black;
|
190
|
+
}
|
191
|
+
&:active {
|
192
|
+
background: -moz-linear-gradient(top, #c2c3c0, #e4e5e4);
|
193
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#c2c3c0), to(#e4e5e4));
|
194
|
+
box-shadow: none;
|
195
|
+
text-decoration: none;
|
196
|
+
}
|
197
|
+
&:focus {
|
198
|
+
text-decoration: none;
|
199
|
+
color: #000;
|
200
|
+
border-width: 2px;
|
201
|
+
}
|
202
|
+
&.dialogbutton {
|
203
|
+
float: right;
|
204
|
+
margin-left: 3px;
|
205
|
+
margin: 40px 4px 4px;
|
206
|
+
}
|
207
|
+
&.formbutton {
|
208
|
+
display: inline-block;
|
209
|
+
margin-left: 3px;
|
210
|
+
margin: 40px 4px 4px;
|
211
|
+
}
|
212
|
+
&.actionlink {
|
213
|
+
margin: 40px 0 0;
|
214
|
+
}
|
215
|
+
&.disabled, &[disabled] {
|
216
|
+
cursor: default;
|
217
|
+
background: transparent;
|
218
|
+
opacity: 0.4;
|
219
|
+
|
220
|
+
&:hover {
|
221
|
+
background: transparent;
|
222
|
+
box-shadow: none;
|
223
|
+
}
|
224
|
+
}
|
225
|
+
&.iconbutton {
|
226
|
+
display: inline-block;
|
227
|
+
}
|
228
|
+
&.tiny {
|
229
|
+
padding: 4px;
|
230
|
+
margin: 0;
|
231
|
+
&:active, &:focus {
|
232
|
+
margin: 0;
|
233
|
+
padding: 3px;
|
234
|
+
}
|
235
|
+
}
|
236
|
+
}
|
237
|
+
|
166
238
|
table {
|
167
239
|
border-collapse: collapse;
|
168
240
|
border: 1px solid $stroke_color;
|
@@ -167,9 +167,11 @@ module Katello
|
|
167
167
|
end
|
168
168
|
|
169
169
|
if (manifest_response = redirect_client { Resources::Registry::Proxy.get(@_request.fullpath, headers) })
|
170
|
-
#
|
170
|
+
#when pulp 2 is removed, this should no longer be needed, and all clients should be redirected
|
171
|
+
logger.debug filter_sensitive_data(manifest_response)
|
171
172
|
results = JSON.parse(manifest_response)
|
172
|
-
|
173
|
+
|
174
|
+
response.header['Docker-Content-Digest'] = "sha256:#{Digest::SHA256.hexdigest(manifest_response)}"
|
173
175
|
# https://docs.docker.com/registry/spec/manifest-v2-2/
|
174
176
|
# If its v2 schema 2 only the mediaType attribute will be present in the manifest
|
175
177
|
media_type = results['mediaType']
|
@@ -182,8 +184,8 @@ module Katello
|
|
182
184
|
'application/vnd.docker.distribution.manifest.v1+prettyjws'
|
183
185
|
end
|
184
186
|
end
|
185
|
-
|
186
|
-
render json: manifest_response
|
187
|
+
|
188
|
+
render json: manifest_response, content_type: media_type
|
187
189
|
end
|
188
190
|
end
|
189
191
|
|
@@ -4,8 +4,6 @@ module Katello
|
|
4
4
|
include ForemanTasks::Triggers
|
5
5
|
include AbstractController::Callbacks
|
6
6
|
|
7
|
-
before_action :deprecated, only: :deb_package_profile
|
8
|
-
|
9
7
|
skip_before_action :authorize, :only => [:upload_package_profile, :upload_profiles, :deb_package_profile]
|
10
8
|
before_action :find_host, :only => [:upload_package_profile, :upload_profiles, :deb_package_profile]
|
11
9
|
before_action :authorize_client_or_user, :only => [:upload_package_profile, :upload_profiles, :deb_package_profile]
|
@@ -31,19 +29,6 @@ module Katello
|
|
31
29
|
render :json => Resources::Candlepin::Consumer.get(@host.subscription_facet.uuid)
|
32
30
|
end
|
33
31
|
|
34
|
-
api :PUT, "/systems/:id/deb_package_profile", N_("Update installed deb packages")
|
35
|
-
param :deb_package_profile, Hash, :required => true do
|
36
|
-
param :deb_packages, Array, :required => true do
|
37
|
-
param :name, String, :required => true
|
38
|
-
param :architecture, String, :required => true
|
39
|
-
param :version, String, :required => true
|
40
|
-
end
|
41
|
-
end
|
42
|
-
param :id, String, :desc => N_("UUID of the system"), :required => true
|
43
|
-
def deb_package_profile
|
44
|
-
upload_profiles
|
45
|
-
end
|
46
|
-
|
47
32
|
def find_host(uuid = nil)
|
48
33
|
params = request.path_parameters
|
49
34
|
uuid ||= params[:id]
|
@@ -65,9 +50,5 @@ module Katello
|
|
65
50
|
authorized = (User.current.uuid == @host.subscription_facet.uuid) if @host && User.consumer?
|
66
51
|
authorized
|
67
52
|
end
|
68
|
-
|
69
|
-
def deprecated
|
70
|
-
::Foreman::Deprecation.api_deprecation_warning("it will be removed in Katello 4.0. Please use /consumers/:id/profiles instead.")
|
71
|
-
end
|
72
53
|
end
|
73
54
|
end
|
@@ -41,8 +41,6 @@ module Katello
|
|
41
41
|
body_json['displayMessage'] = body_json['message']
|
42
42
|
end
|
43
43
|
response.body = body_json.to_s
|
44
|
-
|
45
|
-
# rubocop:disable Lint/SuppressedException
|
46
44
|
rescue JSON::ParserError
|
47
45
|
# Not a json response, leave as-is
|
48
46
|
end
|
@@ -370,7 +368,7 @@ module Katello
|
|
370
368
|
|
371
369
|
if (ak_names = params[:activation_keys])
|
372
370
|
fail HttpErrors::NotFound, _("Organization not found") if organization.nil?
|
373
|
-
ak_names = ak_names.split(",")
|
371
|
+
ak_names = ak_names.split(",").uniq.compact
|
374
372
|
activation_keys = ak_names.map do |ak_name|
|
375
373
|
activation_key = organization.activation_keys.find_by(:name => ak_name)
|
376
374
|
fail HttpErrors::NotFound, _("Couldn't find activation key '%s'") % ak_name unless activation_key
|
@@ -10,9 +10,9 @@ module Katello
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def_param_group :content_credential do
|
13
|
-
param :name, :identifier, :action_aware => true, :required => true, :desc => N_(
|
14
|
-
param :content_type, String, :action_aware => true, :required => true, :desc => N_(
|
15
|
-
param :content, String, :action_aware => true, :required => true, :desc => N_(
|
13
|
+
param :name, :identifier, :action_aware => true, :required => true, :desc => N_('Name of the Content Credential')
|
14
|
+
param :content_type, String, :action_aware => true, :required => true, :desc => N_('Type of content: "cert", "gpg_key"')
|
15
|
+
param :content, String, :action_aware => true, :required => true, :desc => N_('Public key block in DER encoding or certificate content')
|
16
16
|
end
|
17
17
|
|
18
18
|
resource_description do
|
@@ -22,13 +22,13 @@ module Katello
|
|
22
22
|
Content Credentials are used to store credentials like GPG Keys and Certificates for the authentication
|
23
23
|
to Products / Repositories.
|
24
24
|
DESC
|
25
|
-
api_version
|
25
|
+
api_version 'v2'
|
26
26
|
end
|
27
27
|
|
28
|
-
api :GET, "/content_credentials", N_(
|
29
|
-
param :organization_id, :number, :desc => N_(
|
30
|
-
param :name, String, :desc => N_(
|
31
|
-
param :content_type, String, :desc => N_(
|
28
|
+
api :GET, "/content_credentials", N_('List Content Credentials')
|
29
|
+
param :organization_id, :number, :desc => N_('Organization identifier'), :required => true
|
30
|
+
param :name, String, :desc => N_('Name of the Content Credential'), :required => false
|
31
|
+
param :content_type, String, :desc => N_('Type of content'), :required => false
|
32
32
|
param_group :search, Api::V2::ApiController
|
33
33
|
def index
|
34
34
|
respond(:collection => scoped_search(index_relation.distinct, :name, :asc))
|
@@ -41,15 +41,15 @@ module Katello
|
|
41
41
|
query
|
42
42
|
end
|
43
43
|
|
44
|
-
api :POST, "/content_credentials", N_(
|
45
|
-
param :organization_id, :number, :desc => N_(
|
44
|
+
api :POST, "/content_credentials", N_('Create a Content Credential')
|
45
|
+
param :organization_id, :number, :desc => N_('Organization identifier'), :required => true
|
46
46
|
param_group :content_credential, :as => :create
|
47
47
|
def create
|
48
48
|
filepath = params.try(:[], :file_path).try(:path)
|
49
49
|
|
50
50
|
content = nil
|
51
51
|
if filepath
|
52
|
-
content = File.open(filepath,
|
52
|
+
content = File.open(filepath, 'rb') { |file| file.read }
|
53
53
|
else
|
54
54
|
content = params[:content]
|
55
55
|
end
|
@@ -58,45 +58,45 @@ module Katello
|
|
58
58
|
respond_for_create(:resource => content_credential)
|
59
59
|
end
|
60
60
|
|
61
|
-
api :GET, "/content_credentials/:id", N_(
|
62
|
-
param :id, :number, :desc => N_(
|
61
|
+
api :GET, "/content_credentials/:id", N_('Show a Content Credential')
|
62
|
+
param :id, :number, :desc => N_('Content Credential numeric identifier'), :required => true
|
63
63
|
def show
|
64
64
|
respond_for_show(:resource => @content_credential)
|
65
65
|
end
|
66
66
|
|
67
|
-
api :PUT, "/content_credentials/:id", N_(
|
68
|
-
param :id, :number, :desc => N_(
|
67
|
+
api :PUT, "/content_credentials/:id", N_('Update a Content Credential')
|
68
|
+
param :id, :number, :desc => N_('Content Credential ID'), :required => true
|
69
69
|
param_group :content_credential
|
70
70
|
def update
|
71
71
|
sync_task(::Actions::Katello::GpgKey::Update, @content_credential, content_credential_params.to_h)
|
72
72
|
respond_for_show(:resource => @content_credential)
|
73
73
|
end
|
74
74
|
|
75
|
-
api :DELETE, "/content_credentials/:id", N_(
|
76
|
-
param :id, :number, :desc => N_(
|
75
|
+
api :DELETE, "/content_credentials/:id", N_('Destroy a Content Credential')
|
76
|
+
param :id, :number, :desc => N_('Content Credential ID'), :required => true
|
77
77
|
def destroy
|
78
78
|
@content_credential.destroy
|
79
79
|
respond_for_destroy
|
80
80
|
end
|
81
81
|
|
82
|
-
api :GET, "/content_credentials/:id/content", N_(
|
82
|
+
api :GET, "/content_credentials/:id/content", N_('Return the content of a Content Credential, used directly by yum')
|
83
83
|
param :id, :number, :required => true
|
84
84
|
def content
|
85
85
|
render(:plain => @content_credential.content, :layout => false)
|
86
86
|
end
|
87
87
|
|
88
|
-
api :POST, "/content_credentials/:id/content", N_(
|
89
|
-
param :id, :number, :desc => N_(
|
90
|
-
param :content, File, :desc => N_(
|
88
|
+
api :POST, "/content_credentials/:id/content", N_('Upload Content Credential contents')
|
89
|
+
param :id, :number, :desc => N_('Content Credential ID'), :required => true
|
90
|
+
param :content, File, :desc => N_('File contents'), :required => true
|
91
91
|
def set_content
|
92
92
|
filepath = params.try(:[], :content).try(:path)
|
93
93
|
|
94
94
|
if filepath
|
95
|
-
content = File.open(filepath,
|
95
|
+
content = File.open(filepath, 'rb') { |file| file.read }
|
96
96
|
@content_credential.update!(:content => content)
|
97
|
-
render :json => {:status =>
|
97
|
+
render :json => {:status => 'success'}
|
98
98
|
else
|
99
|
-
fail HttpErrors::BadRequest, _(
|
99
|
+
fail HttpErrors::BadRequest, _('No file uploaded')
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
@@ -58,7 +58,7 @@ module Katello
|
|
58
58
|
organization: @organization,
|
59
59
|
create_by_default: false)
|
60
60
|
if @view.blank?
|
61
|
-
msg = _("Unable to incrementally export. Do a Full Export the library content "\
|
61
|
+
msg = _("Unable to incrementally export. Do a Full Export on the library content "\
|
62
62
|
"before updating from the latest increment.")
|
63
63
|
fail HttpErrors::BadRequest, msg
|
64
64
|
end
|
@@ -10,6 +10,9 @@ module Katello
|
|
10
10
|
param :destination_server, String, :desc => N_("Destination Server name"), :required => false
|
11
11
|
param :organization_id, :number, :desc => N_("Organization identifier"), :required => false
|
12
12
|
param :id, :number, :desc => N_("Content view version export history identifier"), :required => false
|
13
|
+
param :type, ::Katello::ContentViewVersionExportHistory::EXPORT_TYPES,
|
14
|
+
:desc => N_("Export Types"),
|
15
|
+
:required => false
|
13
16
|
param_group :search, Api::V2::ApiController
|
14
17
|
add_scoped_search_description_for(ContentViewVersionExportHistory)
|
15
18
|
def index
|
@@ -17,6 +20,7 @@ module Katello
|
|
17
20
|
history = history.where(:id => params[:id]) unless params[:id].blank?
|
18
21
|
history = history.where(:content_view_version_id => params[:content_view_version_id]) unless params[:content_view_version_id].blank?
|
19
22
|
history = history.where(:destination_server => params[:destination_server]) unless params[:destination_server].blank?
|
23
|
+
history = history.where(:export_type => params[:type]) unless params[:type].blank?
|
20
24
|
history = history.with_organization_id(params[:organization_id]) unless params[:organization_id].blank?
|
21
25
|
history = history.with_content_view_id(params[:content_view_id]) unless params[:content_view_id].blank?
|
22
26
|
respond_with_template_collection("index", 'content_view_version_export_histories',
|
@@ -190,8 +190,8 @@ module Katello
|
|
190
190
|
|
191
191
|
api :PUT, "/content_views/:id/remove", N_("Remove versions and/or environments from a content view and reassign systems and keys")
|
192
192
|
param :id, :number, :desc => N_("content view numeric identifier"), :required => true
|
193
|
-
param :environment_ids, :number, :desc => N_("environment numeric identifiers to be removed")
|
194
|
-
param :content_view_version_ids, :number, :desc => N_("content view version identifiers to be deleted")
|
193
|
+
param :environment_ids, Array, of: :number, :desc => N_("environment numeric identifiers to be removed")
|
194
|
+
param :content_view_version_ids, Array, of: :number, :desc => N_("content view version identifiers to be deleted")
|
195
195
|
param :system_content_view_id, :number, :desc => N_("content view to reassign orphaned systems to")
|
196
196
|
param :system_environment_id, :number, :desc => N_("environment to reassign orphaned systems to")
|
197
197
|
param :key_content_view_id, :number, :desc => N_("content view to reassign orphaned activation keys to")
|
@@ -42,9 +42,8 @@ module Katello
|
|
42
42
|
def index_response(reload_host = false)
|
43
43
|
# Host needs to be reloaded because of lazy accessor
|
44
44
|
@host.reload if reload_host
|
45
|
-
|
46
|
-
subscriptions
|
47
|
-
full_result_response(subscriptions)
|
45
|
+
presenter = ::Katello::HostSubscriptionsPresenter.new(@host)
|
46
|
+
full_result_response(presenter.subscriptions)
|
48
47
|
end
|
49
48
|
|
50
49
|
api :PUT, "/hosts/:host_id/subscriptions/auto_attach", N_("Trigger an auto-attach of subscriptions")
|
@@ -25,7 +25,6 @@ module Katello
|
|
25
25
|
before_action(:only => [:create, :update]) { find_content_credential CONTENT_CREDENTIAL_SSL_CA_CERT_TYPE }
|
26
26
|
before_action(:only => [:create, :update]) { find_content_credential CONTENT_CREDENTIAL_SSL_CLIENT_CERT_TYPE }
|
27
27
|
before_action(:only => [:create, :update]) { find_content_credential CONTENT_CREDENTIAL_SSL_CLIENT_KEY_TYPE }
|
28
|
-
before_action :check_ignore_global_proxy, :only => [ :update, :create ]
|
29
28
|
skip_before_action :authorize, :only => [:gpg_key_content]
|
30
29
|
skip_before_action :check_media_type, :only => [:upload_content]
|
31
30
|
|
@@ -45,7 +44,7 @@ module Katello
|
|
45
44
|
param :checksum_type, String, :desc => N_("Checksum of the repository, currently 'sha1' & 'sha256' are supported")
|
46
45
|
param :docker_upstream_name, String, :desc => N_("Name of the upstream docker repository")
|
47
46
|
param :docker_tags_whitelist, Array, :desc => N_("Comma-separated list of tags to sync for Container Image repository")
|
48
|
-
param :download_policy, ["immediate", "on_demand"
|
47
|
+
param :download_policy, ["immediate", "on_demand"], :desc => N_("download policy for yum repos (either 'immediate' or 'on_demand')")
|
49
48
|
param :download_concurrency, :number, :desc => N_("Used to determine download concurrency of the repository in pulp3. Use value less than 20. Defaults to 10")
|
50
49
|
param :mirror_on_sync, :bool, :desc => N_("true if this repository when synced has to be mirrored from the source and stale rpms removed")
|
51
50
|
param :verify_ssl_on_sync, :bool, :desc => N_("if true, Katello will verify the upstream url's SSL certifcates are signed by a trusted CA")
|
@@ -56,11 +55,11 @@ module Katello
|
|
56
55
|
param :deb_releases, String, :desc => N_("comma-separated list of releases to be synced from deb-archive")
|
57
56
|
param :deb_components, String, :desc => N_("comma-separated list of repo components to be synced from deb-archive")
|
58
57
|
param :deb_architectures, String, :desc => N_("comma-separated list of architectures to be synced from deb-archive")
|
59
|
-
param :ignore_global_proxy, :bool, :desc => N_("if true, will ignore the globally configured proxy when syncing"), :deprecated => true
|
60
58
|
param :ignorable_content, Array, :desc => N_("List of content units to ignore while syncing a yum repository. Must be subset of %s") % RootRepository::IGNORABLE_CONTENT_UNIT_TYPES.join(",")
|
61
59
|
param :ansible_collection_requirements, String, :desc => N_("Contents of requirement yaml file to sync from URL")
|
62
60
|
param :http_proxy_policy, ::Katello::RootRepository::HTTP_PROXY_POLICIES, :desc => N_("policies for HTTP proxy for content sync")
|
63
61
|
param :http_proxy_id, :number, :desc => N_("ID of a HTTP Proxy")
|
62
|
+
param :arch, String, :desc => N_("Architecture of content in the repository")
|
64
63
|
end
|
65
64
|
|
66
65
|
def_param_group :repo_create do
|
@@ -226,10 +225,6 @@ module Katello
|
|
226
225
|
fail HttpErrors::UnprocessableEntity, msg
|
227
226
|
end
|
228
227
|
|
229
|
-
if repo_params['content_type'] == "puppet" || repo_params['content_type'] == "ostree"
|
230
|
-
::Foreman::Deprecation.api_deprecation_warning("Puppet and OSTree will no longer be supported in Katello 4.0")
|
231
|
-
end
|
232
|
-
|
233
228
|
gpg_key = get_content_credential(repo_params, CONTENT_CREDENTIAL_GPG_KEY_TYPE)
|
234
229
|
ssl_ca_cert = get_content_credential(repo_params, CONTENT_CREDENTIAL_SSL_CA_CERT_TYPE)
|
235
230
|
ssl_client_cert = get_content_credential(repo_params, CONTENT_CREDENTIAL_SSL_CLIENT_CERT_TYPE)
|
@@ -495,17 +490,6 @@ module Katello
|
|
495
490
|
params.require(:repository).permit(*keys).to_h.with_indifferent_access
|
496
491
|
end
|
497
492
|
|
498
|
-
def check_ignore_global_proxy
|
499
|
-
if params.key?(:ignore_global_proxy)
|
500
|
-
::Foreman::Deprecation.api_deprecation_warning("The parameter ignore_global_proxy will be removed in a future Katello release. Please update to use the http_proxy_policy parameter.")
|
501
|
-
if ::Foreman::Cast.to_bool(params[:ignore_global_proxy])
|
502
|
-
params[:repository][:http_proxy_policy] = RootRepository::NO_DEFAULT_HTTP_PROXY
|
503
|
-
else
|
504
|
-
params[:repository][:http_proxy_policy] = RootRepository::GLOBAL_DEFAULT_HTTP_PROXY
|
505
|
-
end
|
506
|
-
end
|
507
|
-
end
|
508
|
-
|
509
493
|
def get_content_credential(repo_params, content_type)
|
510
494
|
credential_value = @product.send(content_type)
|
511
495
|
|
@@ -517,7 +501,7 @@ module Katello
|
|
517
501
|
end
|
518
502
|
|
519
503
|
# rubocop:disable Metrics/CyclomaticComplexity
|
520
|
-
def construct_repo_from_params(repo_params)
|
504
|
+
def construct_repo_from_params(repo_params) # rubocop:disable Metrics/AbcSize
|
521
505
|
root = @product.add_repo(repo_params.slice(:label, :name, :description, :url, :content_type, :arch, :unprotected,
|
522
506
|
:gpg_key, :ssl_ca_cert, :ssl_client_cert, :ssl_client_key,
|
523
507
|
:checksum_type, :download_policy, :http_proxy_policy).to_h.with_indifferent_access)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Katello
|
2
|
+
class Api::V2::SimpleContentAccessController < Api::V2::ApiController
|
3
|
+
before_action :find_organization
|
4
|
+
before_action :check_upstream_connection
|
5
|
+
|
6
|
+
resource_description do
|
7
|
+
description "Red Hat subscriptions management platform."
|
8
|
+
api_version 'v2'
|
9
|
+
end
|
10
|
+
|
11
|
+
api :GET, "/organizations/:organization_id/simple_content_access/eligible",
|
12
|
+
N_("Check if the specified organization is eligible for Simple Content Access")
|
13
|
+
def eligible
|
14
|
+
eligible = @organization.upstream_consumer.simple_content_access_eligible?
|
15
|
+
render json: { simple_content_access_eligible: eligible }
|
16
|
+
end
|
17
|
+
|
18
|
+
api :PUT, "/organizations/:organization_id/simple_content_access/enable",
|
19
|
+
N_("Enable simple content access for a manifest")
|
20
|
+
param :organization_id, :number, :desc => N_("Organization ID"), :required => true
|
21
|
+
def enable
|
22
|
+
task = async_task(::Actions::Katello::Organization::SimpleContentAccess::Enable, params[:organization_id])
|
23
|
+
respond_for_async :resource => task
|
24
|
+
end
|
25
|
+
|
26
|
+
api :PUT, "/organizations/:organization_id/simple_content_access/disable",
|
27
|
+
N_("Disable simple content access for a manifest")
|
28
|
+
param :organization_id, :number, :desc => N_("Organization ID"), :required => true
|
29
|
+
def disable
|
30
|
+
task = async_task(::Actions::Katello::Organization::SimpleContentAccess::Disable, params[:organization_id])
|
31
|
+
respond_for_async :resource => task
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -41,7 +41,7 @@ module Katello
|
|
41
41
|
:start_date, :end_date, :available, :quantity, :account_number, :contract_number,
|
42
42
|
:support_level, :ram, :stacking_id, :multi_entitlement, :type, :product_id,
|
43
43
|
:unmapped_guest, :virt_only, :virt_who, :upstream?],
|
44
|
-
['Pool Id', 'Subscription Id', 'Name', '
|
44
|
+
['Pool Id Number', 'Subscription Id', 'Name', 'Pool Id', 'Organization Id',
|
45
45
|
'Sockets', 'Cores', 'Start Date', 'End Date', 'Available', 'Quantity', 'Account Number',
|
46
46
|
'Contract Number', 'Support Level', 'RAM', 'Stacking Id', 'Multi Entitlement', 'Type',
|
47
47
|
'Product Id', 'Unmapped Guest', 'Virt Only', 'Requires Virt Who', 'Upstream'])
|
@@ -2,7 +2,7 @@ module Katello
|
|
2
2
|
class Api::V2::UpstreamSubscriptionsController < Api::V2::ApiController
|
3
3
|
before_action :find_organization
|
4
4
|
before_action :check_upstream_connection
|
5
|
-
|
5
|
+
before_action :deprecated, only: [:simple_content_access_eligible, :enable_simple_content_access, :disable_simple_content_access]
|
6
6
|
resource_description do
|
7
7
|
description "Red Hat subscriptions management platform."
|
8
8
|
api_version 'v2'
|
@@ -78,14 +78,14 @@ module Katello
|
|
78
78
|
end
|
79
79
|
|
80
80
|
api :GET, "/organizations/:organization_id/upstream_subscriptions/simple_content_access/eligible",
|
81
|
-
N_("Check if the specified organization is eligible for Simple Content Access")
|
81
|
+
N_("Check if the specified organization is eligible for Simple Content Access"), :deprecated => true
|
82
82
|
def simple_content_access_eligible
|
83
83
|
eligible = @organization.upstream_consumer.simple_content_access_eligible?
|
84
84
|
render json: { simple_content_access_eligible: eligible }
|
85
85
|
end
|
86
86
|
|
87
87
|
api :PUT, "/organizations/:organization_id/upstream_subscriptions/simple_content_access/enable",
|
88
|
-
N_("Enable simple content access for a manifest")
|
88
|
+
N_("Enable simple content access for a manifest"), :deprecated => true
|
89
89
|
param :organization_id, :number, :desc => N_("Organization ID"), :required => true
|
90
90
|
def enable_simple_content_access
|
91
91
|
task = async_task(::Actions::Katello::Organization::SimpleContentAccess::Enable, params[:organization_id])
|
@@ -93,7 +93,7 @@ module Katello
|
|
93
93
|
end
|
94
94
|
|
95
95
|
api :PUT, "/organizations/:organization_id/upstream_subscriptions/simple_content_access/disable",
|
96
|
-
N_("Disable simple content access for a manifest")
|
96
|
+
N_("Disable simple content access for a manifest"), :deprecated => true
|
97
97
|
param :organization_id, :number, :desc => N_("Organization ID"), :required => true
|
98
98
|
def disable_simple_content_access
|
99
99
|
task = async_task(::Actions::Katello::Organization::SimpleContentAccess::Disable, params[:organization_id])
|
@@ -124,5 +124,9 @@ module Katello
|
|
124
124
|
{ "pool" => pool[:id], "quantity" => pool[:quantity] } if pool
|
125
125
|
end
|
126
126
|
end
|
127
|
+
|
128
|
+
def deprecated
|
129
|
+
::Foreman::Deprecation.api_deprecation_warning("it will be removed in Katello 4.0, Please see /api/v2/simple_content_access")
|
130
|
+
end
|
127
131
|
end
|
128
132
|
end
|
@@ -39,20 +39,7 @@ module Katello
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def throw_resource_not_found(name: resource_name, id: params[:id])
|
42
|
-
|
43
|
-
missing_permissions.map(&:name).join(', ')
|
44
|
-
fail HttpErrors::NotFound, _("Could not find %{name} resource with id %{id}. %{perms_message}") % {id: id, name: name, perms_message: perms_message}
|
45
|
-
end
|
46
|
-
|
47
|
-
def missing_permissions
|
48
|
-
missing_perms = ::Foreman::AccessControl.permissions_for_controller_action(path_to_authenticate)
|
49
|
-
|
50
|
-
# promote_or_remove_content_views_to_environments has a special relationship to promote_or_remove_content_views
|
51
|
-
if path_to_authenticate["controller"] == "katello/api/v2/content_view_versions" &&
|
52
|
-
path_to_authenticate["action"].in?(["promote", "remove_from_environment", "remove", "republish_repositories"])
|
53
|
-
missing_perms << ::Permission.find_by(name: "promote_or_remove_content_views_to_environments")
|
54
|
-
end
|
55
|
-
missing_perms
|
42
|
+
fail HttpErrors::NotFound, _("Could not find %{name} resource with id %{id}") % {id: id, name: name}
|
56
43
|
end
|
57
44
|
|
58
45
|
def throw_resources_not_found(name:, expected_ids: [])
|
@@ -107,7 +107,7 @@ module Katello
|
|
107
107
|
true
|
108
108
|
end
|
109
109
|
|
110
|
-
def authorize_remove_environments(view, options)
|
110
|
+
def authorize_remove_environments(view, options) # rubocop:disable Metrics/CyclomaticComplexity
|
111
111
|
env_ids = options[:environment_ids]
|
112
112
|
|
113
113
|
return true if env_ids.blank?
|
@@ -35,8 +35,6 @@ module Katello
|
|
35
35
|
module RepoMethods
|
36
36
|
# returns all repos in hash representation with minors and arch children included
|
37
37
|
def collect_repos(products, env, include_feedless = true)
|
38
|
-
Glue::Pulp::Repos.prepopulate! products, env, []
|
39
|
-
|
40
38
|
products.map do |prod|
|
41
39
|
minor_repos, repos_without_minor = collect_minor(prod.repos(env, nil, include_feedless))
|
42
40
|
{ :name => prod.name, :object => prod, :id => prod.id, :type => "product", :repos => repos_without_minor,
|
@@ -9,7 +9,7 @@ module Actions
|
|
9
9
|
:new_content_id => new_content_id)
|
10
10
|
end
|
11
11
|
|
12
|
-
def finalize
|
12
|
+
def finalize # rubocop:disable Metrics/AbcSize
|
13
13
|
content_view = ::Katello::ContentView.find(input[:content_view_id])
|
14
14
|
environment = ::Katello::KTEnvironment.find(input[:environment_id])
|
15
15
|
content_ids = content_view.repos(environment).map(&:content_id).uniq.compact
|
@@ -4,17 +4,15 @@ module Actions
|
|
4
4
|
class Create < Actions::EntryAction
|
5
5
|
def plan(activation_key, params = {})
|
6
6
|
activation_key.save!
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
cp_id = cp_create.output[:response][:id]
|
17
|
-
end
|
7
|
+
cp_create = plan_action(Candlepin::ActivationKey::Create,
|
8
|
+
organization_label: activation_key.organization.label,
|
9
|
+
auto_attach: activation_key.auto_attach,
|
10
|
+
service_level: params[:service_level],
|
11
|
+
release_version: activation_key.release_version,
|
12
|
+
purpose_role: activation_key.purpose_role,
|
13
|
+
purpose_usage: activation_key.purpose_usage,
|
14
|
+
purpose_addons: activation_key.purpose_addons.pluck(:name))
|
15
|
+
cp_id = cp_create.output[:response][:id]
|
18
16
|
action_subject(activation_key, :cp_id => cp_id)
|
19
17
|
plan_self
|
20
18
|
end
|
@@ -30,18 +30,18 @@ module Actions
|
|
30
30
|
|
31
31
|
fail _("Action not allowed for the default smart proxy.") if smart_proxy.pulp_primary?
|
32
32
|
|
33
|
-
smart_proxy_helper = ::Katello::SmartProxyHelper.new(smart_proxy)
|
34
|
-
repositories = smart_proxy_helper.combined_repos_available_to_capsule(environment, content_view, repository)
|
35
|
-
|
36
|
-
smart_proxy.ping_pulp if repositories.any? { |repo| !smart_proxy.pulp3_support?(repo) }
|
37
|
-
|
38
33
|
refresh_options = options.merge(content_view: content_view,
|
39
34
|
environment: environment,
|
40
35
|
repository: repository)
|
41
36
|
sequence do
|
42
|
-
|
43
|
-
|
44
|
-
|
37
|
+
if smart_proxy.has_feature?(SmartProxy::PULP_NODE_FEATURE)
|
38
|
+
plan_action(Actions::Pulp::Orchestration::Repository::RefreshRepos, smart_proxy, refresh_options)
|
39
|
+
end
|
40
|
+
|
41
|
+
if smart_proxy.has_feature?(SmartProxy::PULP3_FEATURE)
|
42
|
+
plan_action(Actions::Pulp3::CapsuleContent::RefreshContentGuard, smart_proxy)
|
43
|
+
plan_action(Actions::Pulp3::Orchestration::Repository::RefreshRepos, smart_proxy, refresh_options)
|
44
|
+
end
|
45
45
|
plan_action(SyncCapsule, smart_proxy, refresh_options)
|
46
46
|
end
|
47
47
|
end
|
@@ -35,6 +35,15 @@ module Actions
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
38
|
+
update_unauthenticated_repo_list(smart_proxy) if smart_proxy.has_feature?("Container_Gateway")
|
39
|
+
end
|
40
|
+
|
41
|
+
def update_unauthenticated_repo_list(smart_proxy)
|
42
|
+
unauthenticated_repo_list =
|
43
|
+
::Katello::SmartProxyHelper.new(smart_proxy).combined_repos_available_to_capsule.select do |repo|
|
44
|
+
repo.docker? && repo.environment.registry_unauthenticated_pull
|
45
|
+
end
|
46
|
+
smart_proxy.update_unauthenticated_repo_list(unauthenticated_repo_list.map(&:container_repository_name))
|
38
47
|
end
|
39
48
|
|
40
49
|
def repos_to_sync(smart_proxy, environment, content_view, repository, skip_metatadata_check = false)
|