Skip to content

Externalize lib-pairing module to libseqera#958

Open
pditommaso wants to merge 5 commits intomasterfrom
lib-pairing
Open

Externalize lib-pairing module to libseqera#958
pditommaso wants to merge 5 commits intomasterfrom
lib-pairing

Conversation

@pditommaso
Copy link
Collaborator

@pditommaso pditommaso commented Jan 12, 2026

Summary

Moves the pairing service out of Wave into libseqera/lib-pairing and consumes it as an external dependency.

  • Extract pairing service classes from io.seqera.wave.service.pairing into a standalone lib-pairing module (now hosted in libseqera)
  • Inline MD5 logic into a new CacheKey utility class to eliminate the wave-utils dependency, making lib-pairing fully self-contained
  • Wave imports io.seqera:lib-pairing:1.0.0 as an external dependency instead of a subproject
  • Adapt Wave-side code to use the lib-pairing interfaces (imports, config, connectors)

Test plan

  • ./gradlew :lib-pairing:build passes in libseqera (28 tests)
  • ./gradlew :test --tests '*Pairing*' passes in Wave with includeBuild('../libseqera')
  • CI pipeline passes

🤖 Generated with Claude Code

pditommaso and others added 5 commits January 12, 2026 15:22
- Create lib-pairing Gradle submodule for credential federation functionality
- Move pairing service, WebSocket transport, and message types to new module
- Extract configuration into PairingConfig interface with implementation in Wave
- Create LicenseValidator interface for decoupling license validation
- Rename package from io.seqera.wave.service.pairing to io.seqera.service.pairing
- Update all Wave imports to reference the new library package

The lib-pairing module provides:
- RSA key pair generation and caching for secure credential sharing
- WebSocket-based bidirectional communication for real-time messaging
- HTTP request/response proxying over WebSocket connections
- Distributed state management via Redis-backed stores

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add PairingMessageEncodeStrategyTest: polymorphic message encoding/decoding
- Add PairingRecordSerializationTest: record serialization with Moshi
- Add PairingExchangeSerializationTest: request/response model tests
- Use Spock 'where:' clauses for data-driven tests

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
Move the lib-pairing subproject out of Wave and consume it as an
external dependency from libseqera. This eliminates the wave-utils
dependency by inlining the MD5 logic into a new CacheKey utility class.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@pditommaso pditommaso changed the title Extract pairing logic into lib-pairing module Externalize lib-pairing module to libseqera Feb 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant