Project Repository Storage Moves
This document was created to help contributors understand the code design of project repository storage moves. Read this document before making changes to the code for this feature.
This document is intentionally limited to an overview of how the code is designed, as code can change often. To understand how a specific part of the feature works, view the code and the specs. The details here explain how the major components of the Code Owners feature work.
Business logic
-
Projects::RepositoryStorageMove
: Tracks the move, includes state machine.- Defined in
app/models/projects/repository_storage_move.rb
.
- Defined in
-
RepositoryStorageMovable
: Contains the state machine logic, validators, and some helper methods.- Defined in
app/models/concerns/repository_storage_movable.rb
.
- Defined in
-
Project
: The project model.- Defined in
app/models/project.rb
.
- Defined in
-
CanMoveRepositoryStorage
: Contains helper methods that are intoProject
.- Defined in
app/models/concerns/can_move_repository_storage.rb
.
- Defined in
-
API::ProjectRepositoryStorageMoves
: API class for project repository storage moves.- Defined in
lib/api/project_repository_storage_moves.rb
.
- Defined in
-
Entities::Projects::RepositoryStorageMove
: API entity for serializing theProjects::RepositoryStorageMove
model.- Defined in
lib/api/entities/projects/repository_storage_moves.rb
.
- Defined in
-
Projects::ScheduleBulkRepositoryShardMovesService
: Service to schedule bulk moves.- Defined in
app/services/projects/schedule_bulk_repository_shard_moves_service.rb
.
- Defined in
-
ScheduleBulkRepositoryShardMovesMethods
: Generic methods for bulk moves.- Defined in
app/services/concerns/schedule_bulk_repository_shard_moves_methods.rb
.
- Defined in
-
Projects::ScheduleBulkRepositoryShardMovesWorker
: Worker to handle bulk moves.- Defined in
app/workers/projects/schedule_bulk_repository_shard_moves_worker.rb
.
- Defined in
-
Projects::UpdateRepositoryStorageWorker
: Finds repository storage move and then calls the update storage service.- Defined in
app/workers/projects/update_repository_storage_worker.rb
.
- Defined in
-
UpdateRepositoryStorageWorker
: Module containing generic logic forProjects::UpdateRepositoryStorageWorker
.- Defined in
app/workers/concerns/update_repository_storage_worker.rb
.
- Defined in
-
Projects::UpdateRepositoryStorageService
: Performs the move.- Defined in
app/services/projects/update_repository_storage_service.rb
.
- Defined in
-
UpdateRepositoryStorageMethods
: Module with generic methods included inProjects::UpdateRepositoryStorageService
.- Defined in
app/services/concerns/update_repository_storage_methods.rb
.
- Defined in
-
Projects::UpdateService
: Schedules move if the passed parameters request a move.- Defined in
app/services/projects/update_service.rb
.
- Defined in
-
PoolRepository
: Ruby object representing GitalyObjectPool
.- Defined in
app/models/pool_repository.rb
.
- Defined in
-
ObjectPool::CreateWorker
: Worker to create anObjectPool
withGitaly
.- Defined in
app/workers/object_pool/create_worker.rb
.
- Defined in
-
ObjectPool::JoinWorker
: Worker to join anObjectPool
withGitaly
.- Defined in
app/workers/object_pool/join_worker.rb
.
- Defined in
-
ObjectPool::ScheduleJoinWorker
: Worker to schedule anObjectPool::JoinWorker
.- Defined in
app/workers/object_pool/schedule_join_worker.rb
.
- Defined in
-
ObjectPool::DestroyWorker
: Worker to destroy anObjectPool
withGitaly
.- Defined in
app/workers/object_pool/destroy_worker.rb
.
- Defined in
-
ObjectPoolQueue
: Module to configureObjectPool
workers.- Defined in
app/workers/concerns/object_pool_queue.rb
.
- Defined in
-
Repositories::ReplicateService
: Handles replication of data from one repository to another.- Defined in
app/services/repositories/replicate_service.rb
.
- Defined in
Flow
These flowcharts should help explain the flow from the endpoints down to the models for different features.