Skip to content

Commit d3c2b12

Browse files
authored
feat(cdsctl,sdk): manage vcs on projects (#6132)
* feat(cdsctl,sdk): manage vcs on projects Signed-off-by: Yvonnick Esnault <[email protected]>
1 parent 042861d commit d3c2b12

File tree

26 files changed

+399
-15
lines changed

26 files changed

+399
-15
lines changed

Makefile

+2
Original file line numberDiff line numberDiff line change
@@ -115,3 +115,5 @@ tidy:
115115
done;
116116
@echo "Running tidy on tests/fixtures/04SCWorkflowRunSimplePlugin"
117117
@(cd tests/fixtures/04SCWorkflowRunSimplePlugin && go mod tidy)
118+
@(cd sdk/interpolate && go mod tidy)
119+
@(cd tools/smtpmock && go mod tidy)

cli/cdsctl/experimental.go

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package main
2+
3+
import (
4+
"github.com/spf13/cobra"
5+
6+
"github.com/ovh/cds/cli"
7+
)
8+
9+
var experimentalCmd = cli.Command{
10+
Name: "experimental",
11+
Aliases: []string{"exp"},
12+
Short: "CDS Experimental commands",
13+
Hidden: true,
14+
}
15+
16+
func experimentalCommands() []*cobra.Command {
17+
return []*cobra.Command{
18+
experimentalProject(),
19+
}
20+
}
21+
22+
func experimental() *cobra.Command {
23+
return cli.NewCommand(experimentalCmd, nil, experimentalCommands())
24+
}

cli/cdsctl/experimental_project.go

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package main
2+
3+
import (
4+
"github.com/spf13/cobra"
5+
6+
"github.com/ovh/cds/cli"
7+
)
8+
9+
var experimentalProjectCmd = cli.Command{
10+
Name: "project",
11+
Short: "CDS Experimental project commands",
12+
}
13+
14+
func experimentalProject() *cobra.Command {
15+
return cli.NewCommand(experimentalProjectCmd, nil, []*cobra.Command{
16+
projectVCS(),
17+
})
18+
}
+114
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"os"
7+
8+
"github.com/spf13/cobra"
9+
10+
yaml "github.com/ghodss/yaml"
11+
"github.com/ovh/cds/cli"
12+
"github.com/ovh/cds/sdk/cdsclient"
13+
)
14+
15+
var projectVCSCmd = cli.Command{
16+
Name: "vcs",
17+
Aliases: []string{"vcs"},
18+
Short: "Manage VCS on a CDS project",
19+
}
20+
21+
func projectVCS() *cobra.Command {
22+
return cli.NewCommand(projectVCSCmd, nil, []*cobra.Command{
23+
cli.NewListCommand(projectVCSListCmd, projectVCSListFunc, nil, withAllCommandModifiers()...),
24+
cli.NewDeleteCommand(projectVCSDeleteCmd, projectVCSDeleteFunc, nil, withAllCommandModifiers()...),
25+
cli.NewCommand(projectVCSImportCmd, projectVCSImportFunc, nil, withAllCommandModifiers()...),
26+
cli.NewCommand(projectVCSExportCmd, projectVCSExportFunc, nil, withAllCommandModifiers()...),
27+
})
28+
}
29+
30+
var projectVCSListCmd = cli.Command{
31+
Name: "list",
32+
Short: "List VCS available on a project",
33+
Ctx: []cli.Arg{
34+
{Name: _ProjectKey},
35+
},
36+
}
37+
38+
func projectVCSListFunc(v cli.Values) (cli.ListResult, error) {
39+
pfs, err := client.ProjectVCSList(context.Background(), v.GetString(_ProjectKey))
40+
return cli.AsListResult(pfs), err
41+
}
42+
43+
var projectVCSDeleteCmd = cli.Command{
44+
Name: "delete",
45+
Short: "Delete a VCS configuration on a project",
46+
Ctx: []cli.Arg{
47+
{Name: _ProjectKey},
48+
},
49+
Args: []cli.Arg{
50+
{Name: "name"},
51+
},
52+
}
53+
54+
func projectVCSDeleteFunc(v cli.Values) error {
55+
return client.ProjectVCSDelete(context.Background(), v.GetString(_ProjectKey), v.GetString("name"))
56+
}
57+
58+
var projectVCSImportCmd = cli.Command{
59+
Name: "import",
60+
Short: "Import a VCS configuration on a project from a yaml file",
61+
Example: "cdsctl project vcs import MY-PROJECT file.yml",
62+
Ctx: []cli.Arg{
63+
{Name: _ProjectKey},
64+
},
65+
Args: []cli.Arg{
66+
{Name: "filename"},
67+
},
68+
Flags: []cli.Flag{
69+
{Name: "force", Type: cli.FlagBool},
70+
},
71+
}
72+
73+
func projectVCSImportFunc(v cli.Values) error {
74+
f, err := os.Open(v.GetString("filename"))
75+
if err != nil {
76+
return cli.WrapError(err, "unable to open file %s", v.GetString("filename"))
77+
}
78+
defer f.Close()
79+
80+
var mods []cdsclient.RequestModifier
81+
if v.GetBool("force") {
82+
mods = append(mods, cdsclient.Force())
83+
}
84+
85+
_, err = client.ProjectVCSImport(context.Background(), v.GetString(_ProjectKey), f, mods...)
86+
return err
87+
}
88+
89+
var projectVCSExportCmd = cli.Command{
90+
Name: "export",
91+
Short: "Export a VCS configuration from a project to stdout",
92+
Example: "cdsctl vcs export MY-PROJECT MY-VCS-SERVER-NAME > file.yaml",
93+
Ctx: []cli.Arg{
94+
{Name: _ProjectKey},
95+
},
96+
Args: []cli.Arg{
97+
{Name: "name"},
98+
},
99+
}
100+
101+
func projectVCSExportFunc(v cli.Values) error {
102+
pf, err := client.ProjectVCSGet(context.Background(), v.GetString(_ProjectKey), v.GetString("name"))
103+
if err != nil {
104+
return err
105+
}
106+
107+
btes, err := yaml.Marshal(pf)
108+
if err != nil {
109+
return err
110+
}
111+
112+
fmt.Println(string(btes))
113+
return nil
114+
}

