Skip to content

Conversation

@giancarloromeo
Copy link
Contributor

@giancarloromeo giancarloromeo commented Aug 11, 2025

What do these changes do?

ReDoc

This PR adds a new search functionality for files using wildcard patterns in the storage service. The feature allows users to search for files across projects using glob-style patterns like ".txt" or "data_".

  • Adds a new REST endpoint /v0/storage/locations/{location_id}:search with async job support
  • Implements wildcard-based file search functionality in the storage data manager
  • Results can be retrieved using a Pull-Streaming approach

Related issue/s

How to test

cd packages/celery-library
pytest -vv --pdb tests/unit/test_task_manager.py

cd services/storage
pytest -vv --pdb tests/unit/test_simcore_s3_dsm.py::test_search_files

Dev-ops

@giancarloromeo giancarloromeo added this to the Voyager milestone Aug 11, 2025
@giancarloromeo giancarloromeo self-assigned this Aug 11, 2025
@giancarloromeo giancarloromeo added the a:storage issue related to storage service label Aug 11, 2025
@codecov
Copy link

codecov bot commented Aug 11, 2025

Codecov Report

❌ Patch coverage is 75.57252% with 64 lines in your changes missing coverage. Please review.
✅ Project coverage is 87.58%. Comparing base (08daafc) to head (883cfd0).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #8202      +/-   ##
==========================================
- Coverage   87.58%   87.58%   -0.01%     
==========================================
  Files        2001     2003       +2     
  Lines       77978    78194     +216     
  Branches     1338     1344       +6     
==========================================
+ Hits        68299    68484     +185     
- Misses       9279     9309      +30     
- Partials      400      401       +1     
Flag Coverage Δ
integrationtests 64.03% <42.42%> (+0.01%) ⬆️
unittests 86.28% <75.57%> (-0.02%) ⬇️
Components Coverage Δ
pkg_aws_library 93.59% <ø> (ø)
pkg_celery_library 85.83% <90.41%> (+1.56%) ⬆️
pkg_dask_task_models_library 79.33% <ø> (ø)
pkg_models_library 92.90% <74.57%> (-0.18%) ⬇️
pkg_notifications_library 85.20% <ø> (ø)
pkg_postgres_database 87.95% <ø> (ø)
pkg_service_integration 70.17% <ø> (ø)
pkg_service_library 70.98% <80.00%> (-0.01%) ⬇️
pkg_settings_library 90.20% <ø> (ø)
pkg_simcore_sdk 84.95% <ø> (+0.05%) ⬆️
agent 93.10% <ø> (ø)
api_server 91.86% <ø> (ø)
autoscaling 95.72% <ø> (ø)
catalog 92.06% <ø> (ø)
clusters_keeper 99.14% <ø> (ø)
dask_sidecar 92.38% <ø> (ø)
datcore_adapter 97.95% <ø> (ø)
director 75.72% <ø> (ø)
director_v2 90.94% <ø> (+0.01%) ⬆️
dynamic_scheduler 96.82% <ø> (ø)
dynamic_sidecar 90.44% <ø> (ø)
efs_guardian 89.83% <ø> (ø)
invitations 90.90% <ø> (ø)
payments 92.80% <ø> (ø)
resource_usage_tracker 92.38% <ø> (+0.15%) ⬆️
storage 86.50% <77.96%> (+0.21%) ⬆️
webclient ∅ <ø> (∅)
webserver 87.14% <57.57%> (-0.05%) ⬇️

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 08daafc...883cfd0. Read the comment docs.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@mergify
Copy link
Contributor

mergify bot commented Aug 11, 2025

🧪 CI Insights

Here's what we observed from your CI run for 883cfd0.

✅ Passed Jobs With Interesting Signals

Pipeline Job Signal Health on master Retries 🔍 CI Insights 📄 Logs
CI integration-tests Base branch is healthy, but retries were needed. Could be early signs of flakiness 👀 Healthy 1 View View
system-tests Base branch is broken, but the job passed. Looks like this might be a real fix 💪 Broken 0 View View

@giancarloromeo giancarloromeo modified the milestones: Voyager, Cheops Sep 12, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds a new search functionality for files using wildcard patterns in the storage service. The feature allows users to search for files across projects using glob-style patterns like ".txt" or "data_".

  • Adds a new REST endpoint /v0/storage/locations/{location_id}/search with async job support
  • Implements wildcard-based file search functionality in the storage data manager
  • Includes comprehensive test coverage for various search patterns and pagination

