mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
chore: update protobuf to reuse file request (#21447)
**This is just the protobuf changes for the PR https://github.com/coder/coder/pull/21398** Moved `UploadFileRequest` from `provisionerd.proto` -> `provisioner.proto`. Renamed to `FileUpload` because it is now bi-directional. This **is backwards compatible**. I tested it to confirm the payloads are identical. Types were just renamed and moved around. ```golang func TestTypeUpgrade(t *testing.T) { t.Parallel() x := &proto2.UploadFileRequest{ Type: &proto2.UploadFileRequest_ChunkPiece{ ChunkPiece: &proto.ChunkPiece{ Data: []byte("Hello World!"), FullDataHash: []byte("Foobar"), PieceIndex: 42, }, }, } data, err := protobuf.Marshal(x) require.NoError(t, err) // Exactly the same output // EhgKDEhlbGxvIFdvcmxkIRIGRm9vYmFyGCo= on `main` // EhgKDEhlbGxvIFdvcmxkIRIGRm9vYmFyGCo= on this branch fmt.Println(base64.StdEncoding.EncodeToString(data)) } ``` # What this does This allows provisioner daemons to download files from `coderd`'s `files` table. This is used to send over cached module files and prevent the need of downloading these modules on each workspace build.
This commit is contained in:
@@ -1433,7 +1433,7 @@ UploadFileStream:
|
||||
}
|
||||
|
||||
switch typed := msg.Type.(type) {
|
||||
case *proto.UploadFileRequest_DataUpload:
|
||||
case *sdkproto.FileUpload_DataUpload:
|
||||
if file != nil {
|
||||
return xerrors.New("unexpected file upload while waiting for file completion")
|
||||
}
|
||||
@@ -1453,7 +1453,7 @@ UploadFileStream:
|
||||
// This should never really happen in practice, but we handle it gracefully.
|
||||
break UploadFileStream
|
||||
}
|
||||
case *proto.UploadFileRequest_ChunkPiece:
|
||||
case *sdkproto.FileUpload_ChunkPiece:
|
||||
if file == nil {
|
||||
return xerrors.New("unexpected chunk piece while waiting for file upload")
|
||||
}
|
||||
@@ -1518,6 +1518,11 @@ UploadFileStream:
|
||||
return nil
|
||||
}
|
||||
|
||||
func (*server) DownloadFile(_ *proto.FileRequest, _ proto.DRPCProvisionerDaemon_DownloadFileStream) error {
|
||||
// TODO implemented in follow up PR
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
// CompleteJob is triggered by a provision daemon to mark a provisioner job as completed.
|
||||
func (s *server) CompleteJob(ctx context.Context, completed *proto.CompletedJob) (*proto.Empty, error) {
|
||||
ctx, span := s.startTrace(ctx, tracing.FuncName())
|
||||
|
||||
@@ -110,10 +110,10 @@ func TestUploadFileErrorScenarios(t *testing.T) {
|
||||
|
||||
stream := &mockUploadStream{
|
||||
done: make(chan struct{}),
|
||||
messages: make(chan *proto.UploadFileRequest, 2),
|
||||
messages: make(chan *sdkproto.FileUpload, 2),
|
||||
}
|
||||
|
||||
up := &proto.UploadFileRequest{Type: &proto.UploadFileRequest_DataUpload{DataUpload: upload}}
|
||||
up := &sdkproto.FileUpload{Type: &sdkproto.FileUpload_DataUpload{DataUpload: upload}}
|
||||
|
||||
// Send it twice
|
||||
stream.messages <- up
|
||||
@@ -140,7 +140,7 @@ func TestUploadFileErrorScenarios(t *testing.T) {
|
||||
|
||||
type mockUploadStream struct {
|
||||
done chan struct{}
|
||||
messages chan *proto.UploadFileRequest
|
||||
messages chan *sdkproto.FileUpload
|
||||
}
|
||||
|
||||
func (m mockUploadStream) SendAndClose(empty *proto.Empty) error {
|
||||
@@ -148,7 +148,7 @@ func (m mockUploadStream) SendAndClose(empty *proto.Empty) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m mockUploadStream) Recv() (*proto.UploadFileRequest, error) {
|
||||
func (m mockUploadStream) Recv() (*sdkproto.FileUpload, error) {
|
||||
msg, ok := <-m.messages
|
||||
if !ok {
|
||||
return nil, xerrors.New("no more messages to receive")
|
||||
@@ -177,14 +177,14 @@ func (m *mockUploadStream) isDone() bool {
|
||||
func newMockUploadStream(up *sdkproto.DataUpload, chunks ...*sdkproto.ChunkPiece) *mockUploadStream {
|
||||
stream := &mockUploadStream{
|
||||
done: make(chan struct{}),
|
||||
messages: make(chan *proto.UploadFileRequest, 1+len(chunks)),
|
||||
messages: make(chan *sdkproto.FileUpload, 1+len(chunks)),
|
||||
}
|
||||
if up != nil {
|
||||
stream.messages <- &proto.UploadFileRequest{Type: &proto.UploadFileRequest_DataUpload{DataUpload: up}}
|
||||
stream.messages <- &sdkproto.FileUpload{Type: &sdkproto.FileUpload_DataUpload{DataUpload: up}}
|
||||
}
|
||||
|
||||
for _, chunk := range chunks {
|
||||
stream.messages <- &proto.UploadFileRequest{Type: &proto.UploadFileRequest_ChunkPiece{ChunkPiece: chunk}}
|
||||
stream.messages <- &sdkproto.FileUpload{Type: &sdkproto.FileUpload_ChunkPiece{ChunkPiece: chunk}}
|
||||
}
|
||||
close(stream.messages)
|
||||
return stream
|
||||
|
||||
Reference in New Issue
Block a user