Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1319ae2

Browse files
authored
chore: support zip filetypes in the file cache (#18750)
1 parent79d1465 commit1319ae2

File tree

4 files changed

+46
-9
lines changed

4 files changed

+46
-9
lines changed

‎coderd/coderdtest/coderdtest.go

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package coderdtest
22

33
import (
4+
"archive/tar"
45
"bytes"
56
"context"
67
"crypto"
@@ -52,6 +53,7 @@ import (
5253
"cdr.dev/slog"
5354
"cdr.dev/slog/sloggers/sloghuman"
5455
"cdr.dev/slog/sloggers/slogtest"
56+
"github.com/coder/coder/v2/archive"
5557
"github.com/coder/coder/v2/coderd/files"
5658
"github.com/coder/quartz"
5759

@@ -886,14 +888,22 @@ func createAnotherUserRetry(t testing.TB, client *codersdk.Client, organizationI
886888
returnother,user
887889
}
888890

889-
// CreateTemplateVersion creates a template import provisioner job
890-
// with the responses provided. It uses the "echo" provisioner for compatibility
891-
// with testing.
892-
funcCreateTemplateVersion(t testing.TB,client*codersdk.Client,organizationID uuid.UUID,res*echo.Responses,mutators...func(*codersdk.CreateTemplateVersionRequest)) codersdk.TemplateVersion {
891+
funcCreateTemplateVersionMimeType(t testing.TB,client*codersdk.Client,mimeTypestring,organizationID uuid.UUID,res*echo.Responses,mutators...func(*codersdk.CreateTemplateVersionRequest)) codersdk.TemplateVersion {
893892
t.Helper()
894893
data,err:=echo.TarWithOptions(context.Background(),client.Logger(),res)
895894
require.NoError(t,err)
896-
file,err:=client.Upload(context.Background(),codersdk.ContentTypeTar,bytes.NewReader(data))
895+
896+
switchmimeType {
897+
casecodersdk.ContentTypeTar:
898+
// do nothing
899+
casecodersdk.ContentTypeZip:
900+
data,err=archive.CreateZipFromTar(tar.NewReader(bytes.NewBuffer(data)),int64(len(data)))
901+
require.NoError(t,err,"creating zip")
902+
default:
903+
t.Fatal("unexpected mime type",mimeType)
904+
}
905+
906+
file,err:=client.Upload(context.Background(),mimeType,bytes.NewReader(data))
897907
require.NoError(t,err)
898908

899909
req:= codersdk.CreateTemplateVersionRequest{
@@ -910,6 +920,13 @@ func CreateTemplateVersion(t testing.TB, client *codersdk.Client, organizationID
910920
returntemplateVersion
911921
}
912922

923+
// CreateTemplateVersion creates a template import provisioner job
924+
// with the responses provided. It uses the "echo" provisioner for compatibility
925+
// with testing.
926+
funcCreateTemplateVersion(t testing.TB,client*codersdk.Client,organizationID uuid.UUID,res*echo.Responses,mutators...func(*codersdk.CreateTemplateVersionRequest)) codersdk.TemplateVersion {
927+
returnCreateTemplateVersionMimeType(t,client,codersdk.ContentTypeTar,organizationID,res,mutators...)
928+
}
929+
913930
// CreateWorkspaceBuild creates a workspace build for the given workspace and transition.
914931
funcCreateWorkspaceBuild(
915932
t*testing.T,

‎coderd/coderdtest/dynamicparameters.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ type DynamicParameterTemplateParams struct {
2020
Plan json.RawMessage
2121
ModulesArchive []byte
2222

23+
// Uses a zip archive instead of a tar
24+
Zipbool
25+
2326
// StaticParams is used if the provisioner daemon version does not support dynamic parameters.
2427
StaticParams []*proto.RichParameter
2528

@@ -45,7 +48,11 @@ func DynamicParameterTemplate(t *testing.T, client *codersdk.Client, org uuid.UU
4548
},
4649
}}
4750

48-
version:=CreateTemplateVersion(t,client,org,files,func(request*codersdk.CreateTemplateVersionRequest) {
51+
mime:=codersdk.ContentTypeTar
52+
ifargs.Zip {
53+
mime=codersdk.ContentTypeZip
54+
}
55+
version:=CreateTemplateVersionMimeType(t,client,mime,org,files,func(request*codersdk.CreateTemplateVersionRequest) {
4956
ifargs.TemplateID!=uuid.Nil {
5057
request.TemplateID=args.TemplateID
5158
}

‎coderd/files/cache.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,10 +303,21 @@ func fetch(store database.Store, fileID uuid.UUID) (CacheEntryValue, error) {
303303
returnCacheEntryValue{},xerrors.Errorf("failed to read file from database: %w",err)
304304
}
305305

306-
content:=bytes.NewBuffer(file.Data)
306+
varfiles fs.FS
307+
switchfile.Mimetype {
308+
case"application/zip","application/x-zip-compressed":
309+
files,err=archivefs.FromZipReader(bytes.NewReader(file.Data),int64(len(file.Data)))
310+
iferr!=nil {
311+
returnCacheEntryValue{},xerrors.Errorf("failed to read zip file: %w",err)
312+
}
313+
default:
314+
// Assume '"application/x-tar"' as the default mimetype.
315+
files=archivefs.FromTarReader(bytes.NewBuffer(file.Data))
316+
}
317+
307318
returnCacheEntryValue{
308319
Object:file.RBACObject(),
309-
FS:archivefs.FromTarReader(content),
320+
FS:files,
310321
Size:int64(len(file.Data)),
311322
},nil
312323
}

‎enterprise/coderd/workspaces_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,9 @@ func TestCreateUserWorkspace(t *testing.T) {
294294
OrganizationID:first.OrganizationID,
295295
})
296296

297-
template,_:=coderdtest.DynamicParameterTemplate(t,admin,first.OrganizationID, coderdtest.DynamicParameterTemplateParams{})
297+
template,_:=coderdtest.DynamicParameterTemplate(t,admin,first.OrganizationID, coderdtest.DynamicParameterTemplateParams{
298+
Zip:true,
299+
})
298300

299301
ctx=testutil.Context(t,testutil.WaitLong)
300302

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp