pulp-container 2.22.8__tar.gz → 2.22.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pulp_container-2.22.8 → pulp_container-2.22.10}/CHANGES.md +17 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/MANIFEST.in +1 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/PKG-INFO +2 -2
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/__init__.py +4 -3
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/authorization.py +5 -8
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/cache.py +2 -2
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/checks.py +2 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/content.py +1 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/json_schemas.py +1 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/management/commands/container-handle-image-data.py +2 -6
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/management/commands/container-repair-media-type.py +1 -3
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/modelresource.py +3 -2
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/models.py +8 -7
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/registry.py +10 -13
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/registry_api.py +24 -27
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/serializers.py +14 -26
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/tasks/builder.py +8 -7
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/tasks/recursive_remove.py +2 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/tasks/sign.py +0 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/tasks/sync_stages.py +19 -18
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/tasks/synchronize.py +4 -3
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/tasks/tag.py +1 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/tasks/untag.py +1 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/token_verification.py +3 -5
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/urls.py +1 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/utils.py +14 -15
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/viewsets.py +5 -8
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_content_cache.py +4 -6
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_crud_distributions.py +5 -6
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_flatpak.py +2 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_pull_content.py +17 -18
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_pull_through_cache.py +7 -8
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_push_content.py +13 -16
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_push_signatures.py +2 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_rbac_push_repositories.py +0 -2
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_rbac_remotes.py +3 -4
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_rbac_repo_content.py +4 -7
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_rbac_repo_versions.py +4 -7
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_rbac_sync_repositories.py +0 -2
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_recursive_add.py +8 -9
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_recursive_remove.py +9 -10
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_remote_filter_pull_through.py +4 -3
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_repositories_list.py +13 -15
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_sign_manifests.py +0 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_sync.py +3 -2
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_tagging_images.py +11 -12
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_token_authentication.py +17 -18
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/conftest.py +13 -14
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/utils.py +24 -21
- pulp_container-2.22.10/pulp_container/tests/unit/fixtures/ryuk_0.13.0_manifest_list.json +154 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/unit/test_json_schemas.py +31 -3
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container.egg-info/PKG-INFO +2 -2
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container.egg-info/SOURCES.txt +2 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container.egg-info/requires.txt +1 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pyproject.toml +29 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/requirements.txt +1 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/setup.py +1 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/COMMITMENT +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/COPYRIGHT +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/LICENSE +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/README.rst +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/functest_requirements.txt +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/__init__.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/access_policy.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/downloaders.py +3 -3
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/exceptions.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/fields.py +1 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/global_access_conditions.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/management/__init__.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/management/commands/__init__.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0001_initial.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0002_containerrepository.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0003_oci_mediatype.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0004_upload.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0005_contentredirectcontentguard.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0006_containerpushrepository.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0007_clear_tags_artifacts_refs.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0008_include_exclude_tags.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0009_container_namespace.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0010_remove_uploadchunk.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0011_add_container_repository_permissions.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0012_add_container_namespace_permissions.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0013_add_pull_push_permissions.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0014_containerdistribution_private.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0015_manage_tags_push_repo.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0016_add_delete_versions_permission.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0017_add_granular_perms.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0018_containerdistribution_description.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0019_DATA_distribution_model_swap.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0020_update_push_repo_perms.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0021_data_move_redirect_content_guard_to_core.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0022_delete_contentredirectcontentguard.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0023_manifestsignature.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0024_containerremote_sigstore.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0025_signature_stored_in_textfield.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0026_manifest_signing_service.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0027_data_translate_perms_to_roles.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0028_add_role_manage_permissions.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0029_remove_blob_media_type.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0030_enforce_tagged_manifest_reference.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0031_replace_charf_with_textf.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0032_upload_artifact.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0033_raise_warning_for_repair.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0034_translate_signed_schema.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0035_alter_blob_content_ptr_and_more.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0036_containerpushrepository_pending_blobs_manifests.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0037_create_pull_through_cache_models.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0038_add_manifest_metadata_fields.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0039_manifest_data.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0040_add_remote_repo_filter.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0041_add_pull_through_pull_permissions.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0042_add_manifest_nature_field.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/0043_add_os_arch_image_size_manifest_fields.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/migrations/__init__.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/redirects.py +1 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/replica.py +3 -3
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/settings.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/tasks/__init__.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/tasks/download_image_data.py +1 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/tasks/recursive_add.py +1 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/webserver_snippets/__init__.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/webserver_snippets/apache.conf +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/app/webserver_snippets/nginx.conf +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/constants.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/__init__.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/__init__.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/__init__.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/rbac_base.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_build_images.py +4 -4
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_crud_remotes.py +4 -4
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_pulpimportexport.py +2 -2
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/api/test_sync_signatures.py +1 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/functional/constants.py +1 -1
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/unit/__init__.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/unit/test_models.py +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container/tests/unit/test_serializers.py +2 -2
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container.egg-info/dependency_links.txt +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container.egg-info/entry_points.txt +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/pulp_container.egg-info/top_level.txt +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/setup.cfg +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/test_requirements.txt +0 -0
- {pulp_container-2.22.8 → pulp_container-2.22.10}/unittest_requirements.txt +0 -0
|
@@ -8,6 +8,23 @@
|
|
|
8
8
|
|
|
9
9
|
[//]: # (towncrier release notes start)
|
|
10
10
|
|
|
11
|
+
## 2.22.10 (2026-07-23) {: #2.22.10 }
|
|
12
|
+
|
|
13
|
+
#### Bugfixes {: #2.22.10-bugfix }
|
|
14
|
+
|
|
15
|
+
- Fixed OS and architecture filters being silently ignored when filtering manifest lists in the flatpak index.
|
|
16
|
+
- Fixed a serialization issue with the FlatpakIndex cache.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 2.22.9 (2026-07-21) {: #2.22.9 }
|
|
21
|
+
|
|
22
|
+
#### Bugfixes {: #2.22.9-bugfix }
|
|
23
|
+
|
|
24
|
+
- Added OCI manifest as an allowed media type in the Docker manifest list schema.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
11
28
|
## 2.22.8 (2026-04-24) {: #2.22.8 }
|
|
12
29
|
|
|
13
30
|
No significant changes.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pulp-container
|
|
3
|
-
Version: 2.22.
|
|
3
|
+
Version: 2.22.10
|
|
4
4
|
Summary: Container plugin for the Pulp Project
|
|
5
5
|
Home-page: https://pulpproject.org/
|
|
6
6
|
Author: Pulp Team
|
|
@@ -18,7 +18,7 @@ Requires-Python: >=3.8
|
|
|
18
18
|
License-File: LICENSE
|
|
19
19
|
Requires-Dist: jsonschema<4.24,>=4.4
|
|
20
20
|
Requires-Dist: pulpcore<3.70,>=3.49.0
|
|
21
|
-
Requires-Dist: pyjwt[crypto]<2.
|
|
21
|
+
Requires-Dist: pyjwt[crypto]<2.14,>=2.4
|
|
22
22
|
Requires-Dist: pycares<4.9
|
|
23
23
|
Requires-Dist: pysequoia<0.2.0,>=0.1.33
|
|
24
24
|
Dynamic: author
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
from pulpcore.plugin import PulpPluginAppConfig
|
|
2
1
|
from django.db import connection
|
|
3
2
|
from django.db.models.signals import post_migrate
|
|
4
3
|
|
|
4
|
+
from pulpcore.plugin import PulpPluginAppConfig
|
|
5
|
+
|
|
5
6
|
update_sequences_to_bigint = """
|
|
6
7
|
ALTER TABLE container_blobmanifest ALTER COLUMN id TYPE bigint;
|
|
7
8
|
ALTER TABLE container_manifestlistmanifest ALTER COLUMN id TYPE bigint;
|
|
@@ -23,7 +24,7 @@ class PulpContainerPluginAppConfig(PulpPluginAppConfig):
|
|
|
23
24
|
|
|
24
25
|
name = "pulp_container.app"
|
|
25
26
|
label = "container"
|
|
26
|
-
version = "2.22.
|
|
27
|
+
version = "2.22.10"
|
|
27
28
|
python_package_name = "pulp-container"
|
|
28
29
|
|
|
29
30
|
@staticmethod
|
|
@@ -34,6 +35,6 @@ class PulpContainerPluginAppConfig(PulpPluginAppConfig):
|
|
|
34
35
|
|
|
35
36
|
def ready(self):
|
|
36
37
|
super().ready()
|
|
37
|
-
from . import checks
|
|
38
|
+
from . import checks # noqa: F401
|
|
38
39
|
|
|
39
40
|
post_migrate.connect(PulpContainerPluginAppConfig.update_sequences, sender=self)
|
|
@@ -2,27 +2,24 @@ import base64
|
|
|
2
2
|
import hashlib
|
|
3
3
|
import random
|
|
4
4
|
import uuid
|
|
5
|
-
|
|
6
|
-
import jwt
|
|
7
|
-
|
|
8
5
|
from collections import defaultdict, namedtuple
|
|
9
6
|
from datetime import datetime
|
|
10
7
|
from functools import partial
|
|
11
8
|
|
|
9
|
+
import jwt
|
|
10
|
+
from cryptography.hazmat.backends import default_backend
|
|
11
|
+
from cryptography.hazmat.primitives import serialization
|
|
12
12
|
from django.conf import settings
|
|
13
|
-
from django.http import HttpRequest
|
|
14
13
|
from django.db.models import F, Value
|
|
14
|
+
from django.http import HttpRequest
|
|
15
15
|
from rest_framework.request import Request
|
|
16
16
|
|
|
17
|
-
from
|
|
18
|
-
from cryptography.hazmat.primitives import serialization
|
|
19
|
-
|
|
17
|
+
from pulp_container.app.access_policy import RegistryAccessPolicy
|
|
20
18
|
from pulp_container.app.models import (
|
|
21
19
|
ContainerDistribution,
|
|
22
20
|
ContainerNamespace,
|
|
23
21
|
ContainerPullThroughDistribution,
|
|
24
22
|
)
|
|
25
|
-
from pulp_container.app.access_policy import RegistryAccessPolicy
|
|
26
23
|
|
|
27
24
|
TOKEN_EXPIRATION_TIME = settings.get("TOKEN_EXPIRATION_TIME", 300)
|
|
28
25
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
from django.core.exceptions import ObjectDoesNotExist
|
|
2
2
|
from django.db.models import F, Value
|
|
3
3
|
|
|
4
|
-
from pulpcore.plugin.cache import
|
|
4
|
+
from pulpcore.plugin.cache import AsyncContentCache, CacheKeys, SyncContentCache
|
|
5
5
|
|
|
6
|
-
from pulp_container.app.models import ContainerDistribution, ContainerPullThroughDistribution
|
|
7
6
|
from pulp_container.app.exceptions import RepositoryNotFound
|
|
7
|
+
from pulp_container.app.models import ContainerDistribution, ContainerPullThroughDistribution
|
|
8
8
|
|
|
9
9
|
ACCEPT_HEADER_KEY = "accept_header"
|
|
10
10
|
QUERY_KEY = "query"
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
from json.decoder import JSONDecodeError
|
|
2
|
-
|
|
3
|
-
from gettext import gettext as _
|
|
4
|
-
|
|
5
1
|
from contextlib import suppress
|
|
2
|
+
from gettext import gettext as _
|
|
3
|
+
from json.decoder import JSONDecodeError
|
|
6
4
|
|
|
7
5
|
from django.conf import settings
|
|
8
6
|
from django.core.exceptions import ObjectDoesNotExist
|
|
@@ -12,9 +10,7 @@ from django.db.models import Q
|
|
|
12
10
|
from pulpcore.plugin.cache import SyncContentCache
|
|
13
11
|
|
|
14
12
|
from pulp_container.app.models import ContainerDistribution, Manifest
|
|
15
|
-
|
|
16
13
|
from pulp_container.app.utils import get_content_data
|
|
17
|
-
|
|
18
14
|
from pulp_container.constants import MEDIA_TYPE
|
|
19
15
|
|
|
20
16
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import json
|
|
2
|
-
|
|
3
2
|
from gettext import gettext as _
|
|
4
3
|
|
|
5
4
|
from django.conf import settings
|
|
@@ -7,9 +6,8 @@ from django.core.management import BaseCommand
|
|
|
7
6
|
|
|
8
7
|
from pulpcore.plugin.cache import SyncContentCache
|
|
9
8
|
|
|
10
|
-
from pulp_container.app.models import
|
|
9
|
+
from pulp_container.app.models import ContainerDistribution, Manifest
|
|
11
10
|
from pulp_container.app.utils import determine_media_type_from_json
|
|
12
|
-
|
|
13
11
|
from pulp_container.constants import MEDIA_TYPE
|
|
14
12
|
|
|
15
13
|
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
from import_export import fields, widgets
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
from pulpcore.plugin.importexport import BaseContentResource, QueryModelResource
|
|
3
4
|
from pulpcore.plugin.modelresources import RepositoryResource
|
|
4
5
|
|
|
5
6
|
from pulp_container.app.models import (
|
|
6
7
|
Blob,
|
|
7
|
-
ContainerRepository,
|
|
8
8
|
ContainerPushRepository,
|
|
9
|
+
ContainerRepository,
|
|
9
10
|
Manifest,
|
|
10
11
|
ManifestListManifest,
|
|
11
12
|
ManifestSignature,
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
from gettext import gettext as _
|
|
2
|
-
|
|
3
1
|
import json
|
|
4
2
|
import os
|
|
5
3
|
import re
|
|
6
4
|
import tempfile
|
|
7
5
|
import time
|
|
6
|
+
from gettext import gettext as _
|
|
8
7
|
from logging import getLogger
|
|
9
8
|
|
|
10
|
-
from django.db import models
|
|
11
9
|
from django.conf import settings
|
|
12
10
|
from django.contrib.postgres import fields
|
|
11
|
+
from django.db import models
|
|
13
12
|
from django.shortcuts import redirect
|
|
14
|
-
from django_lifecycle import
|
|
13
|
+
from django_lifecycle import AFTER_CREATE, AFTER_DELETE, AFTER_UPDATE, hook
|
|
15
14
|
|
|
16
15
|
from pulpcore.plugin.cache import SyncContentCache
|
|
17
16
|
from pulpcore.plugin.download import DownloaderFactory
|
|
@@ -20,17 +19,17 @@ from pulpcore.plugin.models import (
|
|
|
20
19
|
AutoAddObjPermsMixin,
|
|
21
20
|
BaseModel,
|
|
22
21
|
Content,
|
|
22
|
+
Distribution,
|
|
23
23
|
Remote,
|
|
24
24
|
Repository,
|
|
25
|
-
Distribution,
|
|
26
25
|
SigningService,
|
|
26
|
+
)
|
|
27
|
+
from pulpcore.plugin.models import (
|
|
27
28
|
Upload as CoreUpload,
|
|
28
29
|
)
|
|
29
30
|
from pulpcore.plugin.repo_version_utils import remove_duplicates, validate_repo_version
|
|
30
31
|
from pulpcore.plugin.util import gpg_verify
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
from . import downloaders
|
|
34
33
|
from pulp_container.app.utils import get_content_data, integer_overflow_safe
|
|
35
34
|
from pulp_container.constants import (
|
|
36
35
|
COSIGN_MEDIA_TYPES,
|
|
@@ -41,6 +40,8 @@ from pulp_container.constants import (
|
|
|
41
40
|
SIGNATURE_TYPE,
|
|
42
41
|
)
|
|
43
42
|
|
|
43
|
+
from . import downloaders
|
|
44
|
+
|
|
44
45
|
logger = getLogger(__name__)
|
|
45
46
|
|
|
46
47
|
|
|
@@ -1,35 +1,32 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import logging
|
|
3
3
|
import os
|
|
4
|
-
|
|
5
|
-
from asgiref.sync import sync_to_async
|
|
6
|
-
|
|
7
4
|
from contextlib import suppress
|
|
8
5
|
from urllib.parse import urljoin
|
|
9
6
|
|
|
10
7
|
from aiohttp import web
|
|
11
|
-
from aiohttp.client_exceptions import
|
|
8
|
+
from aiohttp.client_exceptions import ClientConnectionError, ClientResponseError
|
|
12
9
|
from aiohttp.web_exceptions import HTTPTooManyRequests
|
|
13
|
-
from
|
|
14
|
-
from django_guid.utils import generate_guid
|
|
10
|
+
from asgiref.sync import sync_to_async
|
|
15
11
|
from django.core.exceptions import ObjectDoesNotExist
|
|
16
12
|
from django.db import IntegrityError
|
|
13
|
+
from django_guid import set_guid
|
|
14
|
+
from django_guid.utils import generate_guid
|
|
17
15
|
from multidict import MultiDict
|
|
18
16
|
|
|
19
|
-
from pulpcore.plugin.content import Handler, PathNotResolved
|
|
20
|
-
from pulpcore.plugin.util import get_domain
|
|
21
|
-
from pulpcore.plugin.models import RemoteArtifact, Content, ContentArtifact
|
|
22
|
-
from pulpcore.plugin.content import ArtifactResponse
|
|
23
|
-
from pulpcore.plugin.tasking import dispatch
|
|
17
|
+
from pulpcore.plugin.content import ArtifactResponse, Handler, PathNotResolved
|
|
24
18
|
from pulpcore.plugin.exceptions import TimeoutException
|
|
19
|
+
from pulpcore.plugin.models import Content, ContentArtifact, RemoteArtifact
|
|
20
|
+
from pulpcore.plugin.tasking import dispatch
|
|
21
|
+
from pulpcore.plugin.util import get_domain
|
|
25
22
|
|
|
26
23
|
from pulp_container.app.cache import RegistryContentCache
|
|
27
|
-
from pulp_container.app.models import
|
|
24
|
+
from pulp_container.app.models import Blob, BlobManifest, ContainerDistribution, Manifest, Tag
|
|
28
25
|
from pulp_container.app.tasks import download_image_data
|
|
29
26
|
from pulp_container.app.utils import (
|
|
30
27
|
calculate_digest,
|
|
31
|
-
get_accepted_media_types,
|
|
32
28
|
determine_media_type,
|
|
29
|
+
get_accepted_media_types,
|
|
33
30
|
save_artifact,
|
|
34
31
|
)
|
|
35
32
|
from pulp_container.constants import BLOB_CONTENT_TYPE, EMPTY_BLOB, MEDIA_TYPE, V2_ACCEPT_HEADERS
|
|
@@ -7,36 +7,27 @@ Check `Plugin Writer's Guide`_ for more details.
|
|
|
7
7
|
|
|
8
8
|
import base64
|
|
9
9
|
import binascii
|
|
10
|
+
import hashlib
|
|
10
11
|
import json
|
|
11
12
|
import logging
|
|
12
|
-
import hashlib
|
|
13
13
|
import re
|
|
14
|
-
|
|
15
|
-
from aiohttp.client_exceptions import ClientResponseError, ClientConnectionError
|
|
16
14
|
from itertools import chain
|
|
17
|
-
from urllib.parse import urljoin, urlparse, urlunparse, parse_qs, urlencode
|
|
18
15
|
from tempfile import NamedTemporaryFile
|
|
16
|
+
from urllib.parse import parse_qs, urlencode, urljoin, urlparse, urlunparse
|
|
19
17
|
|
|
18
|
+
from aiohttp.client_exceptions import ClientConnectionError, ClientResponseError
|
|
19
|
+
from django.conf import settings
|
|
20
20
|
from django.core.exceptions import ObjectDoesNotExist
|
|
21
21
|
from django.core.files.base import ContentFile, File
|
|
22
22
|
from django.db import IntegrityError, transaction
|
|
23
23
|
from django.db.models import F, Value
|
|
24
24
|
from django.forms.models import model_to_dict
|
|
25
25
|
from django.shortcuts import get_object_or_404
|
|
26
|
-
|
|
27
|
-
from django.conf import settings
|
|
28
|
-
|
|
29
|
-
from pulpcore.plugin.models import Artifact, ContentArtifact, UploadChunk
|
|
30
|
-
from pulpcore.plugin.files import PulpTemporaryUploadedFile
|
|
31
|
-
from pulpcore.plugin.tasking import add_and_remove, dispatch
|
|
32
|
-
from pulpcore.plugin.util import get_objects_for_user, get_url, get_domain
|
|
33
|
-
from pulpcore.plugin.exceptions import TimeoutException
|
|
34
|
-
|
|
35
26
|
from rest_framework.exceptions import (
|
|
36
27
|
AuthenticationFailed,
|
|
37
28
|
NotAuthenticated,
|
|
38
|
-
PermissionDenied,
|
|
39
29
|
ParseError,
|
|
30
|
+
PermissionDenied,
|
|
40
31
|
Throttled,
|
|
41
32
|
)
|
|
42
33
|
from rest_framework.generics import ListAPIView
|
|
@@ -46,38 +37,44 @@ from rest_framework.renderers import BaseRenderer, JSONRenderer
|
|
|
46
37
|
from rest_framework.response import Response
|
|
47
38
|
from rest_framework.serializers import ModelSerializer
|
|
48
39
|
from rest_framework.settings import api_settings
|
|
49
|
-
from rest_framework.viewsets import ViewSet
|
|
50
|
-
from rest_framework.views import APIView, exception_handler
|
|
51
40
|
from rest_framework.status import HTTP_401_UNAUTHORIZED
|
|
41
|
+
from rest_framework.views import APIView, exception_handler
|
|
42
|
+
from rest_framework.viewsets import ViewSet
|
|
43
|
+
|
|
44
|
+
from pulpcore.plugin.exceptions import TimeoutException
|
|
45
|
+
from pulpcore.plugin.files import PulpTemporaryUploadedFile
|
|
46
|
+
from pulpcore.plugin.models import Artifact, ContentArtifact, UploadChunk
|
|
47
|
+
from pulpcore.plugin.tasking import add_and_remove, dispatch
|
|
48
|
+
from pulpcore.plugin.util import get_domain, get_objects_for_user, get_url
|
|
52
49
|
|
|
53
50
|
from pulp_container.app import models, serializers
|
|
54
51
|
from pulp_container.app.authorization import AuthorizationService, PermissionChecker
|
|
55
52
|
from pulp_container.app.cache import (
|
|
56
|
-
find_base_path_cached,
|
|
57
53
|
FlatpakIndexStaticCache,
|
|
58
54
|
RegistryApiCache,
|
|
55
|
+
find_base_path_cached,
|
|
59
56
|
)
|
|
60
57
|
from pulp_container.app.exceptions import (
|
|
61
58
|
BadGateway,
|
|
59
|
+
BlobInvalid,
|
|
60
|
+
BlobNotFound,
|
|
62
61
|
GatewayTimeout,
|
|
63
62
|
InvalidRequest,
|
|
64
|
-
RepositoryNotFound,
|
|
65
|
-
RepositoryInvalid,
|
|
66
|
-
BlobNotFound,
|
|
67
|
-
BlobInvalid,
|
|
68
|
-
ManifestNotFound,
|
|
69
63
|
ManifestInvalid,
|
|
64
|
+
ManifestNotFound,
|
|
70
65
|
ManifestSignatureInvalid,
|
|
66
|
+
RepositoryInvalid,
|
|
67
|
+
RepositoryNotFound,
|
|
71
68
|
)
|
|
72
69
|
from pulp_container.app.redirects import (
|
|
70
|
+
AzureStorageRedirects,
|
|
73
71
|
FileStorageRedirects,
|
|
74
72
|
S3StorageRedirects,
|
|
75
|
-
AzureStorageRedirects,
|
|
76
73
|
)
|
|
77
74
|
from pulp_container.app.token_verification import (
|
|
78
75
|
RegistryAuthentication,
|
|
79
|
-
TokenAuthentication,
|
|
80
76
|
RegistryPermission,
|
|
77
|
+
TokenAuthentication,
|
|
81
78
|
TokenPermission,
|
|
82
79
|
)
|
|
83
80
|
from pulp_container.app.utils import (
|
|
@@ -571,9 +568,9 @@ class FlatpakIndexDynamicView(APIView):
|
|
|
571
568
|
elif manifest.media_type in (models.MEDIA_TYPE.MANIFEST_LIST, models.MEDIA_TYPE.INDEX_OCI):
|
|
572
569
|
mlms = manifest.listed_manifests.through.objects.filter(image_manifest__pk=manifest.pk)
|
|
573
570
|
if oss:
|
|
574
|
-
mlms.filter(os__in=oss)
|
|
571
|
+
mlms = mlms.filter(os__in=oss)
|
|
575
572
|
if architectures:
|
|
576
|
-
mlms.filter(architecture__in=architectures)
|
|
573
|
+
mlms = mlms.filter(architecture__in=architectures)
|
|
577
574
|
for mlm in mlms:
|
|
578
575
|
self.recurse_through_manifest_lists(
|
|
579
576
|
tag, mlm.manifest_list, oss, architectures, manifests
|
|
@@ -679,7 +676,7 @@ class FlatpakIndexDynamicView(APIView):
|
|
|
679
676
|
continue
|
|
680
677
|
images.append(
|
|
681
678
|
{
|
|
682
|
-
"Tags": tagged,
|
|
679
|
+
"Tags": list(tagged),
|
|
683
680
|
"Digest": manifest.digest,
|
|
684
681
|
"MediaType": manifest.media_type,
|
|
685
682
|
"OS": os,
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
from gettext import gettext as _
|
|
2
1
|
import re
|
|
2
|
+
from gettext import gettext as _
|
|
3
3
|
|
|
4
4
|
from django.core.validators import URLValidator
|
|
5
|
+
from pulp_file.app.models import FileContent
|
|
5
6
|
from rest_framework import serializers
|
|
6
7
|
|
|
7
8
|
from pulpcore.plugin.models import (
|
|
@@ -13,8 +14,8 @@ from pulpcore.plugin.models import (
|
|
|
13
14
|
from pulpcore.plugin.serializers import (
|
|
14
15
|
ContentRedirectContentGuardSerializer,
|
|
15
16
|
DetailRelatedField,
|
|
16
|
-
GetOrCreateSerializerMixin,
|
|
17
17
|
DistributionSerializer,
|
|
18
|
+
GetOrCreateSerializerMixin,
|
|
18
19
|
IdentityField,
|
|
19
20
|
ModelSerializer,
|
|
20
21
|
NestedRelatedField,
|
|
@@ -28,8 +29,7 @@ from pulpcore.plugin.serializers import (
|
|
|
28
29
|
ValidateFieldsMixin,
|
|
29
30
|
)
|
|
30
31
|
|
|
31
|
-
from
|
|
32
|
-
from pulp_container.app import models, fields
|
|
32
|
+
from pulp_container.app import fields, models
|
|
33
33
|
from pulp_container.constants import SIGNATURE_TYPE
|
|
34
34
|
|
|
35
35
|
VALID_SIGNATURE_NAME_REGEX = r"^sha256:[0-9a-f]{64}@[0-9a-f]{32}$"
|
|
@@ -564,10 +564,8 @@ class TagImageSerializer(TagOperationSerializer):
|
|
|
564
564
|
raise serializers.ValidationError(
|
|
565
565
|
_(
|
|
566
566
|
"A manifest with the digest '{}' does not "
|
|
567
|
-
"exist in the latest repository version '{}'"
|
|
568
|
-
|
|
569
|
-
)
|
|
570
|
-
)
|
|
567
|
+
"exist in the latest repository version '{}'"
|
|
568
|
+
).format(new_data["digest"], latest_version)
|
|
571
569
|
)
|
|
572
570
|
|
|
573
571
|
new_data["manifest"] = manifest
|
|
@@ -592,10 +590,8 @@ class UnTagImageSerializer(TagOperationSerializer):
|
|
|
592
590
|
models.Tag.objects.get(pk__in=latest_version.content.all(), name=new_data["tag"])
|
|
593
591
|
except models.Tag.DoesNotExist:
|
|
594
592
|
raise serializers.ValidationError(
|
|
595
|
-
_(
|
|
596
|
-
"
|
|
597
|
-
new_data["tag"], latest_version
|
|
598
|
-
)
|
|
593
|
+
_("The tag '{}' does not exist in the latest repository version '{}'").format(
|
|
594
|
+
new_data["tag"], latest_version
|
|
599
595
|
)
|
|
600
596
|
)
|
|
601
597
|
|
|
@@ -621,7 +617,7 @@ class RecursiveManageSerializer(ValidateFieldsMixin, serializers.Serializer):
|
|
|
621
617
|
if content_units:
|
|
622
618
|
if "*" in content_units and len(content_units) > 1:
|
|
623
619
|
raise serializers.ValidationError(
|
|
624
|
-
_("'*' should be the only item present in the {}".format(content_units)
|
|
620
|
+
_("'*' should be the only item present in the {}").format(content_units)
|
|
625
621
|
)
|
|
626
622
|
return data
|
|
627
623
|
|
|
@@ -664,10 +660,7 @@ class CopySerializer(ValidateFieldsMixin, serializers.Serializer):
|
|
|
664
660
|
new_data.update(data)
|
|
665
661
|
return new_data
|
|
666
662
|
raise serializers.ValidationError(
|
|
667
|
-
_(
|
|
668
|
-
"Either the 'repository' or 'repository_version' need to be specified "
|
|
669
|
-
"but not both."
|
|
670
|
-
)
|
|
663
|
+
_("Either the 'repository' or 'repository_version' need to be specified but not both.")
|
|
671
664
|
)
|
|
672
665
|
|
|
673
666
|
|
|
@@ -719,10 +712,8 @@ class RemoveImageSerializer(ValidateFieldsMixin, serializers.Serializer):
|
|
|
719
712
|
raise serializers.ValidationError(
|
|
720
713
|
_(
|
|
721
714
|
"A manifest with the digest '{}' does not "
|
|
722
|
-
"exist in the latest repository version '{}'"
|
|
723
|
-
|
|
724
|
-
)
|
|
725
|
-
)
|
|
715
|
+
"exist in the latest repository version '{}'"
|
|
716
|
+
).format(new_data["digest"], latest_version)
|
|
726
717
|
)
|
|
727
718
|
|
|
728
719
|
new_data["manifest"] = manifest
|
|
@@ -762,10 +753,8 @@ class RemoveSignaturesSerializer(ValidateFieldsMixin, serializers.Serializer):
|
|
|
762
753
|
raise serializers.ValidationError(
|
|
763
754
|
_(
|
|
764
755
|
"There are no signatures in the latest repository version '{}' "
|
|
765
|
-
"produced with the specified key_id '{}'"
|
|
766
|
-
|
|
767
|
-
)
|
|
768
|
-
)
|
|
756
|
+
"produced with the specified key_id '{}'"
|
|
757
|
+
).format(latest_version, new_data["signed_with_key_id"])
|
|
769
758
|
)
|
|
770
759
|
|
|
771
760
|
new_data["sigs_pks"] = sigs_pks
|
|
@@ -829,7 +818,6 @@ class OCIBuildImageSerializer(ValidateFieldsMixin, serializers.Serializer):
|
|
|
829
818
|
unnecessary database queries when checking permissions (DRF Access Policy).
|
|
830
819
|
"""
|
|
831
820
|
if build_context := data.get("build_context", None):
|
|
832
|
-
|
|
833
821
|
# check if the on_demand_artifacts exist
|
|
834
822
|
for on_demand_artifact in build_context.on_demand_artifacts.iterator():
|
|
835
823
|
if not on_demand_artifact.content_artifact.artifact:
|
|
@@ -5,6 +5,13 @@ import subprocess
|
|
|
5
5
|
import tempfile
|
|
6
6
|
from uuid import uuid4
|
|
7
7
|
|
|
8
|
+
from pulpcore.plugin.models import (
|
|
9
|
+
Artifact,
|
|
10
|
+
Content,
|
|
11
|
+
ContentArtifact,
|
|
12
|
+
PulpTemporaryFile,
|
|
13
|
+
)
|
|
14
|
+
|
|
8
15
|
from pulp_container.app.models import (
|
|
9
16
|
Blob,
|
|
10
17
|
BlobManifest,
|
|
@@ -12,14 +19,8 @@ from pulp_container.app.models import (
|
|
|
12
19
|
Manifest,
|
|
13
20
|
Tag,
|
|
14
21
|
)
|
|
15
|
-
from pulp_container.constants import MEDIA_TYPE
|
|
16
22
|
from pulp_container.app.utils import calculate_digest
|
|
17
|
-
from
|
|
18
|
-
Artifact,
|
|
19
|
-
ContentArtifact,
|
|
20
|
-
Content,
|
|
21
|
-
PulpTemporaryFile,
|
|
22
|
-
)
|
|
23
|
+
from pulp_container.constants import MEDIA_TYPE
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
def get_or_create_blob(layer_json, manifest, path):
|
|
@@ -1,25 +1,16 @@
|
|
|
1
|
-
import aiohttp
|
|
2
1
|
import asyncio
|
|
3
2
|
import base64
|
|
4
3
|
import hashlib
|
|
5
4
|
import json
|
|
6
5
|
import logging
|
|
7
|
-
|
|
8
6
|
from urllib.parse import urljoin, urlparse, urlunparse
|
|
9
7
|
|
|
8
|
+
import aiohttp
|
|
10
9
|
from asgiref.sync import sync_to_async
|
|
10
|
+
|
|
11
11
|
from pulpcore.plugin.models import Artifact, ProgressReport, Remote
|
|
12
|
-
from pulpcore.plugin.stages import DeclarativeArtifact, DeclarativeContent, Stage
|
|
12
|
+
from pulpcore.plugin.stages import ContentSaver, DeclarativeArtifact, DeclarativeContent, Stage
|
|
13
13
|
|
|
14
|
-
from pulp_container.constants import (
|
|
15
|
-
MANIFEST_TYPE,
|
|
16
|
-
MEDIA_TYPE,
|
|
17
|
-
SIGNATURE_API_EXTENSION_VERSION,
|
|
18
|
-
SIGNATURE_HEADER,
|
|
19
|
-
SIGNATURE_SOURCE,
|
|
20
|
-
SIGNATURE_TYPE,
|
|
21
|
-
V2_ACCEPT_HEADERS,
|
|
22
|
-
)
|
|
23
14
|
from pulp_container.app.models import (
|
|
24
15
|
Blob,
|
|
25
16
|
BlobManifest,
|
|
@@ -29,14 +20,23 @@ from pulp_container.app.models import (
|
|
|
29
20
|
Tag,
|
|
30
21
|
)
|
|
31
22
|
from pulp_container.app.utils import (
|
|
32
|
-
extract_data_from_signature,
|
|
33
|
-
urlpath_sanitize,
|
|
34
|
-
determine_media_type,
|
|
35
|
-
validate_manifest,
|
|
36
23
|
calculate_digest,
|
|
24
|
+
determine_media_type,
|
|
25
|
+
extract_data_from_signature,
|
|
37
26
|
filter_resources,
|
|
38
27
|
get_content_data,
|
|
39
28
|
integer_overflow_safe,
|
|
29
|
+
urlpath_sanitize,
|
|
30
|
+
validate_manifest,
|
|
31
|
+
)
|
|
32
|
+
from pulp_container.constants import (
|
|
33
|
+
MANIFEST_TYPE,
|
|
34
|
+
MEDIA_TYPE,
|
|
35
|
+
SIGNATURE_API_EXTENSION_VERSION,
|
|
36
|
+
SIGNATURE_HEADER,
|
|
37
|
+
SIGNATURE_SOURCE,
|
|
38
|
+
SIGNATURE_TYPE,
|
|
39
|
+
V2_ACCEPT_HEADERS,
|
|
40
40
|
)
|
|
41
41
|
|
|
42
42
|
log = logging.getLogger(__name__)
|
|
@@ -556,8 +556,9 @@ class ContainerFirstStage(Stage):
|
|
|
556
556
|
break
|
|
557
557
|
except aiohttp.client_exceptions.ClientResponseError as exc:
|
|
558
558
|
log.info(
|
|
559
|
-
"{} is not accessible, can't sync an image signature. "
|
|
560
|
-
|
|
559
|
+
"{} is not accessible, can't sync an image signature. Error: {} {}".format(
|
|
560
|
+
signature_url, exc.status, exc.message
|
|
561
|
+
)
|
|
561
562
|
)
|
|
562
563
|
|
|
563
564
|
with open(signature_download_result.path, "rb") as f:
|
|
@@ -4,15 +4,16 @@ from pulpcore.plugin.stages import (
|
|
|
4
4
|
ArtifactDownloader,
|
|
5
5
|
ArtifactSaver,
|
|
6
6
|
DeclarativeVersion,
|
|
7
|
-
RemoteArtifactSaver,
|
|
8
|
-
ResolveContentFutures,
|
|
9
7
|
QueryExistingArtifacts,
|
|
10
8
|
QueryExistingContents,
|
|
9
|
+
RemoteArtifactSaver,
|
|
10
|
+
ResolveContentFutures,
|
|
11
11
|
)
|
|
12
12
|
|
|
13
|
-
from .sync_stages import ContainerFirstStage, ContainerContentSaver
|
|
14
13
|
from pulp_container.app.models import ContainerRemote, ContainerRepository
|
|
15
14
|
|
|
15
|
+
from .sync_stages import ContainerContentSaver, ContainerFirstStage
|
|
16
|
+
|
|
16
17
|
log = logging.getLogger(__name__)
|
|
17
18
|
|
|
18
19
|
|