Reviewed Changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
services/web/server/src/simcore_service_webserver/storage/_rest.py Adds new search endpoint handler with validation and async job integration
services/web/server/src/simcore_service_webserver/api/v0/openapi.yaml Updates OpenAPI spec with new search endpoint and SearchBodyParams schema
services/storage/src/simcore_service_storage/simcore_s3_dsm.py Implements core search functionality with S3 file pattern matching and pagination
services/storage/src/simcore_service_storage/api/rpc/_simcore_s3.py Adds RPC interface for search task submission
services/storage/src/simcore_service_storage/api/_worker_tasks/_simcore_s3.py Implements async search worker task
packages/models-library/src/models_library/api_schemas_webserver/storage.py Defines SearchBodyParams schema
packages/models-library/src/models_library/api_schemas_storage/search_async_jobs.py Defines SearchResult model for async job results
services/storage/tests/unit/test_simcore_s3_dsm.py Comprehensive test suite for search functionality

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copy link
Member

@sanderegg sanderegg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if possible I also would like to better understand some parts. but it looks good. Thanks!

@giancarloromeo giancarloromeo changed the title ✨ Streamed files search ✨ Introduce streamed files search Oct 14, 2025
@giancarloromeo giancarloromeo added the 🤖-automerge marks PR as ready to be merged for Mergify label Oct 14, 2025
@giancarloromeo giancarloromeo enabled auto-merge (squash) October 14, 2025 09:14
Copy link
Member

@odeimaiz odeimaiz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

full stack!

@sonarqubecloud
Copy link

@giancarloromeo
Copy link
Contributor Author

@Mergifyio queue

@mergify
Copy link
Contributor

mergify bot commented Oct 14, 2025

queue

🟠 Waiting for conditions to match

  • -closed [📌 queue requirement]
  • -conflict [📌 queue requirement]
  • -draft [📌 queue requirement]
  • any of: [📌 queue -> configuration change requirements]
    • -mergify-configuration-changed
    • check-success = Configuration changed
  • any of: [🔀 queue conditions]
    • all of: [📌 queue conditions of queue default]
      • #approved-reviews-by >= 2 [🛡 GitHub branch protection]
      • #approved-reviews-by>=2
      • #changes-requested-reviews-by = 0 [🛡 GitHub branch protection]
      • #changes-requested-reviews-by=0
      • #review-threads-unresolved = 0 [🛡 GitHub branch protection]
      • #review-threads-unresolved=0
      • -conflict
      • -draft
      • base=master
      • branch-protection-review-decision = APPROVED [🛡 GitHub branch protection]
      • label!=🤖-do-not-merge
      • label=🤖-automerge
      • any of: [🛡 GitHub branch protection]
        • check-skipped = deploy to dockerhub
        • check-neutral = deploy to dockerhub
        • check-success = deploy to dockerhub
      • any of: [🛡 GitHub branch protection]
        • check-success = system-tests
        • check-neutral = system-tests
        • check-skipped = system-tests
      • any of: [🛡 GitHub branch protection]
        • check-success = unit-tests
        • check-neutral = unit-tests
        • check-skipped = unit-tests
      • any of: [🛡 GitHub branch protection]
        • check-success = check OAS' are up to date
        • check-neutral = check OAS' are up to date
        • check-skipped = check OAS' are up to date
      • any of: [🛡 GitHub branch protection]
        • check-success = integration-tests
        • check-neutral = integration-tests
        • check-skipped = integration-tests
      • any of: [🛡 GitHub branch protection]
        • check-success = build-test-images (frontend) / build-test-images
        • check-neutral = build-test-images (frontend) / build-test-images
        • check-skipped = build-test-images (frontend) / build-test-images
      • any of: [🛡 GitHub branch protection]
        • check-success = SonarCloud Code Analysis
        • check-neutral = SonarCloud Code Analysis
        • check-skipped = SonarCloud Code Analysis

@giancarloromeo giancarloromeo merged commit b781c6a into ITISFoundation:master Oct 14, 2025
141 of 148 checks passed
@giancarloromeo giancarloromeo modified the milestones: Cheops, Imparable Oct 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🤖-automerge marks PR as ready to be merged for Mergify a:storage issue related to storage service

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Expose search API in webserver Expose search API in storage

7 participants