diff options
author | James Fargher <jfargher@gitlab.com> | 2023-05-26 01:11:48 +0300 |
---|---|---|
committer | James Fargher <jfargher@gitlab.com> | 2023-06-01 03:52:26 +0300 |
commit | b256361ad89292246032543fb712b8ff503be5f9 (patch) | |
tree | 79b6a6c0d70aedafd0102ac94df6f2a51a22e97e | |
parent | f5d65cd7bd229eb29c603584d1d2a04ab7e6450c (diff) |
backup: Implement create repository for backup.Repository
In preparation for server-side backups here we extract the RPC
implementation of create repository and add a corresponding server-side
implementation.
-rw-r--r-- | internal/backup/backup.go | 15 | ||||
-rw-r--r-- | internal/backup/repository.go | 24 |
2 files changed, 27 insertions, 12 deletions
diff --git a/internal/backup/backup.go b/internal/backup/backup.go index 3acaf36a3..545f50efe 100644 --- a/internal/backup/backup.go +++ b/internal/backup/backup.go @@ -85,6 +85,8 @@ type Repository interface { // Remove removes the repository. Does not return an error if the // repository cannot be found. Remove(ctx context.Context) error + // Create creates the repository. + Create(ctx context.Context) error } // ResolveLocator returns a locator implementation based on a locator identifier. @@ -269,7 +271,7 @@ func (mgr *Manager) Restore(ctx context.Context, req *RestoreRequest) error { return fmt.Errorf("manager: %w", err) } - if err := mgr.createRepository(ctx, req.Server, req.Repository); err != nil { + if err := repo.Create(ctx); err != nil { return fmt.Errorf("manager: %w", err) } @@ -315,17 +317,6 @@ func setContextServerInfo(ctx context.Context, server *storage.ServerInfo, stora return nil } -func (mgr *Manager) createRepository(ctx context.Context, server storage.ServerInfo, repo *gitalypb.Repository) error { - repoClient, err := mgr.newRepoClient(ctx, server) - if err != nil { - return fmt.Errorf("create repository: %w", err) - } - if _, err := repoClient.CreateRepository(ctx, &gitalypb.CreateRepositoryRequest{Repository: repo}); err != nil { - return fmt.Errorf("create repository: %w", err) - } - return nil -} - func (mgr *Manager) writeBundle(ctx context.Context, repo Repository, step *Step, refs []git.Reference) (returnErr error) { negatedRefs, err := mgr.negatedKnownRefs(ctx, step) if err != nil { diff --git a/internal/backup/repository.go b/internal/backup/repository.go index 6c66b29af..204ee1e8c 100644 --- a/internal/backup/repository.go +++ b/internal/backup/repository.go @@ -165,6 +165,15 @@ func (rr *remoteRepository) Remove(ctx context.Context) error { return nil } +// Create creates the repository. +func (rr *remoteRepository) Create(ctx context.Context) error { + repoClient := rr.newRepoClient() + if _, err := repoClient.CreateRepository(ctx, &gitalypb.CreateRepositoryRequest{Repository: rr.repo}); err != nil { + return fmt.Errorf("remote repository: create: %w", err) + } + return nil +} + func (rr *remoteRepository) newRepoClient() gitalypb.RepositoryServiceClient { return gitalypb.NewRepositoryServiceClient(rr.conn) } @@ -268,3 +277,18 @@ func (r *localRepository) Remove(ctx context.Context) error { } return nil } + +// Create creates the repository. +func (r *localRepository) Create(ctx context.Context) error { + if err := repoutil.Create( + ctx, + r.locator, + r.gitCmdFactory, + r.txManager, + r.repo, + func(repository *gitalypb.Repository) error { return nil }, + ); err != nil { + return fmt.Errorf("local repository: create: %w", err) + } + return nil +} |