diff --git a/.github/workflows/scripts/before_install.sh b/.github/workflows/scripts/before_install.sh index 2d8d709cae9..b759af34a72 100755 --- a/.github/workflows/scripts/before_install.sh +++ b/.github/workflows/scripts/before_install.sh @@ -55,7 +55,7 @@ pulp_scheme: "https" image: name: "pulp" tag: "ci_build" - ci_base: "ghcr.io/pulp/pulp-ci-centos9:latest" + ci_base: "ghcr.io/pulp/pulp-ci-centos10:latest" source: "${COMPONENT_SOURCE}" ci_requirements: $(test -f ci_requirements.txt && echo -n true || echo -n false) upperbounds: $(test "${TEST}" = "pulp" && echo -n true || echo -n false) diff --git a/MANIFEST.in b/MANIFEST.in index 862f03cc35e..fdda5e340fe 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -17,4 +17,5 @@ include test_requirements.txt exclude releasing.md exclude AGENTS.md exclude CLAUDE.md +exclude Makefile recursive-exclude pulpcore/tasking/task_trigger_demonstration * diff --git a/Makefile b/Makefile new file mode 100644 index 00000000000..b4228e5ba22 --- /dev/null +++ b/Makefile @@ -0,0 +1,20 @@ +# WARNING: DO NOT EDIT! +# +# This file was generated by plugin_template, and is managed by it. Please use +# './plugin-template --ci pulpcore' to update this file. +# +# For more info visit https://github.com/pulp/plugin_template + +.PHONY: format +format: + ruff format + ruff check --select I --fix + +.PHONY: lint +lint: + yamllint -s -d '{extends: relaxed, rules: {line-length: disable}}' .github/workflows + bump-my-version bump --dry-run --allow-dirty release + ruff format --check --diff + ruff check + check-manifest + python .ci/scripts/check_requirements.py diff --git a/pulpcore/app/apps.py b/pulpcore/app/apps.py index f8e12e2570c..34fd4e58497 100644 --- a/pulpcore/app/apps.py +++ b/pulpcore/app/apps.py @@ -275,7 +275,11 @@ def _clean_app_status(sender, apps, verbosity, **kwargs): AppStatus.objects.filter(last_heartbeat__lt=TransactionNow() - F("ttl")).delete() -def _populate_access_policies(sender, apps, verbosity, **kwargs): +def _populate_access_policies(sender, apps=None, verbosity=0, **kwargs): + from django.apps import apps as django_apps + + if apps is None: + apps = django_apps from pulpcore.app.util import get_view_urlpattern from pulpcore.app.viewsets import LoginViewSet @@ -319,7 +323,11 @@ def _populate_access_policies(sender, apps, verbosity, **kwargs): ) -def _populate_system_id(sender, apps, verbosity, **kwargs): +def _populate_system_id(sender, apps=None, verbosity=0, **kwargs): + from django.apps import apps as django_apps + + if apps is None: + apps = django_apps SystemID = apps.get_model("core", "SystemID") if not SystemID.objects.exists(): SystemID().save() @@ -328,8 +336,10 @@ def _populate_system_id(sender, apps, verbosity, **kwargs): def _ensure_default_domain(sender, **kwargs): table_names = connection.introspection.table_names() if "core_domain" in table_names: + import pulpcore.app.util from pulpcore.app.util import get_default_domain + pulpcore.app.util.default_domain = None default = get_default_domain() # Cache the default domain # Match the Pulp settings if ( @@ -343,7 +353,11 @@ def _ensure_default_domain(sender, **kwargs): default.save(skip_hooks=True) -def _populate_roles(sender, apps, verbosity, **kwargs): +def _populate_roles(sender, apps=None, verbosity=0, **kwargs): + from django.apps import apps as django_apps + + if apps is None: + apps = django_apps role_prefix = f"{sender.label}." # collect all plugin defined roles desired_roles = {} @@ -402,7 +416,11 @@ def _get_permission(perm): role.permissions.set(permissions) -def _populate_artifact_serving_distribution(sender, apps, verbosity, **kwargs): +def _populate_artifact_serving_distribution(sender, apps=None, verbosity=0, **kwargs): + from django.apps import apps as django_apps + + if apps is None: + apps = django_apps if ( settings.STORAGES["default"]["BACKEND"] == "pulpcore.app.models.storage.FileSystem" or not settings.REDIRECT_TO_OBJECT_STORAGE diff --git a/pulpcore/tests/functional/api/using_plugin/test_content_delivery.py b/pulpcore/tests/functional/api/using_plugin/test_content_delivery.py index 521bc052254..c4e4ade0d71 100644 --- a/pulpcore/tests/functional/api/using_plugin/test_content_delivery.py +++ b/pulpcore/tests/functional/api/using_plugin/test_content_delivery.py @@ -154,7 +154,7 @@ def test_remote_content_changed_with_on_demand( # THEN assert not output_file.exists() assert result.returncode == 18 - assert b"* Closing connection 0" in result.stderr + assert b"closing connection" in result.stderr.lower() assert b"curl: (18) transfer closed with outstanding read data remaining" in result.stderr # WHEN (second request) diff --git a/pulpcore/tests/unit/content/test_handler.py b/pulpcore/tests/unit/content/test_handler.py index 48285e483a6..cef2db6f58f 100644 --- a/pulpcore/tests/unit/content/test_handler.py +++ b/pulpcore/tests/unit/content/test_handler.py @@ -575,15 +575,20 @@ async def test_app_status_fixture_is_reusable(app_status, repeat): @pytest.mark.asyncio -@pytest.mark.django_db +@pytest.mark.django_db(transaction=True) async def test_async_pull_through_add(ca1, monkeypatch, app_status): set_guid(uuid.uuid4()) # required for creating a task, no easily mockable monkeypatch.setattr( "pulpcore.tasking.tasks.async_are_resources_available", AsyncMock(return_value=True) ) monkeypatch.setattr("pulpcore.tasking.tasks.wakeup_worker", Mock()) + monkeypatch.setattr( + "pulpcore.tasking.redis_tasks.async_are_resources_available", + AsyncMock(return_value=True), + ) repo = await Repository.objects.acreate(name=str(uuid.uuid4())) + monkeypatch.setattr(Repository, "CONTENT_TYPES", [Content]) try: task = await repo.async_pull_through_add_content(ca1) assert task.state == TASK_STATES.COMPLETED diff --git a/pyproject.toml b/pyproject.toml index c9358817233..c19c9d89995 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,7 +54,7 @@ dependencies = [ "protobuf>=4.21.1,<7.0", "pulp-glue>=0.30.0,<0.41", "pygtrie>=2.5,<=2.5.0", - "psycopg[binary]>=3.1.8,<3.4", # SemVer, not explicitely stated, but mentioned on multiple changes. + "psycopg[binary]>=3.3.4,<3.4", # SemVer, not explicitely stated, but mentioned on multiple changes. "pyparsing>=3.1.0,<3.4", # Looks like only bugfixes in z-Stream. "pysequoia>=0.1.33,<0.2", "PyYAML>=5.1.1,<6.1", # Looks like only bugfixes in z-Stream. diff --git a/template_config.yml b/template_config.yml index 8c44961ba29..cbdfdcda7e5 100644 --- a/template_config.yml +++ b/template_config.yml @@ -9,7 +9,7 @@ check_commit_message: true check_manifest: true check_stray_pulpcore_imports: false -ci_base_image: "ghcr.io/pulp/pulp-ci-centos9" +ci_base_image: "ghcr.io/pulp/pulp-ci-centos10" ci_env: {} ci_trigger: "{pull_request: {branches: ['*']}}" cli_package: "pulp-cli"