pulp-python 3.8.0__tar.gz → 3.9.0__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-python-3.8.0 → pulp-python-3.9.0}/CHANGES.rst +29 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/PKG-INFO +1 -1
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/__init__.py +1 -1
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/pypi/views.py +10 -2
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/serializers.py +13 -11
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/tasks/sync.py +14 -18
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/viewsets.py +1 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_crud_content_unit.py +3 -7
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_download_content.py +3 -3
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_sync.py +48 -4
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python.egg-info/PKG-INFO +1 -1
- pulp-python-3.9.0/pulp_python.egg-info/requires.txt +4 -0
- pulp-python-3.9.0/requirements.txt +4 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/setup.py +1 -1
- pulp-python-3.8.0/pulp_python.egg-info/requires.txt +0 -5
- pulp-python-3.8.0/requirements.txt +0 -5
- {pulp-python-3.8.0 → pulp-python-3.9.0}/COMMITMENT +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/COPYRIGHT +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/LICENSE +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/MANIFEST.in +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/README.md +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/functest_requirements.txt +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/__init__.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/migrations/0001_initial.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/migrations/0002_pythonpackagecontent_python_version.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/migrations/0003_new_sync_filters.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/migrations/0004_DATA_swap_distribution_model.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/migrations/0005_pythonpackagecontent_sha256.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/migrations/0006_pythonrepository_autopublish.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/migrations/0007_pythonpackagecontent_mv-2-1.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/migrations/0008_pythonpackagecontent_unique_sha256.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/migrations/0009_pythondistribution_allow_uploads.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/migrations/0010_update_json_field.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/migrations/__init__.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/models.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/pypi/__init__.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/pypi/serializers.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/settings.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/tasks/__init__.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/tasks/publish.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/tasks/upload.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/urls.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/utils.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/webserver_snippets/__init__.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/webserver_snippets/apache.conf +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/webserver_snippets/nginx.conf +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/__init__.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/__init__.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/__init__.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_auto_publish.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_consume_content.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_crud_publications.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_crud_remotes.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_full_mirror.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_pypi_apis.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/conftest.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/constants.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/utils.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/unit/__init__.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/unit/test_models.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/upgrade/__init__.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/upgrade/post/__init__.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/upgrade/post/test_publish.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/upgrade/pre/__init__.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/upgrade/pre/test_publish.py +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python.egg-info/SOURCES.txt +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python.egg-info/dependency_links.txt +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python.egg-info/entry_points.txt +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python.egg-info/top_level.txt +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/pyproject.toml +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/setup.cfg +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/test_requirements.txt +0 -0
- {pulp-python-3.8.0 → pulp-python-3.9.0}/unittest_requirements.txt +0 -0
|
@@ -13,6 +13,35 @@ Changelog
|
|
|
13
13
|
|
|
14
14
|
.. towncrier release notes start
|
|
15
15
|
|
|
16
|
+
3.9.0 (2023-03-17)
|
|
17
|
+
==================
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
Features
|
|
21
|
+
--------
|
|
22
|
+
|
|
23
|
+
- Added version filter to package list endpoint.
|
|
24
|
+
`#577 <https://github.com/pulp/pulp_python/issues/577>`__
|
|
25
|
+
- Allow duplicate uploads to return existing packages instead of erring.
|
|
26
|
+
`#590 <https://github.com/pulp/pulp_python/issues/590>`__
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
Bugfixes
|
|
30
|
+
--------
|
|
31
|
+
|
|
32
|
+
- Fixed pull-through caching ignoring remote proxy settings.
|
|
33
|
+
`#553 <https://github.com/pulp/pulp_python/issues/553>`__
|
|
34
|
+
- Changed includes and excludes openapi schema to report as array of strings instead of object.
|
|
35
|
+
`#576 <https://github.com/pulp/pulp_python/issues/576>`__
|
|
36
|
+
- Fixed syncing ignoring remote proxy.
|
|
37
|
+
`#581 <https://github.com/pulp/pulp_python/issues/581>`__
|
|
38
|
+
- Fixed duplicate operationID for generated PyPI simple endpoints schema.
|
|
39
|
+
`#594 <https://github.com/pulp/pulp_python/issues/594>`__
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
----
|
|
43
|
+
|
|
44
|
+
|
|
16
45
|
3.8.0 (2022-12-19)
|
|
17
46
|
==================
|
|
18
47
|
|
|
@@ -201,12 +201,20 @@ class SimpleView(ViewSet, PackageUploadMixin):
|
|
|
201
201
|
return link.text, d_url, value if digest == 'sha256' else ''
|
|
202
202
|
|
|
203
203
|
url = remote.get_remote_artifact_url(f'simple/{package}/')
|
|
204
|
-
|
|
204
|
+
kwargs = {}
|
|
205
|
+
if proxy_url := remote.proxy_url:
|
|
206
|
+
if remote.proxy_username or remote.proxy_password:
|
|
207
|
+
parsed_proxy = urlparse(proxy_url)
|
|
208
|
+
netloc = f"{remote.proxy_username}:{remote.proxy_password}@{parsed_proxy.netloc}"
|
|
209
|
+
proxy_url = urlunsplit((parsed_proxy.scheme, netloc, "", "", ""))
|
|
210
|
+
kwargs["proxies"] = {"http": proxy_url, "https": proxy_url}
|
|
211
|
+
|
|
212
|
+
response = requests.get(url, stream=True, **kwargs)
|
|
205
213
|
links = parse_links_stream_response(response)
|
|
206
214
|
packages = (parse_url(link) for link in links)
|
|
207
215
|
return StreamingHttpResponse(write_simple_detail(package, packages, streamed=True))
|
|
208
216
|
|
|
209
|
-
@extend_schema(summary="Get package simple page")
|
|
217
|
+
@extend_schema(operation_id="pypi_simple_package_read", summary="Get package simple page")
|
|
210
218
|
def retrieve(self, request, path, package):
|
|
211
219
|
"""Retrieves the simple api html page for a package."""
|
|
212
220
|
distro, repo_ver, content = self.get_drvc(path)
|
|
@@ -226,20 +226,21 @@ class PythonPackageContentSerializer(core_serializers.SingleArtifactContentUploa
|
|
|
226
226
|
"The uploaded artifact's sha256 checksum does not match the one provided"
|
|
227
227
|
)}
|
|
228
228
|
)
|
|
229
|
-
sha256 = artifact.sha256
|
|
230
|
-
if sha256 and python_models.PythonPackageContent.objects.filter(sha256=sha256).exists():
|
|
231
|
-
raise serializers.ValidationError(detail={"sha256": _('This field must be unique')})
|
|
232
229
|
|
|
233
230
|
_data = parse_project_metadata(vars(metadata))
|
|
234
231
|
_data['packagetype'] = metadata.packagetype
|
|
235
232
|
_data['version'] = metadata.version
|
|
236
233
|
_data['filename'] = filename
|
|
237
|
-
_data['sha256'] = sha256
|
|
234
|
+
_data['sha256'] = artifact.sha256
|
|
238
235
|
|
|
239
236
|
data.update(_data)
|
|
240
237
|
|
|
241
238
|
return data
|
|
242
239
|
|
|
240
|
+
def retrieve(self, validated_data):
|
|
241
|
+
content = python_models.PythonPackageContent.objects.filter(sha256=validated_data["sha256"])
|
|
242
|
+
return content.first()
|
|
243
|
+
|
|
243
244
|
class Meta:
|
|
244
245
|
fields = core_serializers.SingleArtifactContentUploadSerializer.Meta.fields + (
|
|
245
246
|
'filename', 'packagetype', 'name', 'version', 'sha256', 'metadata_version', 'summary',
|
|
@@ -278,20 +279,21 @@ class PythonRemoteSerializer(core_serializers.RemoteSerializer):
|
|
|
278
279
|
A Serializer for PythonRemote.
|
|
279
280
|
"""
|
|
280
281
|
|
|
281
|
-
includes = serializers.
|
|
282
|
+
includes = serializers.ListField(
|
|
283
|
+
child=serializers.CharField(allow_blank=False),
|
|
282
284
|
required=False,
|
|
283
|
-
|
|
285
|
+
allow_empty=True,
|
|
284
286
|
help_text=_(
|
|
285
|
-
"A
|
|
287
|
+
"A list containing project specifiers for Python packages to include."
|
|
286
288
|
),
|
|
287
289
|
)
|
|
288
|
-
excludes = serializers.
|
|
290
|
+
excludes = serializers.ListField(
|
|
291
|
+
child=serializers.CharField(allow_blank=False),
|
|
289
292
|
required=False,
|
|
290
|
-
|
|
293
|
+
allow_empty=True,
|
|
291
294
|
help_text=_(
|
|
292
|
-
"A
|
|
295
|
+
"A list containing project specifiers for Python packages to exclude."
|
|
293
296
|
),
|
|
294
|
-
|
|
295
297
|
)
|
|
296
298
|
prereleases = serializers.BooleanField(
|
|
297
299
|
required=False,
|
|
@@ -3,7 +3,7 @@ import logging
|
|
|
3
3
|
from aiohttp import ClientResponseError, ClientError
|
|
4
4
|
from lxml.etree import LxmlError
|
|
5
5
|
from gettext import gettext as _
|
|
6
|
-
from os import environ
|
|
6
|
+
from os import environ, path
|
|
7
7
|
|
|
8
8
|
from rest_framework import serializers
|
|
9
9
|
|
|
@@ -26,7 +26,7 @@ from bandersnatch.mirror import Mirror
|
|
|
26
26
|
from bandersnatch.master import Master
|
|
27
27
|
from bandersnatch.configuration import BandersnatchConfig
|
|
28
28
|
from packaging.requirements import Requirement
|
|
29
|
-
from urllib.parse import urljoin
|
|
29
|
+
from urllib.parse import urljoin, urlsplit, urlunsplit
|
|
30
30
|
|
|
31
31
|
logger = logging.getLogger(__name__)
|
|
32
32
|
|
|
@@ -111,14 +111,22 @@ class PythonBanderStage(Stage):
|
|
|
111
111
|
"""
|
|
112
112
|
If includes is specified, then only sync those,else try to sync all other packages
|
|
113
113
|
"""
|
|
114
|
+
# Prevent bandersnatch from reading actual .netrc file, set to nonexistent file
|
|
115
|
+
# See discussion on https://github.com/pulp/pulp_python/issues/581
|
|
116
|
+
environ["NETRC"] = f"{path.curdir}/.fake-netrc"
|
|
114
117
|
# TODO Change Bandersnatch internal API to take proxy settings in from config parameters
|
|
115
|
-
if self.remote.proxy_url:
|
|
116
|
-
|
|
117
|
-
|
|
118
|
+
if proxy_url := self.remote.proxy_url:
|
|
119
|
+
if self.remote.proxy_username or self.remote.proxy_password:
|
|
120
|
+
parsed_proxy = urlsplit(proxy_url)
|
|
121
|
+
creds = f"{self.remote.proxy_username}:{self.remote.proxy_password}"
|
|
122
|
+
netloc = f"{creds}@{parsed_proxy.netloc}"
|
|
123
|
+
proxy_url = urlunsplit((parsed_proxy.scheme, netloc, "", "", ""))
|
|
124
|
+
environ['http_proxy'] = proxy_url
|
|
125
|
+
environ['https_proxy'] = proxy_url
|
|
118
126
|
# Bandersnatch includes leading slash when forming API urls
|
|
119
127
|
url = self.remote.url.rstrip("/")
|
|
120
128
|
# local & global timeouts defaults to 10secs and 5 hours
|
|
121
|
-
async with
|
|
129
|
+
async with Master(url) as master:
|
|
122
130
|
deferred_download = self.remote.policy != Remote.IMMEDIATE
|
|
123
131
|
workers = self.remote.download_concurrency or self.remote.DEFAULT_DOWNLOAD_CONCURRENCY
|
|
124
132
|
async with ProgressReport(
|
|
@@ -140,18 +148,6 @@ class PythonBanderStage(Stage):
|
|
|
140
148
|
await pmirror.synchronize(packages_to_sync)
|
|
141
149
|
|
|
142
150
|
|
|
143
|
-
class PulpMaster(Master):
|
|
144
|
-
"""
|
|
145
|
-
Temporary subclass of bandersnatch.Master until features are in bandersnatch.
|
|
146
|
-
"""
|
|
147
|
-
|
|
148
|
-
async def __aenter__(self) -> "Master":
|
|
149
|
-
"""Ensure Pulp does not try to read the .netrc file."""
|
|
150
|
-
await super().__aenter__()
|
|
151
|
-
self.session._trust_env = False
|
|
152
|
-
return self
|
|
153
|
-
|
|
154
|
-
|
|
155
151
|
class PulpMirror(Mirror):
|
|
156
152
|
"""
|
|
157
153
|
Pulp Mirror Class to perform syncing using Bandersnatch
|
{pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_crud_content_unit.py
RENAMED
|
@@ -146,7 +146,7 @@ class ContentUnitTestCase(TestCaseUsingBindings, TestHelpersMixin):
|
|
|
146
146
|
"""
|
|
147
147
|
1) upload file
|
|
148
148
|
2) upload the same file again
|
|
149
|
-
3) this should
|
|
149
|
+
3) this should return first unit
|
|
150
150
|
"""
|
|
151
151
|
delete_orphans()
|
|
152
152
|
response = self.do_upload()
|
|
@@ -154,12 +154,8 @@ class ContentUnitTestCase(TestCaseUsingBindings, TestHelpersMixin):
|
|
|
154
154
|
content_unit = self.content_api.read(created_resources[0])
|
|
155
155
|
self.check_package_data(content_unit.to_dict())
|
|
156
156
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
task_report = cm.exception.task.to_dict()
|
|
160
|
-
msg = "This field must be unique"
|
|
161
|
-
self.assertTrue("sha256" in task_report["error"]["description"])
|
|
162
|
-
self.assertTrue(msg in task_report["error"]["description"])
|
|
157
|
+
created_resources = monitor_task(self.do_upload().task).created_resources
|
|
158
|
+
self.assertEqual(content_unit.pulp_href, created_resources[0])
|
|
163
159
|
|
|
164
160
|
def test_08_upload_same_filename_different_artifact(self):
|
|
165
161
|
"""
|
{pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_download_content.py
RENAMED
|
@@ -124,7 +124,7 @@ class PublishPyPIJSON(TestCaseUsingBindings, TestHelpersMixin):
|
|
|
124
124
|
This test checks that Pulp can fully sync another Python Package repository that is not
|
|
125
125
|
PyPI. This reads the repository's simple page if XMLRPC isn't supported.
|
|
126
126
|
"""
|
|
127
|
-
remote = self._create_remote(includes=
|
|
127
|
+
remote = self._create_remote(includes=[], prereleases=True)
|
|
128
128
|
repo = self._create_repo_and_sync_with_remote(remote)
|
|
129
129
|
self.assertEqual(get_content_summary(repo.to_dict()), PYTHON_LG_FIXTURE_SUMMARY)
|
|
130
130
|
|
|
@@ -138,14 +138,14 @@ class PublishPyPIJSON(TestCaseUsingBindings, TestHelpersMixin):
|
|
|
138
138
|
# Test using live generated simple pages
|
|
139
139
|
distro = self._create_distribution_from_repo(repo)
|
|
140
140
|
|
|
141
|
-
remote = self._create_remote(includes=
|
|
141
|
+
remote = self._create_remote(includes=[], url=distro.base_url)
|
|
142
142
|
repo2 = self._create_repo_and_sync_with_remote(remote)
|
|
143
143
|
self.assertEqual(get_content_summary(repo2.to_dict()), PYTHON_MD_FIXTURE_SUMMARY)
|
|
144
144
|
|
|
145
145
|
# Now test using publication simple pages
|
|
146
146
|
pub = self._create_publication(repo)
|
|
147
147
|
distro2 = self._create_distribution_from_publication(pub)
|
|
148
|
-
remote = self._create_remote(includes=
|
|
148
|
+
remote = self._create_remote(includes=[], url=distro2.base_url, prereleases=True)
|
|
149
149
|
|
|
150
150
|
repo3 = self._create_repo_and_sync_with_remote(remote)
|
|
151
151
|
self.assertEqual(get_content_summary(repo3.to_dict()), PYTHON_MD_FIXTURE_SUMMARY)
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# coding=utf-8
|
|
2
2
|
"""Tests that sync python plugin repositories."""
|
|
3
|
+
import pytest
|
|
3
4
|
import unittest
|
|
4
5
|
|
|
5
6
|
from pulp_smash import config
|
|
6
|
-
from pulp_smash.pulp3.bindings import monitor_task, PulpTaskError
|
|
7
|
+
from pulp_smash.pulp3.bindings import monitor_task, PulpTaskError
|
|
7
8
|
from pulp_smash.pulp3.utils import (
|
|
8
9
|
gen_repo,
|
|
9
10
|
get_added_content_summary,
|
|
@@ -582,9 +583,6 @@ class PlatformExcludeTestCase(unittest.TestCase):
|
|
|
582
583
|
"""Destroy class-wide variables per test"""
|
|
583
584
|
cls.remote_api.delete(cls.remote.pulp_href)
|
|
584
585
|
cls.repo_api.delete(cls.repo.pulp_href)
|
|
585
|
-
# This is the last test case to be ran, delete orphans
|
|
586
|
-
# TODO: Move this to pytest hook when converting to pytest style
|
|
587
|
-
delete_orphans()
|
|
588
586
|
|
|
589
587
|
def test_no_windows_sync(self):
|
|
590
588
|
"""Tests that no windows packages are synced"""
|
|
@@ -643,6 +641,52 @@ class PlatformExcludeTestCase(unittest.TestCase):
|
|
|
643
641
|
)
|
|
644
642
|
|
|
645
643
|
|
|
644
|
+
@pytest.mark.parallel
|
|
645
|
+
def test_proxy_sync(
|
|
646
|
+
python_repo,
|
|
647
|
+
python_repo_api_client,
|
|
648
|
+
python_remote_factory,
|
|
649
|
+
python_content_api_client,
|
|
650
|
+
http_proxy,
|
|
651
|
+
):
|
|
652
|
+
"""Test syncing with a proxy."""
|
|
653
|
+
body = gen_python_remote(proxy_url=http_proxy.proxy_url)
|
|
654
|
+
remote = python_remote_factory(**body)
|
|
655
|
+
sync_resp = python_repo_api_client.sync(python_repo.pulp_href, {"remote": remote.pulp_href})
|
|
656
|
+
monitor_task(sync_resp.task)
|
|
657
|
+
|
|
658
|
+
repo = python_repo_api_client.read(python_repo.pulp_href)
|
|
659
|
+
assert repo.latest_version_href[-2] == "1"
|
|
660
|
+
|
|
661
|
+
content_resp = python_content_api_client.list(repository_version=repo.latest_version_href)
|
|
662
|
+
assert content_resp.count == 2
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
@pytest.mark.parallel
|
|
666
|
+
def test_proxy_auth_sync(
|
|
667
|
+
python_repo,
|
|
668
|
+
python_repo_api_client,
|
|
669
|
+
python_remote_factory,
|
|
670
|
+
python_content_api_client,
|
|
671
|
+
http_proxy_with_auth,
|
|
672
|
+
):
|
|
673
|
+
"""Test syncing with a proxy with auth."""
|
|
674
|
+
body = gen_python_remote(
|
|
675
|
+
proxy_url=http_proxy_with_auth.proxy_url,
|
|
676
|
+
proxy_username=http_proxy_with_auth.username,
|
|
677
|
+
proxy_password=http_proxy_with_auth.password,
|
|
678
|
+
)
|
|
679
|
+
remote = python_remote_factory(**body)
|
|
680
|
+
sync_resp = python_repo_api_client.sync(python_repo.pulp_href, {"remote": remote.pulp_href})
|
|
681
|
+
monitor_task(sync_resp.task)
|
|
682
|
+
|
|
683
|
+
repo = python_repo_api_client.read(python_repo.pulp_href)
|
|
684
|
+
assert repo.latest_version_href[-2] == "1"
|
|
685
|
+
|
|
686
|
+
content_resp = python_content_api_client.list(repository_version=repo.latest_version_href)
|
|
687
|
+
assert content_resp.count == 2
|
|
688
|
+
|
|
689
|
+
|
|
646
690
|
def sync_to_remote(self, body, create=False, mirror=False):
|
|
647
691
|
"""Takes a body and creates/updates a remote object, then it performs a sync"""
|
|
648
692
|
if create:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/app/migrations/0010_update_json_field.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_auto_publish.py
RENAMED
|
File without changes
|
{pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_consume_content.py
RENAMED
|
File without changes
|
{pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_crud_publications.py
RENAMED
|
File without changes
|
{pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_crud_remotes.py
RENAMED
|
File without changes
|
{pulp-python-3.8.0 → pulp-python-3.9.0}/pulp_python/tests/functional/api/test_full_mirror.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|