Problem:
I receive a ‘500 Internal Server Error’ when trying to push to a PyPI repo.
Expected outcome:
Package uploaded to Pulp.
Pulpcore version:
3.78.0
Pulp plugins installed and their versions:
core 3.78.0
ansible 0.25.1
container 2.25.1
deb 3.5.2
gem 0.7.1
maven 0.10.1
npm 0.3.3
ostree 2.4.8
python 3.15.0
rpm 3.30.0
certguard 3.78.0
file 3.78.0
Other relevant data:
Hi,
I am testing package upload to a PyPI repository in Pulp, using the following command:
$ twine upload --repository-url "http://<pulp_host>/pypi/python-dist/simple/" -u admin -p '<admin_password>' "./dist/*" --verbose
Uploading distributions to http://<pulp_host>/pypi/python-dist/simple/
INFO ./dist/hello_world-0.1.2-py3-none-any.whl (1.3 KB)
INFO ./dist/hello_world-0.1.2.tar.gz (1.0 KB)
INFO username set by command options
INFO password set by command options
INFO username: admin
INFO password: <hidden>
Uploading hello_world-0.1.2-py3-none-any.whl
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2/3.2 kB • 00:00 • ?
WARNING Received "500: Internal Server Error"
Package upload appears to have failed. Retry 1 of 5.
Uploading hello_world-0.1.2-py3-none-any.whl
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2/3.2 kB • 00:00 • ?
WARNING Received "500: Internal Server Error"
Package upload appears to have failed. Retry 2 of 5.
Uploading hello_world-0.1.2-py3-none-any.whl
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2/3.2 kB • 00:00 • ?
WARNING Received "500: Internal Server Error"
Package upload appears to have failed. Retry 3 of 5.
Uploading hello_world-0.1.2-py3-none-any.whl
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2/3.2 kB • 00:00 • ?
WARNING Received "500: Internal Server Error"
Package upload appears to have failed. Retry 4 of 5.
Uploading hello_world-0.1.2-py3-none-any.whl
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2/3.2 kB • 00:00 • ?
WARNING Received "500: Internal Server Error"
Package upload appears to have failed. Retry 5 of 5.
INFO Response from http://<pulp_host>/pypi/python-dist/simple/:
500 Internal Server Error
INFO
<!doctype html>
<html lang="en">
<head>
<title>Server Error (500)</title>
</head>
<body>
<h1>Server Error (500)</h1><p></p>
</body>
</html>
ERROR HTTPError: 500 Internal Server Error from http://<pulp_host>/pypi/python-dist/simple/
Internal Server Error
In the API pod logs I see the following error:
pulp [2ee46527e45e45839fbd60f183d588d3]: django.request:ERROR: Internal Server Error: /pypi/python-dist/simple/
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/usr/local/lib/python3.9/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 56, in wrapper_view
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/rest_framework/viewsets.py", line 125, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 515, in dispatch
response = self.handle_exception(exc)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 475, in handle_exception
self.raise_uncaught_exception(exc)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
raise exc
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 512, in dispatch
response = handler(request, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/views.py", line 306, in create
return self.upload(request, path)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/views.py", line 157, in upload
serializer.is_valid(raise_exception=True)
File "/usr/local/lib/python3.9/site-packages/rest_framework/serializers.py", line 225, in is_valid
self._validated_data = self.run_validation(self.initial_data)
File "/usr/local/lib/python3.9/site-packages/rest_framework/serializers.py", line 447, in run_validation
value = self.validate(value)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/serializers.py", line 78, in validate
artifact.save()
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/content.py", line 155, in save
super().save(*args, **kwargs)
File "/usr/lib64/python3.9/contextlib.py", line 79, in inner
return func(*args, **kwds)
File "/usr/local/lib/python3.9/site-packages/django_lifecycle/mixins.py", line 139, in save
save(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 814, in save
self.save_base(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 877, in save_base
updated = self._save_table(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 1020, in _save_table
results = self._do_insert(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 1061, in _do_insert
return manager._insert(
File "/usr/local/lib/python3.9/site-packages/django/db/models/manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/django/db/models/query.py", line 1805, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1821, in execute_sql
for sql, params in self.as_sql():
File "/usr/local/lib/python3.9/site-packages/django_readonly_field/compiler.py", line 31, in as_sql
return super(ReadonlySQLCompilerMixin, self).as_sql()
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1745, in as_sql
value_rows = [
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1746, in <listcomp>
[
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1747, in <listcomp>
self.prepare_value(field, self.pre_save_val(field, obj))
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1695, in pre_save_val
return field.pre_save(obj, add=True)
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/fields.py", line 89, in pre_save
return super().pre_save(model_instance, add)
File "/usr/local/lib/python3.9/site-packages/django/db/models/fields/files.py", line 317, in pre_save
file.save(file.name, file.file, save=False)
File "/usr/local/lib/python3.9/site-packages/django/db/models/fields/files.py", line 93, in save
self.name = self.storage.save(name, content, max_length=self.field.max_length)
File "/usr/local/lib/python3.9/site-packages/django/core/files/storage/base.py", line 49, in save
name = self._save(name, content)
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/storage.py", line 96, in _save
os.chmod(full_path, self.file_permissions_mode)
PermissionError: [Errno 1] Operation not permitted: '/var/lib/pulp/media/artifact/13/df8e84234587b63618d2ef3056511764a2d6ea1e5f6dc68e03ec210babaf3d'
('pulp [2ee46527e45e45839fbd60f183d588d3]: ::ffff:10.244.0.47 - admin [18/Jun/2025:16:03:02 +0000] "POST /pypi/python-dist/simple/ HTTP/1.0" 500 145 "-" "twine/6.1.0 CPython/3.9.2"',)
pulp [a8d1f1785af948cd8ad2482162663f27]: django.request:ERROR: Internal Server Error: /pypi/python-dist/simple/
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/usr/local/lib/python3.9/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 56, in wrapper_view
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/rest_framework/viewsets.py", line 125, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 515, in dispatch
response = self.handle_exception(exc)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 475, in handle_exception
self.raise_uncaught_exception(exc)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
raise exc
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 512, in dispatch
response = handler(request, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/views.py", line 306, in create
return self.upload(request, path)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/views.py", line 157, in upload
serializer.is_valid(raise_exception=True)
File "/usr/local/lib/python3.9/site-packages/rest_framework/serializers.py", line 225, in is_valid
self._validated_data = self.run_validation(self.initial_data)
File "/usr/local/lib/python3.9/site-packages/rest_framework/serializers.py", line 447, in run_validation
value = self.validate(value)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/serializers.py", line 78, in validate
artifact.save()
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/content.py", line 155, in save
super().save(*args, **kwargs)
File "/usr/lib64/python3.9/contextlib.py", line 79, in inner
return func(*args, **kwds)
File "/usr/local/lib/python3.9/site-packages/django_lifecycle/mixins.py", line 139, in save
save(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 814, in save
self.save_base(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 877, in save_base
updated = self._save_table(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 1020, in _save_table
results = self._do_insert(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 1061, in _do_insert
return manager._insert(
File "/usr/local/lib/python3.9/site-packages/django/db/models/manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/django/db/models/query.py", line 1805, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1821, in execute_sql
for sql, params in self.as_sql():
File "/usr/local/lib/python3.9/site-packages/django_readonly_field/compiler.py", line 31, in as_sql
return super(ReadonlySQLCompilerMixin, self).as_sql()
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1745, in as_sql
value_rows = [
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1746, in <listcomp>
[
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1747, in <listcomp>
self.prepare_value(field, self.pre_save_val(field, obj))
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1695, in pre_save_val
return field.pre_save(obj, add=True)
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/fields.py", line 89, in pre_save
return super().pre_save(model_instance, add)
File "/usr/local/lib/python3.9/site-packages/django/db/models/fields/files.py", line 317, in pre_save
file.save(file.name, file.file, save=False)
File "/usr/local/lib/python3.9/site-packages/django/db/models/fields/files.py", line 93, in save
self.name = self.storage.save(name, content, max_length=self.field.max_length)
File "/usr/local/lib/python3.9/site-packages/django/core/files/storage/base.py", line 49, in save
name = self._save(name, content)
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/storage.py", line 96, in _save
os.chmod(full_path, self.file_permissions_mode)
PermissionError: [Errno 1] Operation not permitted: '/var/lib/pulp/media/artifact/13/df8e84234587b63618d2ef3056511764a2d6ea1e5f6dc68e03ec210babaf3d'
('pulp [a8d1f1785af948cd8ad2482162663f27]: ::ffff:10.244.0.47 - admin [18/Jun/2025:16:03:02 +0000] "POST /pypi/python-dist/simple/ HTTP/1.0" 500 145 "-" "twine/6.1.0 CPython/3.9.2"',)
pulp [56d9c97059484a3f9b007a03787dad52]: django.request:ERROR: Internal Server Error: /pypi/python-dist/simple/
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/usr/local/lib/python3.9/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 56, in wrapper_view
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/rest_framework/viewsets.py", line 125, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 515, in dispatch
response = self.handle_exception(exc)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 475, in handle_exception
self.raise_uncaught_exception(exc)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
raise exc
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 512, in dispatch
response = handler(request, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/views.py", line 306, in create
return self.upload(request, path)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/views.py", line 157, in upload
serializer.is_valid(raise_exception=True)
File "/usr/local/lib/python3.9/site-packages/rest_framework/serializers.py", line 225, in is_valid
self._validated_data = self.run_validation(self.initial_data)
File "/usr/local/lib/python3.9/site-packages/rest_framework/serializers.py", line 447, in run_validation
value = self.validate(value)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/serializers.py", line 78, in validate
artifact.save()
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/content.py", line 155, in save
super().save(*args, **kwargs)
File "/usr/lib64/python3.9/contextlib.py", line 79, in inner
return func(*args, **kwds)
File "/usr/local/lib/python3.9/site-packages/django_lifecycle/mixins.py", line 139, in save
save(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 814, in save
self.save_base(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 877, in save_base
updated = self._save_table(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 1020, in _save_table
results = self._do_insert(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 1061, in _do_insert
return manager._insert(
File "/usr/local/lib/python3.9/site-packages/django/db/models/manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/django/db/models/query.py", line 1805, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1821, in execute_sql
for sql, params in self.as_sql():
File "/usr/local/lib/python3.9/site-packages/django_readonly_field/compiler.py", line 31, in as_sql
return super(ReadonlySQLCompilerMixin, self).as_sql()
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1745, in as_sql
value_rows = [
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1746, in <listcomp>
[
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1747, in <listcomp>
self.prepare_value(field, self.pre_save_val(field, obj))
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1695, in pre_save_val
return field.pre_save(obj, add=True)
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/fields.py", line 89, in pre_save
return super().pre_save(model_instance, add)
File "/usr/local/lib/python3.9/site-packages/django/db/models/fields/files.py", line 317, in pre_save
file.save(file.name, file.file, save=False)
File "/usr/local/lib/python3.9/site-packages/django/db/models/fields/files.py", line 93, in save
self.name = self.storage.save(name, content, max_length=self.field.max_length)
File "/usr/local/lib/python3.9/site-packages/django/core/files/storage/base.py", line 49, in save
name = self._save(name, content)
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/storage.py", line 96, in _save
os.chmod(full_path, self.file_permissions_mode)
PermissionError: [Errno 1] Operation not permitted: '/var/lib/pulp/media/artifact/13/df8e84234587b63618d2ef3056511764a2d6ea1e5f6dc68e03ec210babaf3d'
('pulp [56d9c97059484a3f9b007a03787dad52]: ::ffff:10.244.0.47 - admin [18/Jun/2025:16:03:02 +0000] "POST /pypi/python-dist/simple/ HTTP/1.0" 500 145 "-" "twine/6.1.0 CPython/3.9.2"',)
pulp [500963454c0248148efd7b40e0c8cb4f]: django.request:ERROR: Internal Server Error: /pypi/python-dist/simple/
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/usr/local/lib/python3.9/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 56, in wrapper_view
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/rest_framework/viewsets.py", line 125, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 515, in dispatch
response = self.handle_exception(exc)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 475, in handle_exception
self.raise_uncaught_exception(exc)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
raise exc
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 512, in dispatch
response = handler(request, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/views.py", line 306, in create
return self.upload(request, path)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/views.py", line 157, in upload
serializer.is_valid(raise_exception=True)
File "/usr/local/lib/python3.9/site-packages/rest_framework/serializers.py", line 225, in is_valid
self._validated_data = self.run_validation(self.initial_data)
File "/usr/local/lib/python3.9/site-packages/rest_framework/serializers.py", line 447, in run_validation
value = self.validate(value)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/serializers.py", line 78, in validate
artifact.save()
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/content.py", line 155, in save
super().save(*args, **kwargs)
File "/usr/lib64/python3.9/contextlib.py", line 79, in inner
return func(*args, **kwds)
File "/usr/local/lib/python3.9/site-packages/django_lifecycle/mixins.py", line 139, in save
save(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 814, in save
self.save_base(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 877, in save_base
updated = self._save_table(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 1020, in _save_table
results = self._do_insert(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 1061, in _do_insert
return manager._insert(
File "/usr/local/lib/python3.9/site-packages/django/db/models/manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/django/db/models/query.py", line 1805, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1821, in execute_sql
for sql, params in self.as_sql():
File "/usr/local/lib/python3.9/site-packages/django_readonly_field/compiler.py", line 31, in as_sql
return super(ReadonlySQLCompilerMixin, self).as_sql()
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1745, in as_sql
value_rows = [
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1746, in <listcomp>
[
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1747, in <listcomp>
self.prepare_value(field, self.pre_save_val(field, obj))
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1695, in pre_save_val
return field.pre_save(obj, add=True)
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/fields.py", line 89, in pre_save
return super().pre_save(model_instance, add)
File "/usr/local/lib/python3.9/site-packages/django/db/models/fields/files.py", line 317, in pre_save
file.save(file.name, file.file, save=False)
File "/usr/local/lib/python3.9/site-packages/django/db/models/fields/files.py", line 93, in save
self.name = self.storage.save(name, content, max_length=self.field.max_length)
File "/usr/local/lib/python3.9/site-packages/django/core/files/storage/base.py", line 49, in save
name = self._save(name, content)
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/storage.py", line 96, in _save
os.chmod(full_path, self.file_permissions_mode)
PermissionError: [Errno 1] Operation not permitted: '/var/lib/pulp/media/artifact/13/df8e84234587b63618d2ef3056511764a2d6ea1e5f6dc68e03ec210babaf3d'
('pulp [500963454c0248148efd7b40e0c8cb4f]: ::ffff:10.244.0.47 - admin [18/Jun/2025:16:03:03 +0000] "POST /pypi/python-dist/simple/ HTTP/1.0" 500 145 "-" "twine/6.1.0 CPython/3.9.2"',)
pulp [2a962dd7a5954af49196d6a95436d931]: django.request:ERROR: Internal Server Error: /pypi/python-dist/simple/
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/usr/local/lib/python3.9/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 56, in wrapper_view
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/rest_framework/viewsets.py", line 125, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 515, in dispatch
response = self.handle_exception(exc)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 475, in handle_exception
self.raise_uncaught_exception(exc)
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
raise exc
File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 512, in dispatch
response = handler(request, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/views.py", line 306, in create
return self.upload(request, path)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/views.py", line 157, in upload
serializer.is_valid(raise_exception=True)
File "/usr/local/lib/python3.9/site-packages/rest_framework/serializers.py", line 225, in is_valid
self._validated_data = self.run_validation(self.initial_data)
File "/usr/local/lib/python3.9/site-packages/rest_framework/serializers.py", line 447, in run_validation
value = self.validate(value)
File "/usr/local/lib/python3.9/site-packages/pulp_python/app/pypi/serializers.py", line 78, in validate
artifact.save()
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/content.py", line 155, in save
super().save(*args, **kwargs)
File "/usr/lib64/python3.9/contextlib.py", line 79, in inner
return func(*args, **kwds)
File "/usr/local/lib/python3.9/site-packages/django_lifecycle/mixins.py", line 139, in save
save(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 814, in save
self.save_base(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 877, in save_base
updated = self._save_table(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 1020, in _save_table
results = self._do_insert(
File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 1061, in _do_insert
return manager._insert(
File "/usr/local/lib/python3.9/site-packages/django/db/models/manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/django/db/models/query.py", line 1805, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1821, in execute_sql
for sql, params in self.as_sql():
File "/usr/local/lib/python3.9/site-packages/django_readonly_field/compiler.py", line 31, in as_sql
return super(ReadonlySQLCompilerMixin, self).as_sql()
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1745, in as_sql
value_rows = [
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1746, in <listcomp>
[
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1747, in <listcomp>
self.prepare_value(field, self.pre_save_val(field, obj))
File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1695, in pre_save_val
return field.pre_save(obj, add=True)
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/fields.py", line 89, in pre_save
return super().pre_save(model_instance, add)
File "/usr/local/lib/python3.9/site-packages/django/db/models/fields/files.py", line 317, in pre_save
file.save(file.name, file.file, save=False)
File "/usr/local/lib/python3.9/site-packages/django/db/models/fields/files.py", line 93, in save
self.name = self.storage.save(name, content, max_length=self.field.max_length)
File "/usr/local/lib/python3.9/site-packages/django/core/files/storage/base.py", line 49, in save
name = self._save(name, content)
File "/usr/local/lib/python3.9/site-packages/pulpcore/app/models/storage.py", line 96, in _save
os.chmod(full_path, self.file_permissions_mode)
PermissionError: [Errno 1] Operation not permitted: '/var/lib/pulp/media/artifact/13/df8e84234587b63618d2ef3056511764a2d6ea1e5f6dc68e03ec210babaf3d'
('pulp [2a962dd7a5954af49196d6a95436d931]: ::ffff:10.244.0.47 - admin [18/Jun/2025:16:03:03 +0000] "POST /pypi/python-dist/simple/ HTTP/1.0" 500 145 "-" "twine/6.1.0 CPython/3.9.2"',)
I am using azurefile storage, configured in the manifest as follows:
...
file_storage_access_mode: "ReadWriteMany"
file_storage_size: "2Gi"
file_storage_storage_class: azurefile
...
In the API pod I see the storage mounted here:
$ df -h
Filesystem Size Used Avail Use% Mounted on
overlay 146G 18G 128G 13% /
tmpfs 64M 0 64M 0% /dev
/dev/root 146G 18G 128G 13% /etc/hosts
shm 64M 0 64M 0% /dev/shm
tmpfs 14G 4.0K 14G 1% /etc/pulp/settings.py
tmpfs 14G 4.0K 14G 1% /etc/pulp/pulp-admin-password
//<fs-id>.file.core.windows.net/pvc-<uid> 2.0G 4.4M 2.0G 1% /var/lib/pulp
tmpfs 14G 4.0K 14G 1% /etc/pulp/keys/database_fields.symmetric.key
tmpfs 14G 8.0K 14G 1% /etc/pulp/keys/container_auth_public_key.pem
tmpfs 14G 12K 14G 1% /run/secrets/kubernetes.io/serviceaccount
tmpfs 7.9G 0 7.9G 0% /proc/acpi
tmpfs 7.9G 0 7.9G 0% /proc/scsi
tmpfs 7.9G 0 7.9G 0% /sys/firmware
I expected to see files in /var/lib/pulp/media
owned by pulp, but instead they are root-owned just group pulp:
$ ls -l /var/lib/pulp/media/
total 0
drwxrwxrwx 2 root pulp 0 Jun 10 13:37 artifact
Can anyone suggest what the issue might be here? Is the Azure storage incorrectly mounted?