fix: detect missing SECP384R1 early and fix community.crypto compatibility (#14970)

Add pre-flight check in main.yml that catches missing cryptography/SECP384R1
before deployment starts, replacing the cryptic error from community.crypto
internals with an actionable message pointing users to run ./algo or uv sync.

Root cause of the CI ipsec/both test failures: cryptography 46.0.5 wraps
the ec module with _ModuleWithDeprecations (for SECT curve deprecation),
which breaks community.crypto's ec.__dict__.get("SECP384R1") lookup.
The fix in community.crypto 3.1.1 uses getattr() instead.

Changes:
- Add SECP384R1 pre-flight check to main.yml (conditional on ipsec_enabled)
- Add cryptography>=42.0.0 as explicit dependency in pyproject.toml
- Upgrade community.crypto to >=3.1.1 (fixes __dict__ vs getattr bug)
- Add ansible-galaxy collection install step to CI
- Use venv Python interpreter for local deployments in add_host tasks

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dan Guido
2026-02-22 02:40:17 -08:00
committed by GitHub
co-authored by Claude Opus 4.6
parent a79d73009f
commit de11b86060
8 changed files with 28 additions and 4 deletions
+3
View File
@@ -56,6 +56,9 @@ jobs:
- name: Install Python dependencies
run: uv sync
- name: Install Ansible collections
run: uv run ansible-galaxy collection install -r requirements.yml
- name: Create test configuration
run: |
cat > integration-test.cfg << EOF