Skip to content

Commit 23e0866

Browse files
authored
refactor(cdn,sdk,cdsctl): remove old artifacts engine (#6117)
Signed-off-by: Yvonnick Esnault <[email protected]>
1 parent 64f3b87 commit 23e0866

16 files changed

+64
-983
lines changed

cli/cdsctl/workflow_artifact.go

+1-232
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package main
22

33
import (
44
"context"
5-
"encoding/json"
65
"fmt"
76
"os"
87
"regexp"
@@ -12,7 +11,6 @@ import (
1211

1312
"github.com/ovh/cds/cli"
1413
"github.com/ovh/cds/sdk"
15-
"github.com/ovh/cds/sdk/cdn"
1614
)
1715

1816
var workflowArtifactCmd = cli.Command{
@@ -23,141 +21,10 @@ var workflowArtifactCmd = cli.Command{
2321

2422
func workflowArtifact() *cobra.Command {
2523
return cli.NewCommand(workflowArtifactCmd, nil, []*cobra.Command{
26-
cli.NewListCommand(workflowArtifactListCmd, workflowArtifactListRun, nil, withAllCommandModifiers()...),
2724
cli.NewCommand(workflowArtifactDownloadCmd, workflowArtifactDownloadRun, nil, withAllCommandModifiers()...),
28-
cli.NewCommand(workflowArtifactCDNMigrateCmd, workflowArtifactCDNMigrate, nil, withAllCommandModifiers()...),
2925
})
3026
}
3127

32-
var workflowArtifactCDNMigrateCmd = cli.Command{
33-
Name: "cdn-migrate",
34-
Short: "Migrate artifact into CDN",
35-
Long: `Migrate artifact from CDS to CDN
36-
cdsctl workflow artifact cdn-migrate <project_key> <workflow_name> <run_number>
37-
38-
CDN does not manage artifact with same name inside a run. They will be renamed <num>_<artifact_name>
39-
Migrated artifacts will not be visible with cdsctl workflow result command
40-
`,
41-
Ctx: []cli.Arg{
42-
{Name: _ProjectKey},
43-
{Name: _WorkflowName},
44-
},
45-
Args: []cli.Arg{
46-
{Name: "number"},
47-
},
48-
}
49-
50-
func workflowArtifactCDNMigrate(v cli.Values) error {
51-
number, err := strconv.ParseInt(v.GetString("number"), 10, 64)
52-
if err != nil {
53-
return cli.NewError("number parameter have to be an integer")
54-
}
55-
projKey := v.GetString(_ProjectKey)
56-
wName := v.GetString(_WorkflowName)
57-
58-
run, err := client.WorkflowRunGet(projKey, wName, number)
59-
if err != nil {
60-
return err
61-
}
62-
63-
workflowArtifacts, err := client.WorkflowRunArtifacts(projKey, wName, number)
64-
if err != nil {
65-
return err
66-
}
67-
68-
artName := make(map[string]int64)
69-
for _, art := range workflowArtifacts {
70-
prefix := ""
71-
nb, has := artName[art.Name]
72-
if has {
73-
prefix = fmt.Sprintf("%d_", nb)
74-
fmt.Printf("%s/%s will be renamed to %s%s\n", art.Name, art.Tag, prefix, art.Name)
75-
76-
}
77-
artName[art.Name] = nb + 1
78-
artName := prefix + art.Name
79-
// Call cdn to migrate
80-
sign := cdn.Signature{
81-
ProjectKey: projKey,
82-
WorkflowName: wName,
83-
WorkflowID: run.WorkflowID,
84-
RunID: art.WorkflowID,
85-
RunNumber: run.Number,
86-
NodeRunID: art.WorkflowNodeRunID,
87-
JobName: "",
88-
JobID: 0,
89-
Worker: &cdn.SignatureWorker{
90-
FileName: artName,
91-
FilePerm: art.Perm,
92-
RunResultType: string(sdk.CDNTypeItemRunResult),
93-
},
94-
}
95-
96-
// call cdn
97-
url := fmt.Sprintf("/migrate/artifact/%s/%s/%d", projKey, wName, art.ID)
98-
bts, _ := json.Marshal(sign)
99-
if bts, err := client.ServiceCallPOST(sdk.TypeCDN, url, bts); err != nil {
100-
fmt.Printf("unable to migrate %s: %s: %v\n", art.Name, string(bts), err)
101-
continue
102-
}
103-
fmt.Printf("artifact %s migrated\n", artName)
104-
105-
}
106-
fmt.Printf("Migration done.")
107-
return nil
108-
}
109-
110-
var workflowArtifactListCmd = cli.Command{
111-
Name: "list",
112-
Short: "List artifacts of one Workflow Run",
113-
Ctx: []cli.Arg{
114-
{Name: _ProjectKey},
115-
{Name: _WorkflowName},
116-
},
117-
Args: []cli.Arg{
118-
{Name: "number"},
119-
},
120-
}
121-
122-
func workflowArtifactListRun(v cli.Values) (cli.ListResult, error) {
123-
number, err := strconv.ParseInt(v.GetString("number"), 10, 64)
124-
if err != nil {
125-
return nil, cli.NewError("number parameter have to be an integer")
126-
}
127-
128-
workflowArtifacts, err := client.WorkflowRunArtifacts(v.GetString(_ProjectKey), v.GetString(_WorkflowName), number)
129-
if err != nil {
130-
return nil, err
131-
}
132-
133-
results, err := client.WorkflowRunResultsList(context.Background(), v.GetString(_ProjectKey), v.GetString(_WorkflowName), number)
134-
if err != nil {
135-
return nil, err
136-
}
137-
138-
type Artifact struct {
139-
Name string `cli:"name"`
140-
Md5 string `cli:"md5"`
141-
}
142-
143-
artifacts := make([]Artifact, 0, len(workflowArtifacts))
144-
for _, art := range workflowArtifacts {
145-
artifacts = append(artifacts, Artifact{Name: art.Name, Md5: art.MD5sum})
146-
}
147-
for _, runResult := range results {
148-
if runResult.Type != sdk.WorkflowRunResultTypeArtifact {
149-
continue
150-
}
151-
artiData, err := runResult.GetArtifact()
152-
if err != nil {
153-
return nil, err
154-
}
155-
artifacts = append(artifacts, Artifact{Name: artiData.Name, Md5: artiData.MD5})
156-
}
157-
158-
return cli.AsListResult(artifacts), nil
159-
}
160-
16128
var workflowArtifactDownloadCmd = cli.Command{
16229
Name: "download",
16330
Short: "Download artifacts of one Workflow Run",
@@ -200,14 +67,6 @@ func workflowArtifactDownloadRun(v cli.Values) error {
20067
cdnURL = confCDN.HTTPURL
20168
}
20269

203-
ok, err := downloadFromCDSAPI(v, number)
204-
if err != nil {
205-
return err
206-
}
207-
if ok {
208-
return nil
209-
}
210-
21170
// Search in result
21271
results, err := client.WorkflowRunResultsList(context.Background(), v.GetString(_ProjectKey), v.GetString(_WorkflowName), number)
21372
if err != nil {
@@ -222,6 +81,7 @@ func workflowArtifactDownloadRun(v cli.Values) error {
22281
return cli.WrapError(err, "exclude parameter is not valid")
22382
}
22483
}
84+
var ok bool
22585
for _, runResult := range results {
22686
if runResult.Type != sdk.WorkflowRunResultTypeArtifact {
22787
continue
@@ -288,94 +148,3 @@ func workflowArtifactDownloadRun(v cli.Values) error {
288148
}
289149
return nil
290150
}
291-
292-
func downloadFromCDSAPI(v cli.Values, number int64) (bool, error) {
293-
artifacts, err := client.WorkflowRunArtifacts(v.GetString(_ProjectKey), v.GetString(_WorkflowName), number)
294-
if err != nil {
295-
return false, err
296-
}
297-
298-
var reg *regexp.Regexp
299-
if len(v.GetString("exclude")) > 0 {
300-
var err error
301-
reg, err = regexp.Compile(v.GetString("exclude"))
302-
if err != nil {
303-
return false, cli.WrapError(err, "exclude parameter is not valid")
304-
}
305-
}
306-
307-
var ok bool
308-
309-
for _, a := range artifacts {
310-
if v.GetString("artifact-name") != "" && v.GetString("artifact-name") != a.Name {
311-
continue
312-
}
313-
if v.GetString("exclude") != "" && reg.MatchString(a.Name) {
314-
fmt.Printf("File %s is excluded from download\n", a.Name)
315-
continue
316-
}
317-
318-
var f *os.File
319-
var toDownload bool
320-
if _, err := os.Stat(a.Name); os.IsNotExist(err) {
321-
toDownload = true
322-
} else {
323-
// file exists, check sha512
324-
var errf error
325-
f, errf = os.OpenFile(a.Name, os.O_RDWR|os.O_CREATE, os.FileMode(a.Perm))
326-
if errf != nil {
327-
return ok, errf
328-
}
329-
sha512sum, err512 := sdk.FileSHA512sum(a.Name)
330-
if err512 != nil {
331-
return ok, err512
332-
}
333-
334-
if sha512sum != a.SHA512sum {
335-
toDownload = true
336-
}
337-
}
338-
339-
if toDownload {
340-
var errf error
341-
f, errf = os.OpenFile(a.Name, os.O_RDWR|os.O_CREATE|os.O_TRUNC, os.FileMode(a.Perm))
342-
if errf != nil {
343-
return ok, errf
344-
}
345-
fmt.Printf("Downloading %s...\n", a.Name)
346-
if err := client.WorkflowNodeRunArtifactDownload(v.GetString(_ProjectKey), v.GetString(_WorkflowName), a, f); err != nil {
347-
return ok, err
348-
}
349-
if err := f.Close(); err != nil {
350-
return ok, err
351-
}
352-
}
353-
354-
sha512sum, err512 := sdk.FileSHA512sum(a.Name)
355-
if err512 != nil {
356-
return ok, err512
357-
}
358-
359-
if sha512sum != a.SHA512sum {
360-
return ok, cli.NewError("Invalid sha512sum \ndownloaded file:%s\n%s:%s", sha512sum, f.Name(), a.SHA512sum)
361-
}
362-
363-
md5sum, errmd5 := sdk.FileMd5sum(a.Name)
364-
if errmd5 != nil {
365-
return ok, errmd5
366-
}
367-
368-
if md5sum != a.MD5sum {
369-
return ok, cli.NewError("Invalid md5sum \ndownloaded file:%s\n%s:%s", md5sum, f.Name(), a.MD5sum)
370-
}
371-
372-
if toDownload {
373-
fmt.Printf("File %s created, checksum OK\n", f.Name())
374-
} else {
375-
fmt.Printf("File %s already downloaded, checksum OK\n", f.Name())
376-
}
377-
378-
ok = true
379-
}
380-
return ok, nil
381-
}

contrib/actions/cds-go-build.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ steps:
9292
- " \techo \"File ${GOPATH}/src/{{.package}}/{{.binary}} not found!\""
9393
- ' exit 1;'
9494
- "\tfi"
95-
- "\tworker upload --tag={{.cds.version}} \"${GOPATH}/src/{{.package}}/{{.binary}}\""
95+
- "\tworker upload \"${GOPATH}/src/{{.package}}/{{.binary}}\""
9696
- else
9797
- "\techo \"artifact upload: {{.artifactUpload}}. So, artifact is not uploaded\""
9898
- fi;

contrib/actions/cds-split-upload.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ steps:
5555
- 'worker export ${SOURCE}_md5 $x'
5656
- ""
5757
- 'echo -e "\n$x > ${SOURCE}-md5"'
58-
- 'worker upload --tag={{.cds.version}} ${SOURCE}-md5'
58+
- 'worker upload ${SOURCE}-md5'
5959
- ""
6060
- echo -e "\n"
6161
- 'split --verbose --bytes={{.splitSize}} ${ARGS} ${SOURCE} ${PREFIX_HANDLE}-'
6262
- ""
6363
- echo -e "\n"
64-
- 'worker upload --tag=${TAG} ./${PREFIX_HANDLE}-*'
64+
- 'worker upload ./${PREFIX_HANDLE}-*'
6565
- ""

engine/cdn/cdn_router.go

-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ func (s *Service) initRouter(ctx context.Context) {
3838
r.Handle("/item/{type}/{apiRef}/download/{unit}", nil, r.GET(s.getItemDownloadInUnitHandler, service.OverrideAuth(s.itemAccessMiddleware)))
3939
r.Handle("/item/{type}/{apiRef}/lines", nil, r.GET(s.getItemLogsLinesHandler, service.OverrideAuth(s.itemAccessMiddleware)))
4040

41-
r.Handle("/migrate/artifact/{projectKey}/{workflowName}/{artifactID}", nil, r.POST(s.migrateArtifactInCDNHandler))
42-
4341
r.Handle("/unit", nil, r.GET(s.getUnitsHandler))
4442
r.Handle("/unit/{id}", nil, r.DELETE(s.deleteUnitHandler))
4543
r.Handle("/unit/{id}/item", nil, r.DELETE(s.markItemUnitAsDeleteHandler))

engine/cdn/item_upload.go

-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66

77
"github.com/ovh/cds/engine/service"
88
"github.com/ovh/cds/sdk"
9-
_ "github.com/ovh/cds/sdk"
109
"github.com/ovh/cds/sdk/cdn"
1110
"github.com/ovh/cds/sdk/jws"
1211
)

engine/cdn/migrate_handler.go

-71
This file was deleted.

engine/hatchery/marathon/helper_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func InitMarathonMarathonTest(opts marathonJDD) *HatcheryMarathon {
3838
if opts.WorkerSpawnTimeout > 0 {
3939
h.Config.WorkerSpawnTimeout = opts.WorkerSpawnTimeout
4040
}
41-
h.Client = cdsclient.New(cdsclient.Config{Host: "http://lolcat.host", InsecureSkipVerifyTLS: false})
41+
h.Client = cdsclient.New(cdsclient.Config{Host: "http://cds-api.local", InsecureSkipVerifyTLS: false})
4242
gock.InterceptClient(h.Client.(cdsclient.Raw).HTTPClient())
4343
return h
4444
}

0 commit comments

Comments
 (0)