Skip to content

Conversation

@jeronimodeleon
Copy link
Contributor

Motivation and context

This change adds support for Backblaze B2 as a cloud storage provider in CVAT. B2 is a cost-effective S3-compatible cloud storage solution that provides an alternative to other cloud storage providers.

This enhancement enables users to:

  • Connect their B2 buckets to CVAT for dataset storage
  • Leverage B2's competitive pricing for cloud storage
  • Use B2's S3-compatible API for seamless integration

Key features implemented:

  • Full S3-compatible API integration via BackblazeB2 class
  • Complete CRUD operations (upload, download, list, delete)
  • Custom telemetry with B2-specific user-agent and event logging
  • Flexible endpoint URL configuration for different B2 regions
  • UI integration with provider dropdown, icon, and form fields

Technical changes:

Backend:

  • Added BackblazeB2 class in cloud_provider.py extending AWS_S3
  • Added BACKBLAZE_B2 to CloudProviderChoice enum
  • Updated serializers to handle B2-specific attributes
  • Code formatted with black and isort

Frontend:

  • Added BackblazeB2Provider icon component with proper spacing
  • Added B2 to provider selection and filter components
  • Added B2 logo asset

Documentation:

  • Complete B2 setup guide in attach-cloud-storage.md
  • Updated cloud-storages.md with B2 provider information

How has this been tested?

  • Added test_can_create_backblaze_b2_cloud_storage test case to verify B2 cloud storage creation
  • Added B2 fixtures in test data
  • Tested CRUD operations (create, read, update, delete) with B2 buckets
  • Verified UI components render correctly with B2 provider selection
  • Confirmed S3-compatible API integration works with B2 endpoints
  • Validated custom telemetry and user-agent headers

Checklist

  • I submit my changes into the develop branch
  • I have created a changelog fragment
  • I have updated the documentation accordingly
  • I have added tests to cover my changes
  • I have linked related issues

License

  • I submit my code changes under the same MIT License that covers the project.

@nmanovic
Copy link
Contributor

@jeronimodeleon , thank you for the PR. Unfortunately, we cannot accept it. Feel free to contact us here: https://www.cvat.ai/contact (General Inquiries). I will explain my point and also discuss possible ways to move forward with the PR.

@SpecLad
Copy link
Contributor

SpecLad commented Oct 22, 2025

It's already possible to use B2 via their S3-compatible API; you just need to select S3 as the provider, and set a custom endpoint URL. As such, I don't think we need to add any dedicated code for this, although maybe a mention in the documentation could be useful. Either way, please talk to @nmanovic first.

@sonarqubecloud
Copy link

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.

4 participants