diff options
author | James Fargher <jfargher@gitlab.com> | 2023-03-31 03:51:54 +0300 |
---|---|---|
committer | James Fargher <jfargher@gitlab.com> | 2023-04-14 05:03:21 +0300 |
commit | 3de64b1ce8252a7d502fff87b57e4fe8f8fe91f1 (patch) | |
tree | deea9b2746265865cbeace7ffdd0ad7b292d732b | |
parent | b5e976335850e99a540514635cfb288e4fb56e3e (diff) |
backup: Extract get custom hooks call
Soon we will be converting backups to work server side. This means that
all the RPC calls will need to be converted to localrepo calls. So here
we are extracting each RPC call into its own type that will later be
swapped out.
-rw-r--r-- | internal/backup/backup.go | 14 | ||||
-rw-r--r-- | internal/backup/repository.go | 15 |
2 files changed, 18 insertions, 11 deletions
diff --git a/internal/backup/backup.go b/internal/backup/backup.go index 68ac91c37..7bb34290a 100644 --- a/internal/backup/backup.go +++ b/internal/backup/backup.go @@ -184,7 +184,7 @@ func (mgr *Manager) Create(ctx context.Context, req *CreateRequest) error { if err := mgr.writeBundle(ctx, step, req.Server, req.Repository, refs); err != nil { return fmt.Errorf("manager: write bundle: %w", err) } - if err := mgr.writeCustomHooks(ctx, step.CustomHooksPath, req.Server, req.Repository); err != nil { + if err := mgr.writeCustomHooks(ctx, repo, step.CustomHooksPath); err != nil { return fmt.Errorf("manager: write custom hooks: %w", err) } @@ -434,19 +434,11 @@ func (mgr *Manager) restoreBundle(ctx context.Context, path string, server stora return nil } -func (mgr *Manager) writeCustomHooks(ctx context.Context, path string, server storage.ServerInfo, repo *gitalypb.Repository) error { - repoClient, err := mgr.newRepoClient(ctx, server) - if err != nil { - return err - } - stream, err := repoClient.GetCustomHooks(ctx, &gitalypb.GetCustomHooksRequest{Repository: repo}) +func (mgr *Manager) writeCustomHooks(ctx context.Context, repo *remoteRepository, path string) error { + hooks, err := repo.GetCustomHooks(ctx) if err != nil { return err } - hooks := streamio.NewReader(func() ([]byte, error) { - resp, err := stream.Recv() - return resp.GetData(), err - }) w := NewLazyWriter(func() (io.WriteCloser, error) { return mgr.sink.GetWriter(ctx, path) }) diff --git a/internal/backup/repository.go b/internal/backup/repository.go index 5183642a6..5a7a46ce2 100644 --- a/internal/backup/repository.go +++ b/internal/backup/repository.go @@ -6,6 +6,7 @@ import ( "io" "gitlab.com/gitlab-org/gitaly/v15/proto/go/gitalypb" + "gitlab.com/gitlab-org/gitaly/v15/streamio" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -66,6 +67,20 @@ func (repo *remoteRepository) ListRefs(ctx context.Context) ([]*gitalypb.ListRef return refs, nil } +// GetCustomHooks fetches the custom hooks archive. +func (repo *remoteRepository) GetCustomHooks(ctx context.Context) (io.Reader, error) { + repoClient := repo.newRepoClient() + stream, err := repoClient.GetCustomHooks(ctx, &gitalypb.GetCustomHooksRequest{Repository: repo.repo}) + if err != nil { + return nil, err + } + + return streamio.NewReader(func() ([]byte, error) { + resp, err := stream.Recv() + return resp.GetData(), err + }), nil +} + func (repo *remoteRepository) newRepoClient() gitalypb.RepositoryServiceClient { return gitalypb.NewRepositoryServiceClient(repo.conn) } |