Skip to content
Draft

WIP #7628

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/scripts/before_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,11 @@ services:
image: "docker.io/pulp/pulp-fixtures:latest"
env:
BASE_URL: "http://pulp-fixtures:8080"
- name: "saml2-idp"
image: "ghcr.io/pfrest/mock-saml2-idp:latest"
env:
SP_ENTITY_ID: "http://pulp"
SP_ACS_LOCATION: "http://pulp/saml/acs/"
VARSYAML

if [ "$TEST" = "s3" ]; then
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/scripts/before_script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ echo
echo "# Pulp config:"
tail -v -n +1 .ci/ansible/settings/settings.*

echo
echo "# Pulp CLI config"
tail -v -n +1 "../pulp-cli/tests/cli.toml"

echo
echo "# Containerfile:"
tail -v -n +1 .ci/ansible/Containerfile
Expand Down
9 changes: 7 additions & 2 deletions .github/workflows/scripts/script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,13 @@ export PULP_FIXTURES_URL="http://pulp-fixtures:8080"
# some pulp-cli tests use the api root envvar
export PULP_API_ROOT="$(EDITOR=cat pulp config edit 2>/dev/null | awk -F'"' '/api_root/{print $2; exit}')"
pushd ../pulp-cli
pip install -r test_requirements.txt
pytest -v tests -m "pulpcore or pulp_file or pulp_certguard"
if [[ -f "test_requirements.txt" ]]
then
pip install -r test_requirements.txt
pytest -v tests -m "pulpcore or pulp_file or pulp_certguard"
else
PULP_CA_BUNDLE="/usr/local/share/ca-certificates/pulp_webserver.crt" make livetest
fi
popd

if [ -f "$POST_SCRIPT" ]; then
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@ jobs:
with:
python-version: "3.11"

- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true

- name: "Download plugin package"
uses: "actions/download-artifact@v8"
with:
Expand Down
2 changes: 1 addition & 1 deletion ci_requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@

pulpcore[saml2]
21 changes: 21 additions & 0 deletions pulpcore/app/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,27 @@
"pulpcore.backends.ObjectRolePermissionBackend",
]

with suppress(ImportError):
# TODO Move this in a hook depending on SAML_CONFIG's existance or so.
import_module("djangosaml2")
INSTALLED_APPS.append("djangosaml2")
MIDDLEWARE.append("djangosaml2.middleware.SamlSessionMiddleware")
AUTHENTICATION_BACKENDS.append("djangosaml2.backends.Saml2Backend")
LOGIN_URL = "/saml2/login/"
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SAML_CONFIG = {
"entityid": "http://localhost:5001/sp.xml",
"entity_category": [],
"service": {},
"key_file": "/etc/pki/tls/private/pulp_webserver.key",
"cert_file": "/etc/pki/tls/certs/pulp_webserver.crt",
"xmlsec_binary": "/usr/bin/xmlsec1",
"metadata": {
"local": [BASE_DIR / "remote_metadata.xml"],
},
"debug": 1,
}

ROOT_URLCONF = "pulpcore.app.urls"

TEMPLATES = [
Expand Down
3 changes: 3 additions & 0 deletions pulpcore/app/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,9 @@ class NoSchema(p.callback.cls):
path("", include("social_django.urls", namespace=settings.SOCIAL_AUTH_URL_NAMESPACE))
)

if "djangosaml2" in settings.INSTALLED_APPS:
urlpatterns.append(path("saml2/", include("djangosaml2.urls")))

#: The Pulp Platform v3 API router, which can be used to manually register ViewSets with the API.
root_router = PulpDefaultRouter()

Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ s3 = ["django-storages[boto3]==1.14.6"]
google = ["django-storages[google]==1.14.6"]
azure = ["django-storages[azure]==1.14.6"]
prometheus = ["django-prometheus"]
saml2 = ["djangosaml2>=1.12.0,<1.13"]
kafka = [
# Pinned because project warns "things might (and will) break with every update"
"cloudevents==1.11.0",
Expand Down
Loading