Skip to content

Commit

Permalink
Fixes #37081 - Add a setting to configure PAGE_SIZE
Browse files Browse the repository at this point in the history
This provides an option for users to configure the PAGE_SIZE
setting in Django REST Framework as used by Pulpcore. Pulp has
a default value for PAGE_SIZE but it could be overridden in the
user's settings.py file. Pulp paginates views when listing
repository contents, package metadata, container tags, etc. It
doesn't affect delivery of content blobs, and most deployments
in normal circumstances probably don't need to tune it.

This setting was helpful as a workaround for an external issue that
occurred when provisioning TripleO (OpenStack on OpenStack) with
container content provided by Katello. In that case, the TripleO
installation scripts didn't yet support pagination.
  • Loading branch information
wbclark committed Jan 26, 2024
1 parent 297a48a commit ca4aca3
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 0 deletions.
4 changes: 4 additions & 0 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,9 @@
# STATIC_URL setting. In reality this can also be just the path and doesn't
# have to be a full URL.
#
# @param page_size
# Configure the PAGE_SIZE setting for Pagination.
#
# @param postgresql_db_name
# Name of Pulp PostgreSQL database
#
Expand Down Expand Up @@ -220,6 +223,7 @@
String[1] $apache_vhost_priority = '10',
Stdlib::Absolutepath $api_socket_path = '/run/pulpcore-api.sock',
Stdlib::Absolutepath $content_socket_path = '/run/pulpcore-content.sock',
Optional[Integer[1]] $page_size = undef,
String $postgresql_db_name = 'pulpcore',
String $postgresql_db_user = 'pulp',
String $postgresql_db_password = extlib::cache_data('pulpcore_cache_data', 'db_password', extlib::random_password(32)),
Expand Down
19 changes: 19 additions & 0 deletions spec/acceptance/settings_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,25 @@ class { 'pulpcore':
end
end

describe 'PAGE_SIZE setting' do
context 'Custom PAGE_SIZE' do
it_behaves_like 'an idempotent resource' do
let(:manifest) do
<<-PUPPET
class { 'pulpcore':
page_size => 200,
}
PUPPET
end
end

describe file('/etc/pulp/settings.py') do
it { is_expected.to be_file }
its(:content) { is_expected.to match(/^REST_FRAMEWORK__PAGE_SIZE = 200$/) }
end
end
end

describe 'HIDE_GUARDED_DISTRIBUTIONS setting' do
context 'default HIDE_GUARDED_DISTRIBUTIONS' do
it_behaves_like 'an idempotent resource' do
Expand Down
1 change: 1 addition & 0 deletions spec/classes/pulpcore_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
.with_content(%r{CACHE_ENABLED = False})
.without_content(%r{sslmode})
.without_content(%r{WORKER_TTL})
.without_content(%r{REST_FRAMEWORK__PAGE_SIZE})
is_expected.to contain_concat__fragment('logging').with_content(<<~LOGGING)
LOGGING = {
"dynaconf_merge": True,
Expand Down
3 changes: 3 additions & 0 deletions templates/settings.py.erb
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@ WORKING_DIRECTORY = "<%= scope['pulpcore::cache_dir'] %>"
REMOTE_USER_ENVIRON_NAME = '<%= scope['pulpcore::remote_user_environ_name'] %>'
AUTHENTICATION_BACKENDS = ['pulpcore.app.authentication.PulpNoCreateRemoteUserBackend']

<% unless scope['pulpcore::page_size'].nil? -%>
REST_FRAMEWORK__PAGE_SIZE = <%= scope['pulpcore::page_size'] %>
<% end -%>
REST_FRAMEWORK__DEFAULT_AUTHENTICATION_CLASSES = (
'rest_framework.authentication.SessionAuthentication',
'pulpcore.app.authentication.PulpRemoteUserAuthentication'
Expand Down

0 comments on commit ca4aca3

Please sign in to comment.