cli/cdsctl/main.go

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ func main() {
2828
encrypt(),
2929
contexts(),
3030
environment(),
31+
experimental(),
3132
events(),
3233
group(),
3334
health(),

cli/cdsctl/project_integration.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func projectIntegrationDeleteFunc(v cli.Values) error {
6262
var projectIntegrationImportCmd = cli.Command{
6363
Name: "import",
6464
Short: "Import a integration configuration on a project from a yaml file",
65-
Example: "cdsctl integration import MY-PROJECT file.yml",
65+
Example: "cdsctl project integration import MY-PROJECT file.yml",
6666
Ctx: []cli.Arg{
6767
{Name: _ProjectKey},
6868
},
@@ -93,7 +93,7 @@ func projectIntegrationImportFunc(v cli.Values) error {
9393
var projectIntegrationExportCmd = cli.Command{
9494
Name: "export",
9595
Short: "Export a integration configuration from a project to stdout",
96-
Example: "cdsctl integration export MY-PROJECT MY-INTEGRATION-NAME > file.yaml",
96+
Example: "cdsctl project integration export MY-PROJECT MY-INTEGRATION-NAME > file.yaml",
9797
Ctx: []cli.Arg{
9898
{Name: _ProjectKey},
9999
},

contrib/grpcplugins/action/plugin-archive/go.sum

-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
112112
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
113113
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
114114
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
115-
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
116115
github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U=
117116
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
118117
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=

contrib/grpcplugins/action/plugin-artifactory-release-bundle-create/go.sum

-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJm
113113
github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM=
114114
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
115115
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
116-
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
117116
github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U=
118117
github.com/buger/jsonparser v0.0.0-20180910192245-6acdf747ae99/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s=
119118
github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=

contrib/grpcplugins/action/plugin-artifactory-release-bundle-distribute/go.sum

-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
111111
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
112112
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
113113
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
114-
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
115114
github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U=
116115
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
117116
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=

contrib/grpcplugins/action/plugin-download/go.sum

-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
111111
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
112112
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
113113
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
114-
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
115114
github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U=
116115
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
117116
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=

contrib/grpcplugins/action/plugin-group-tmpl/go.sum

-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
111111
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
112112
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
113113
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
114-
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
115114
github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U=
116115
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
117116
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=

contrib/grpcplugins/action/plugin-kafka-publish/go.sum

-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
122122
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
123123
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
124124
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
125-
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
126125
github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U=
127126
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
128127
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=

contrib/grpcplugins/action/plugin-marathon/go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ require (
3232
github.com/emirpasic/gods v1.12.0 // indirect
3333
github.com/fatih/color v1.13.0 // indirect
3434
github.com/fsamin/go-dump v1.0.9 // indirect
35+
github.com/ghodss/yaml v1.0.0 // indirect
3536
github.com/go-git/gcfg v1.5.0 // indirect
3637
github.com/go-git/go-billy/v5 v5.3.1 // indirect
3738
github.com/go-git/go-git/v5 v5.4.2 // indirect

contrib/grpcplugins/action/plugin-marathon/go.sum

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
116116
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
117117
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
118118
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
119-
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
120119
github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U=
121120
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
122121
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
@@ -213,6 +212,7 @@ github.com/fujiwara/shapeio v0.0.0-20170602072123-c073257dd745/go.mod h1:/WpqsrS
213212
github.com/gambol99/go-marathon v0.0.0-20170922093320-ec4a50170df7/go.mod h1:GLyXJD41gBO/NPKVPGQbhyyC06eugGy15QEZyUkE2/s=
214213
github.com/gambol99/go-marathon v0.7.1 h1:/dnwXQ0W0UDScpvmcdjzRz3ssnJ/5ieX/q4Xi/QHOn4=
215214
github.com/gambol99/go-marathon v0.7.1/go.mod h1:GLyXJD41gBO/NPKVPGQbhyyC06eugGy15QEZyUkE2/s=
215+
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
216216
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
217217
github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0=
218218
github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=

contrib/grpcplugins/action/plugin-npm-audit-parser/go.sum

-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
111111
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
112112
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
113113
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
114-
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
115114
github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U=
116115
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
117116
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=

contrib/grpcplugins/action/plugin-ssh-cmd/go.sum

-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
111111
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
112112
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
113113
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
114-
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
115114
github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U=
116115
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
117116
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=

contrib/grpcplugins/action/plugin-tmpl/go.sum

-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
111111
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
112112
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
113113
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
114-
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
115114
github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U=
116115
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
117116
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=

contrib/grpcplugins/action/plugin-venom/go.sum

-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
116116
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
117117
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
118118
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
119-
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
120119
github.com/bsm/sarama-cluster v2.1.15+incompatible h1:RkV6WiNRnqEEbp81druK8zYhmnIgdOjqSVi0+9Cnl2A=
121120
github.com/bsm/sarama-cluster v2.1.15+incompatible/go.mod h1:r7ao+4tTNXvWm+VRpRJchr2kQhqxgmAp2iEX5W96gMM=
122121
github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U=

engine/api/v2_project.go

+2
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ func (api *API) putVCSProjectHandler() ([]service.RbacChecker, service.Handler)
8080
}
8181

8282
vcsProject.ID = vcsOld.ID
83+
vcsProject.Created = vcsOld.Created
84+
vcsProject.CreatedBy = vcsOld.CreatedBy
8385

8486
if err := vcs.Update(ctx, tx, &vcsProject); err != nil {
8587
return err

sdk/cdsclient/client_project_vcs.go

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package cdsclient
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"io"
7+
8+
"github.com/ghodss/yaml"
9+
10+
"github.com/ovh/cds/sdk"
11+
)
12+
13+
func (c *client) ProjectVCSGet(ctx context.Context, projectKey string, vcsName string) (sdk.VCSProject, error) {
14+
path := fmt.Sprintf("/v2/project/%s/vcs/%s", projectKey, vcsName)
15+
var pf sdk.VCSProject
16+
if _, err := c.GetJSON(ctx, path, &pf); err != nil {
17+
return pf, err
18+
}
19+
return pf, nil
20+
}
21+
22+
func (c *client) ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.VCSProject, error) {
23+
path := fmt.Sprintf("/v2/project/%s/vcs", projectKey)
24+
var pfs []sdk.VCSProject
25+
if _, err := c.GetJSON(ctx, path, &pfs); err != nil {
26+
return pfs, err
27+
}
28+
return pfs, nil
29+
}
30+
31+
func (c *client) ProjectVCSDelete(ctx context.Context, projectKey string, vcsName string) error {
32+
path := fmt.Sprintf("/v2/project/%s/vcs/%s", projectKey, vcsName)
33+
var pf sdk.VCSProject
34+
if _, err := c.DeleteJSON(ctx, path, &pf); err != nil {
35+
return err
36+
}
37+
return nil
38+
}
39+
40+
func (c *client) ProjectVCSImport(ctx context.Context, projectKey string, content io.Reader, mods ...RequestModifier) (sdk.VCSProject, error) {
41+
var pf sdk.VCSProject
42+
43+
body, err := io.ReadAll(content)
44+
if err != nil {
45+
return pf, err
46+
}
47+
48+
if err := yaml.Unmarshal(body, &pf); err != nil {
49+
return pf, err
50+
}
51+
52+
oldvcs, _ := c.ProjectVCSGet(ctx, projectKey, pf.Name)
53+
if oldvcs.Name == "" {
54+
path := fmt.Sprintf("/v2/project/%s/vcs", projectKey)
55+
if _, err := c.PostJSON(ctx, path, &pf, &pf, mods...); err != nil {
56+
return pf, err
57+
}
58+
return pf, nil
59+
}
60+
61+
path := fmt.Sprintf("/v2/project/%s/vcs/%s", projectKey, pf.Name)
62+
if _, err := c.PutJSON(ctx, path, &pf, &pf, mods...); err != nil {
63+
return pf, err
64+
}
65+
return pf, nil
66+
}

sdk/cdsclient/interface.go

+4
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,10 @@ type ProjectClient interface {
226226
ProjectAccess(ctx context.Context, projectKey, sessionID string, itemType sdk.CDNItemType) error
227227
ProjectIntegrationWorkerHookGet(projectKey string, integrationName string) (*sdk.WorkerHookProjectIntegrationModel, error)
228228
ProjectIntegrationWorkerHooksImport(projectKey string, integrationName string, hook sdk.WorkerHookProjectIntegrationModel) error
229+
ProjectVCSImport(ctx context.Context, projectKey string, content io.Reader, mods ...RequestModifier) (sdk.VCSProject, error)
230+
ProjectVCSGet(ctx context.Context, projectKey string, integrationName string) (sdk.VCSProject, error)
231+
ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.VCSProject, error)
232+
ProjectVCSDelete(ctx context.Context, projectKey string, integrationName string) error
229233
}
230234

231235
// ProjectKeysClient exposes project keys related functions

0 commit comments

Comments
 (0)