From 389b64dc30a660ca5fef88000c5deb83212a0d8c Mon Sep 17 00:00:00 2001 From: Yvonnick Esnault Date: Mon, 4 Apr 2022 15:38:01 +0200 Subject: [PATCH 1/6] feat(cdsctl,sdk): manage vcs on projects Signed-off-by: Yvonnick Esnault --- cli/cdsctl/project.go | 1 + cli/cdsctl/project_experimental.go | 19 +++ cli/cdsctl/project_integration.go | 4 +- cli/cdsctl/project_vcs.go | 113 ++++++++++++++++ engine/api/v2_project.go | 2 + sdk/cdsclient/client_project_vcs.go | 66 +++++++++ sdk/cdsclient/interface.go | 4 + .../mock_cdsclient/interface_mock.go | 128 ++++++++++++++++++ tests/03_clictl_project_vcs.yml | 27 ++++ tests/fixtures/my_vcs_project.yml | 8 ++ 10 files changed, 370 insertions(+), 2 deletions(-) create mode 100644 cli/cdsctl/project_experimental.go create mode 100644 cli/cdsctl/project_vcs.go create mode 100644 sdk/cdsclient/client_project_vcs.go create mode 100644 tests/03_clictl_project_vcs.yml create mode 100644 tests/fixtures/my_vcs_project.yml diff --git a/cli/cdsctl/project.go b/cli/cdsctl/project.go index 0d7894f171..e09aa9ec69 100644 --- a/cli/cdsctl/project.go +++ b/cli/cdsctl/project.go @@ -29,6 +29,7 @@ func projectCommands() []*cobra.Command { projectKey(), projectVariable(), projectIntegration(), + projectExperimental(), projectRepositoryManager(), } } diff --git a/cli/cdsctl/project_experimental.go b/cli/cdsctl/project_experimental.go new file mode 100644 index 0000000000..ab8a7adc45 --- /dev/null +++ b/cli/cdsctl/project_experimental.go @@ -0,0 +1,19 @@ +package main + +import ( + "github.com/spf13/cobra" + + "github.com/ovh/cds/cli" +) + +var projectExperimentalCmd = cli.Command{ + Name: "experimental", + Aliases: []string{"exp"}, + Short: "CDS Experimental commands", +} + +func projectExperimental() *cobra.Command { + return cli.NewCommand(projectExperimentalCmd, nil, []*cobra.Command{ + projectVCS(), + }) +} diff --git a/cli/cdsctl/project_integration.go b/cli/cdsctl/project_integration.go index 2339336d00..9807b2342d 100644 --- a/cli/cdsctl/project_integration.go +++ b/cli/cdsctl/project_integration.go @@ -62,7 +62,7 @@ func projectIntegrationDeleteFunc(v cli.Values) error { var projectIntegrationImportCmd = cli.Command{ Name: "import", Short: "Import a integration configuration on a project from a yaml file", - Example: "cdsctl integration import MY-PROJECT file.yml", + Example: "cdsctl project integration import MY-PROJECT file.yml", Ctx: []cli.Arg{ {Name: _ProjectKey}, }, @@ -93,7 +93,7 @@ func projectIntegrationImportFunc(v cli.Values) error { var projectIntegrationExportCmd = cli.Command{ Name: "export", Short: "Export a integration configuration from a project to stdout", - Example: "cdsctl integration export MY-PROJECT MY-INTEGRATION-NAME > file.yaml", + Example: "cdsctl project integration export MY-PROJECT MY-INTEGRATION-NAME > file.yaml", Ctx: []cli.Arg{ {Name: _ProjectKey}, }, diff --git a/cli/cdsctl/project_vcs.go b/cli/cdsctl/project_vcs.go new file mode 100644 index 0000000000..b7f5814c4b --- /dev/null +++ b/cli/cdsctl/project_vcs.go @@ -0,0 +1,113 @@ +package main + +import ( + "fmt" + "os" + + "github.com/spf13/cobra" + + "github.com/ovh/cds/cli" + "github.com/ovh/cds/sdk/cdsclient" + "github.com/ovh/cds/sdk/exportentities" +) + +var projectVCSCmd = cli.Command{ + Name: "vcs", + Aliases: []string{"vcs"}, + Short: "Manage VCS on a CDS project", +} + +func projectVCS() *cobra.Command { + return cli.NewCommand(projectVCSCmd, nil, []*cobra.Command{ + cli.NewListCommand(projectVCSListCmd, projectVCSListFunc, nil, withAllCommandModifiers()...), + cli.NewDeleteCommand(projectVCSDeleteCmd, projectVCSDeleteFunc, nil, withAllCommandModifiers()...), + cli.NewCommand(projectVCSImportCmd, projectVCSImportFunc, nil, withAllCommandModifiers()...), + cli.NewCommand(projectVCSExportCmd, projectVCSExportFunc, nil, withAllCommandModifiers()...), + }) +} + +var projectVCSListCmd = cli.Command{ + Name: "list", + Short: "List VCS available on a project", + Ctx: []cli.Arg{ + {Name: _ProjectKey}, + }, +} + +func projectVCSListFunc(v cli.Values) (cli.ListResult, error) { + pfs, err := client.ProjectVCSList(v.GetString(_ProjectKey)) + return cli.AsListResult(pfs), err +} + +var projectVCSDeleteCmd = cli.Command{ + Name: "delete", + Short: "Delete a VCS configuration on a project", + Ctx: []cli.Arg{ + {Name: _ProjectKey}, + }, + Args: []cli.Arg{ + {Name: "name"}, + }, +} + +func projectVCSDeleteFunc(v cli.Values) error { + return client.ProjectVCSDelete(v.GetString(_ProjectKey), v.GetString("name")) +} + +var projectVCSImportCmd = cli.Command{ + Name: "import", + Short: "Import a VCS configuration on a project from a yaml file", + Example: "cdsctl project vcs import MY-PROJECT file.yml", + Ctx: []cli.Arg{ + {Name: _ProjectKey}, + }, + Args: []cli.Arg{ + {Name: "filename"}, + }, + Flags: []cli.Flag{ + {Name: "force", Type: cli.FlagBool}, + }, +} + +func projectVCSImportFunc(v cli.Values) error { + f, err := os.Open(v.GetString("filename")) + if err != nil { + return cli.WrapError(err, "unable to open file %s", v.GetString("filename")) + } + defer f.Close() + + var mods []cdsclient.RequestModifier + if v.GetBool("force") { + mods = append(mods, cdsclient.Force()) + } + + _, err = client.ProjectVCSImport(v.GetString(_ProjectKey), f, mods...) + return err +} + +var projectVCSExportCmd = cli.Command{ + Name: "export", + Short: "Export a VCS configuration from a project to stdout", + Example: "cdsctl vcs export MY-PROJECT MY-VCS-SERVER-NAME > file.yaml", + Ctx: []cli.Arg{ + {Name: _ProjectKey}, + }, + Args: []cli.Arg{ + {Name: "name"}, + }, +} + +func projectVCSExportFunc(v cli.Values) error { + pf, err := client.ProjectVCSGet(v.GetString(_ProjectKey), v.GetString("name")) + if err != nil { + return err + } + + btes, err := exportentities.Marshal(pf, exportentities.FormatYAML) + if err != nil { + return err + } + + fmt.Println(string(btes)) + return nil +} diff --git a/engine/api/v2_project.go b/engine/api/v2_project.go index 80ccedbb35..cc0ca8785d 100644 --- a/engine/api/v2_project.go +++ b/engine/api/v2_project.go @@ -80,6 +80,8 @@ func (api *API) putVCSProjectHandler() ([]service.RbacChecker, service.Handler) } vcsProject.ID = vcsOld.ID + vcsProject.Created = vcsOld.Created + vcsProject.CreatedBy = vcsOld.CreatedBy if err := vcs.Update(ctx, tx, &vcsProject); err != nil { return err diff --git a/sdk/cdsclient/client_project_vcs.go b/sdk/cdsclient/client_project_vcs.go new file mode 100644 index 0000000000..20526026bb --- /dev/null +++ b/sdk/cdsclient/client_project_vcs.go @@ -0,0 +1,66 @@ +package cdsclient + +import ( + "context" + "fmt" + "io" + + "github.com/ghodss/yaml" + + "github.com/ovh/cds/sdk" +) + +func (c *client) ProjectVCSGet(projectKey string, vcsName string) (sdk.ProjectVCSServer, error) { + path := fmt.Sprintf("/v2/project/%s/vcs/%s", projectKey, vcsName) + var pf sdk.ProjectVCSServer + if _, err := c.GetJSON(context.Background(), path, &pf); err != nil { + return pf, err + } + return pf, nil +} + +func (c *client) ProjectVCSList(projectKey string) ([]sdk.ProjectVCSServer, error) { + path := fmt.Sprintf("/v2/project/%s/vcs", projectKey) + var pfs []sdk.ProjectVCSServer + if _, err := c.GetJSON(context.Background(), path, &pfs); err != nil { + return pfs, err + } + return pfs, nil +} + +func (c *client) ProjectVCSDelete(projectKey string, vcsName string) error { + path := fmt.Sprintf("/v2/project/%s/vcs/%s", projectKey, vcsName) + var pf sdk.ProjectVCSServer + if _, err := c.DeleteJSON(context.Background(), path, &pf); err != nil { + return err + } + return nil +} + +func (c *client) ProjectVCSImport(projectKey string, content io.Reader, mods ...RequestModifier) (sdk.ProjectVCSServer, error) { + var pf sdk.ProjectVCSServer + + body, err := io.ReadAll(content) + if err != nil { + return pf, err + } + + if err := yaml.Unmarshal(body, &pf); err != nil { + return pf, err + } + + oldvcs, _ := c.ProjectVCSGet(projectKey, pf.Name) + if oldvcs.Name == "" { + path := fmt.Sprintf("/v2/project/%s/vcs", projectKey) + if _, err := c.PostJSON(context.Background(), path, &pf, &pf, mods...); err != nil { + return pf, err + } + return pf, nil + } + + path := fmt.Sprintf("/v2/project/%s/vcs/%s", projectKey, pf.Name) + if _, err := c.PutJSON(context.Background(), path, &pf, &pf, mods...); err != nil { + return pf, err + } + return pf, nil +} diff --git a/sdk/cdsclient/interface.go b/sdk/cdsclient/interface.go index efc8ba7e52..2027f82979 100644 --- a/sdk/cdsclient/interface.go +++ b/sdk/cdsclient/interface.go @@ -226,6 +226,10 @@ type ProjectClient interface { ProjectAccess(ctx context.Context, projectKey, sessionID string, itemType sdk.CDNItemType) error ProjectIntegrationWorkerHookGet(projectKey string, integrationName string) (*sdk.WorkerHookProjectIntegrationModel, error) ProjectIntegrationWorkerHooksImport(projectKey string, integrationName string, hook sdk.WorkerHookProjectIntegrationModel) error + ProjectVCSImport(projectKey string, content io.Reader, mods ...RequestModifier) (sdk.ProjectVCSServer, error) + ProjectVCSGet(projectKey string, integrationName string) (sdk.ProjectVCSServer, error) + ProjectVCSList(projectKey string) ([]sdk.ProjectVCSServer, error) + ProjectVCSDelete(projectKey string, integrationName string) error } // ProjectKeysClient exposes project keys related functions diff --git a/sdk/cdsclient/mock_cdsclient/interface_mock.go b/sdk/cdsclient/mock_cdsclient/interface_mock.go index 43e5aaefc3..bf23239af9 100644 --- a/sdk/cdsclient/mock_cdsclient/interface_mock.go +++ b/sdk/cdsclient/mock_cdsclient/interface_mock.go @@ -2687,6 +2687,70 @@ func (mr *MockProjectClientMockRecorder) ProjectUpdate(key, project interface{}) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectUpdate", reflect.TypeOf((*MockProjectClient)(nil).ProjectUpdate), key, project) } +// ProjectVCSDelete mocks base method. +func (m *MockProjectClient) ProjectVCSDelete(projectKey, integrationName string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ProjectVCSDelete", projectKey, integrationName) + ret0, _ := ret[0].(error) + return ret0 +} + +// ProjectVCSDelete indicates an expected call of ProjectVCSDelete. +func (mr *MockProjectClientMockRecorder) ProjectVCSDelete(projectKey, integrationName interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSDelete", reflect.TypeOf((*MockProjectClient)(nil).ProjectVCSDelete), projectKey, integrationName) +} + +// ProjectVCSGet mocks base method. +func (m *MockProjectClient) ProjectVCSGet(projectKey, integrationName string) (sdk.ProjectVCSServer, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ProjectVCSGet", projectKey, integrationName) + ret0, _ := ret[0].(sdk.ProjectVCSServer) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ProjectVCSGet indicates an expected call of ProjectVCSGet. +func (mr *MockProjectClientMockRecorder) ProjectVCSGet(projectKey, integrationName interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSGet", reflect.TypeOf((*MockProjectClient)(nil).ProjectVCSGet), projectKey, integrationName) +} + +// ProjectVCSImport mocks base method. +func (m *MockProjectClient) ProjectVCSImport(projectKey string, content io.Reader, mods ...cdsclient.RequestModifier) (sdk.ProjectVCSServer, error) { + m.ctrl.T.Helper() + varargs := []interface{}{projectKey, content} + for _, a := range mods { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ProjectVCSImport", varargs...) + ret0, _ := ret[0].(sdk.ProjectVCSServer) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ProjectVCSImport indicates an expected call of ProjectVCSImport. +func (mr *MockProjectClientMockRecorder) ProjectVCSImport(projectKey, content interface{}, mods ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{projectKey, content}, mods...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSImport", reflect.TypeOf((*MockProjectClient)(nil).ProjectVCSImport), varargs...) +} + +// ProjectVCSList mocks base method. +func (m *MockProjectClient) ProjectVCSList(projectKey string) ([]sdk.ProjectVCSServer, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ProjectVCSList", projectKey) + ret0, _ := ret[0].([]sdk.ProjectVCSServer) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ProjectVCSList indicates an expected call of ProjectVCSList. +func (mr *MockProjectClientMockRecorder) ProjectVCSList(projectKey interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSList", reflect.TypeOf((*MockProjectClient)(nil).ProjectVCSList), projectKey) +} + // ProjectVariableCreate mocks base method. func (m *MockProjectClient) ProjectVariableCreate(projectKey string, variable *sdk.Variable) error { m.ctrl.T.Helper() @@ -6788,6 +6852,70 @@ func (mr *MockInterfaceMockRecorder) ProjectUpdate(key, project interface{}) *go return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectUpdate", reflect.TypeOf((*MockInterface)(nil).ProjectUpdate), key, project) } +// ProjectVCSDelete mocks base method. +func (m *MockInterface) ProjectVCSDelete(projectKey, integrationName string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ProjectVCSDelete", projectKey, integrationName) + ret0, _ := ret[0].(error) + return ret0 +} + +// ProjectVCSDelete indicates an expected call of ProjectVCSDelete. +func (mr *MockInterfaceMockRecorder) ProjectVCSDelete(projectKey, integrationName interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSDelete", reflect.TypeOf((*MockInterface)(nil).ProjectVCSDelete), projectKey, integrationName) +} + +// ProjectVCSGet mocks base method. +func (m *MockInterface) ProjectVCSGet(projectKey, integrationName string) (sdk.ProjectVCSServer, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ProjectVCSGet", projectKey, integrationName) + ret0, _ := ret[0].(sdk.ProjectVCSServer) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ProjectVCSGet indicates an expected call of ProjectVCSGet. +func (mr *MockInterfaceMockRecorder) ProjectVCSGet(projectKey, integrationName interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSGet", reflect.TypeOf((*MockInterface)(nil).ProjectVCSGet), projectKey, integrationName) +} + +// ProjectVCSImport mocks base method. +func (m *MockInterface) ProjectVCSImport(projectKey string, content io.Reader, mods ...cdsclient.RequestModifier) (sdk.ProjectVCSServer, error) { + m.ctrl.T.Helper() + varargs := []interface{}{projectKey, content} + for _, a := range mods { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ProjectVCSImport", varargs...) + ret0, _ := ret[0].(sdk.ProjectVCSServer) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ProjectVCSImport indicates an expected call of ProjectVCSImport. +func (mr *MockInterfaceMockRecorder) ProjectVCSImport(projectKey, content interface{}, mods ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{projectKey, content}, mods...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSImport", reflect.TypeOf((*MockInterface)(nil).ProjectVCSImport), varargs...) +} + +// ProjectVCSList mocks base method. +func (m *MockInterface) ProjectVCSList(projectKey string) ([]sdk.ProjectVCSServer, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ProjectVCSList", projectKey) + ret0, _ := ret[0].([]sdk.ProjectVCSServer) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ProjectVCSList indicates an expected call of ProjectVCSList. +func (mr *MockInterfaceMockRecorder) ProjectVCSList(projectKey interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSList", reflect.TypeOf((*MockInterface)(nil).ProjectVCSList), projectKey) +} + // ProjectVariableCreate mocks base method. func (m *MockInterface) ProjectVariableCreate(projectKey string, variable *sdk.Variable) error { m.ctrl.T.Helper() diff --git a/tests/03_clictl_project_vcs.yml b/tests/03_clictl_project_vcs.yml new file mode 100644 index 0000000000..73254e417f --- /dev/null +++ b/tests/03_clictl_project_vcs.yml @@ -0,0 +1,27 @@ +name: Project VCS Command TestSuite +testcases: +- name: import vcs server + steps: + - script: {{.cdsctl}} -f {{.cdsctl.config}} project vcs import ./fixtures/my_vcs_project.yml + assertions: + - result.code ShouldEqual 0 + +- name: list vcs project + steps: + - script: {{.cdsctl}} -f {{.cdsctl.config}} project vcs list + assertions: + - result.code ShouldEqual 0 + +- name: list vcs project + steps: + - script: {{.cdsctl}} -f {{.cdsctl.config}} project vcs export > my_vcs_project_exported.yml + assertions: + - result.code ShouldEqual 0 + +- name: delete vcs project + steps: + - script: rm my_vcs_project_exported.yml + - script: {{.cdsctl}} -f {{.cdsctl.config}} project vcs delete my_vcs_server + assertions: + - result.code ShouldEqual 0 + diff --git a/tests/fixtures/my_vcs_project.yml b/tests/fixtures/my_vcs_project.yml new file mode 100644 index 0000000000..c0a15e2b9b --- /dev/null +++ b/tests/fixtures/my_vcs_project.yml @@ -0,0 +1,8 @@ +version: v1.0 +name: my_vcs_server +type: bitbucketserver +description: "it's the test vcs server on project" +url: "http://my-vcs-server.localhost" +auth: + user: the-username + password: the-password \ No newline at end of file From da4c8a20cfc1defcfb43672c7ba2d709a67820fd Mon Sep 17 00:00:00 2001 From: Yvonnick Esnault Date: Mon, 4 Apr 2022 16:03:18 +0200 Subject: [PATCH 2/6] chore: make tidy Signed-off-by: Yvonnick Esnault --- Makefile | 2 ++ contrib/grpcplugins/action/plugin-archive/go.sum | 1 - .../action/plugin-artifactory-release-bundle-create/go.sum | 1 - .../action/plugin-artifactory-release-bundle-distribute/go.sum | 1 - contrib/grpcplugins/action/plugin-download/go.sum | 1 - contrib/grpcplugins/action/plugin-group-tmpl/go.sum | 1 - contrib/grpcplugins/action/plugin-kafka-publish/go.sum | 1 - contrib/grpcplugins/action/plugin-marathon/go.mod | 1 + contrib/grpcplugins/action/plugin-marathon/go.sum | 2 +- contrib/grpcplugins/action/plugin-npm-audit-parser/go.sum | 1 - contrib/grpcplugins/action/plugin-ssh-cmd/go.sum | 1 - contrib/grpcplugins/action/plugin-tmpl/go.sum | 1 - contrib/grpcplugins/action/plugin-venom/go.sum | 1 - tests/fixtures/04SCWorkflowRunSimplePlugin/go.sum | 1 - 14 files changed, 4 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index be2b82e080..47a25903b7 100644 --- a/Makefile +++ b/Makefile @@ -115,3 +115,5 @@ tidy: done; @echo "Running tidy on tests/fixtures/04SCWorkflowRunSimplePlugin" @(cd tests/fixtures/04SCWorkflowRunSimplePlugin && go mod tidy) + @(cd sdk/interpolate && go mod tidy) + @(cd tools/smtpmock && go mod tidy) diff --git a/contrib/grpcplugins/action/plugin-archive/go.sum b/contrib/grpcplugins/action/plugin-archive/go.sum index 77e04ce489..da476fafa5 100644 --- a/contrib/grpcplugins/action/plugin-archive/go.sum +++ b/contrib/grpcplugins/action/plugin-archive/go.sum @@ -112,7 +112,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= diff --git a/contrib/grpcplugins/action/plugin-artifactory-release-bundle-create/go.sum b/contrib/grpcplugins/action/plugin-artifactory-release-bundle-create/go.sum index 20b933f5ff..16879e5301 100644 --- a/contrib/grpcplugins/action/plugin-artifactory-release-bundle-create/go.sum +++ b/contrib/grpcplugins/action/plugin-artifactory-release-bundle-create/go.sum @@ -113,7 +113,6 @@ github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJm github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U= github.com/buger/jsonparser v0.0.0-20180910192245-6acdf747ae99/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= diff --git a/contrib/grpcplugins/action/plugin-artifactory-release-bundle-distribute/go.sum b/contrib/grpcplugins/action/plugin-artifactory-release-bundle-distribute/go.sum index b5843c7d08..3270d5a93b 100644 --- a/contrib/grpcplugins/action/plugin-artifactory-release-bundle-distribute/go.sum +++ b/contrib/grpcplugins/action/plugin-artifactory-release-bundle-distribute/go.sum @@ -111,7 +111,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= diff --git a/contrib/grpcplugins/action/plugin-download/go.sum b/contrib/grpcplugins/action/plugin-download/go.sum index 13f877387c..2f2f4b6ec3 100644 --- a/contrib/grpcplugins/action/plugin-download/go.sum +++ b/contrib/grpcplugins/action/plugin-download/go.sum @@ -111,7 +111,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= diff --git a/contrib/grpcplugins/action/plugin-group-tmpl/go.sum b/contrib/grpcplugins/action/plugin-group-tmpl/go.sum index 13f877387c..2f2f4b6ec3 100644 --- a/contrib/grpcplugins/action/plugin-group-tmpl/go.sum +++ b/contrib/grpcplugins/action/plugin-group-tmpl/go.sum @@ -111,7 +111,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= diff --git a/contrib/grpcplugins/action/plugin-kafka-publish/go.sum b/contrib/grpcplugins/action/plugin-kafka-publish/go.sum index 618a3e80ec..6c7bd90456 100644 --- a/contrib/grpcplugins/action/plugin-kafka-publish/go.sum +++ b/contrib/grpcplugins/action/plugin-kafka-publish/go.sum @@ -122,7 +122,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= diff --git a/contrib/grpcplugins/action/plugin-marathon/go.mod b/contrib/grpcplugins/action/plugin-marathon/go.mod index 43392d2e29..0a4e7ead22 100644 --- a/contrib/grpcplugins/action/plugin-marathon/go.mod +++ b/contrib/grpcplugins/action/plugin-marathon/go.mod @@ -32,6 +32,7 @@ require ( github.com/emirpasic/gods v1.12.0 // indirect github.com/fatih/color v1.13.0 // indirect github.com/fsamin/go-dump v1.0.9 // indirect + github.com/ghodss/yaml v1.0.0 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.3.1 // indirect github.com/go-git/go-git/v5 v5.4.2 // indirect diff --git a/contrib/grpcplugins/action/plugin-marathon/go.sum b/contrib/grpcplugins/action/plugin-marathon/go.sum index 4457a36e8c..849fc684e7 100644 --- a/contrib/grpcplugins/action/plugin-marathon/go.sum +++ b/contrib/grpcplugins/action/plugin-marathon/go.sum @@ -116,7 +116,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= 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 github.com/gambol99/go-marathon v0.0.0-20170922093320-ec4a50170df7/go.mod h1:GLyXJD41gBO/NPKVPGQbhyyC06eugGy15QEZyUkE2/s= github.com/gambol99/go-marathon v0.7.1 h1:/dnwXQ0W0UDScpvmcdjzRz3ssnJ/5ieX/q4Xi/QHOn4= github.com/gambol99/go-marathon v0.7.1/go.mod h1:GLyXJD41gBO/NPKVPGQbhyyC06eugGy15QEZyUkE2/s= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= diff --git a/contrib/grpcplugins/action/plugin-npm-audit-parser/go.sum b/contrib/grpcplugins/action/plugin-npm-audit-parser/go.sum index 13f877387c..2f2f4b6ec3 100644 --- a/contrib/grpcplugins/action/plugin-npm-audit-parser/go.sum +++ b/contrib/grpcplugins/action/plugin-npm-audit-parser/go.sum @@ -111,7 +111,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= diff --git a/contrib/grpcplugins/action/plugin-ssh-cmd/go.sum b/contrib/grpcplugins/action/plugin-ssh-cmd/go.sum index 13f877387c..2f2f4b6ec3 100644 --- a/contrib/grpcplugins/action/plugin-ssh-cmd/go.sum +++ b/contrib/grpcplugins/action/plugin-ssh-cmd/go.sum @@ -111,7 +111,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= diff --git a/contrib/grpcplugins/action/plugin-tmpl/go.sum b/contrib/grpcplugins/action/plugin-tmpl/go.sum index 13f877387c..2f2f4b6ec3 100644 --- a/contrib/grpcplugins/action/plugin-tmpl/go.sum +++ b/contrib/grpcplugins/action/plugin-tmpl/go.sum @@ -111,7 +111,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= diff --git a/contrib/grpcplugins/action/plugin-venom/go.sum b/contrib/grpcplugins/action/plugin-venom/go.sum index de2264eb19..dee68fee59 100644 --- a/contrib/grpcplugins/action/plugin-venom/go.sum +++ b/contrib/grpcplugins/action/plugin-venom/go.sum @@ -116,7 +116,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bsm/sarama-cluster v2.1.15+incompatible h1:RkV6WiNRnqEEbp81druK8zYhmnIgdOjqSVi0+9Cnl2A= github.com/bsm/sarama-cluster v2.1.15+incompatible/go.mod h1:r7ao+4tTNXvWm+VRpRJchr2kQhqxgmAp2iEX5W96gMM= github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U= diff --git a/tests/fixtures/04SCWorkflowRunSimplePlugin/go.sum b/tests/fixtures/04SCWorkflowRunSimplePlugin/go.sum index 13f877387c..2f2f4b6ec3 100644 --- a/tests/fixtures/04SCWorkflowRunSimplePlugin/go.sum +++ b/tests/fixtures/04SCWorkflowRunSimplePlugin/go.sum @@ -111,7 +111,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/buger/goterm v0.0.0-20170918171949-d443b9114f9c/go.mod h1:u9UyCz2eTrSGy6fbupqJ54eY5c4IC8gREQ1053dK12U= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= From 0bfe1eae76ff8978a2edb979cfd383d8cce6ad35 Mon Sep 17 00:00:00 2001 From: Yvonnick Esnault Date: Mon, 4 Apr 2022 16:51:47 +0200 Subject: [PATCH 3/6] fix: cr Signed-off-by: Yvonnick Esnault --- cli/cdsctl/experimental.go | 24 +++++++ cli/cdsctl/experimental_project.go | 18 ++++++ ...ect_vcs.go => experimental_project_vcs.go} | 9 +-- cli/cdsctl/main.go | 1 + cli/cdsctl/project.go | 1 - cli/cdsctl/project_experimental.go | 19 ------ sdk/cdsclient/client_project_vcs.go | 20 +++--- sdk/cdsclient/interface.go | 8 +-- .../mock_cdsclient/interface_mock.go | 64 +++++++++---------- tests/03_clictl_project_vcs.yml | 8 +-- 10 files changed, 98 insertions(+), 74 deletions(-) create mode 100644 cli/cdsctl/experimental.go create mode 100644 cli/cdsctl/experimental_project.go rename cli/cdsctl/{project_vcs.go => experimental_project_vcs.go} (86%) delete mode 100644 cli/cdsctl/project_experimental.go diff --git a/cli/cdsctl/experimental.go b/cli/cdsctl/experimental.go new file mode 100644 index 0000000000..a615d152a4 --- /dev/null +++ b/cli/cdsctl/experimental.go @@ -0,0 +1,24 @@ +package main + +import ( + "github.com/spf13/cobra" + + "github.com/ovh/cds/cli" +) + +var experimentalCmd = cli.Command{ + Name: "experimental", + Aliases: []string{"exp"}, + Short: "CDS Experimental commands", + Hidden: true, +} + +func experimentalCommands() []*cobra.Command { + return []*cobra.Command{ + experimentalProject(), + } +} + +func experimental() *cobra.Command { + return cli.NewCommand(experimentalCmd, nil, experimentalCommands()) +} diff --git a/cli/cdsctl/experimental_project.go b/cli/cdsctl/experimental_project.go new file mode 100644 index 0000000000..b080d9a0c1 --- /dev/null +++ b/cli/cdsctl/experimental_project.go @@ -0,0 +1,18 @@ +package main + +import ( + "github.com/spf13/cobra" + + "github.com/ovh/cds/cli" +) + +var experimentalProjectCmd = cli.Command{ + Name: "project", + Short: "CDS Experimental project commands", +} + +func experimentalProject() *cobra.Command { + return cli.NewCommand(experimentalProjectCmd, nil, []*cobra.Command{ + projectVCS(), + }) +} diff --git a/cli/cdsctl/project_vcs.go b/cli/cdsctl/experimental_project_vcs.go similarity index 86% rename from cli/cdsctl/project_vcs.go rename to cli/cdsctl/experimental_project_vcs.go index b7f5814c4b..d10507cb5f 100644 --- a/cli/cdsctl/project_vcs.go +++ b/cli/cdsctl/experimental_project_vcs.go @@ -1,6 +1,7 @@ package main import ( + "context" "fmt" "os" @@ -35,7 +36,7 @@ var projectVCSListCmd = cli.Command{ } func projectVCSListFunc(v cli.Values) (cli.ListResult, error) { - pfs, err := client.ProjectVCSList(v.GetString(_ProjectKey)) + pfs, err := client.ProjectVCSList(context.Background(), v.GetString(_ProjectKey)) return cli.AsListResult(pfs), err } @@ -51,7 +52,7 @@ var projectVCSDeleteCmd = cli.Command{ } func projectVCSDeleteFunc(v cli.Values) error { - return client.ProjectVCSDelete(v.GetString(_ProjectKey), v.GetString("name")) + return client.ProjectVCSDelete(context.Background(), v.GetString(_ProjectKey), v.GetString("name")) } var projectVCSImportCmd = cli.Command{ @@ -81,7 +82,7 @@ func projectVCSImportFunc(v cli.Values) error { mods = append(mods, cdsclient.Force()) } - _, err = client.ProjectVCSImport(v.GetString(_ProjectKey), f, mods...) + _, err = client.ProjectVCSImport(context.Background(), v.GetString(_ProjectKey), f, mods...) return err } @@ -98,7 +99,7 @@ var projectVCSExportCmd = cli.Command{ } func projectVCSExportFunc(v cli.Values) error { - pf, err := client.ProjectVCSGet(v.GetString(_ProjectKey), v.GetString("name")) + pf, err := client.ProjectVCSGet(context.Background(), v.GetString(_ProjectKey), v.GetString("name")) if err != nil { return err } diff --git a/cli/cdsctl/main.go b/cli/cdsctl/main.go index 29313c74e3..419fd07623 100644 --- a/cli/cdsctl/main.go +++ b/cli/cdsctl/main.go @@ -28,6 +28,7 @@ func main() { encrypt(), contexts(), environment(), + experimental(), events(), group(), health(), diff --git a/cli/cdsctl/project.go b/cli/cdsctl/project.go index e09aa9ec69..0d7894f171 100644 --- a/cli/cdsctl/project.go +++ b/cli/cdsctl/project.go @@ -29,7 +29,6 @@ func projectCommands() []*cobra.Command { projectKey(), projectVariable(), projectIntegration(), - projectExperimental(), projectRepositoryManager(), } } diff --git a/cli/cdsctl/project_experimental.go b/cli/cdsctl/project_experimental.go deleted file mode 100644 index ab8a7adc45..0000000000 --- a/cli/cdsctl/project_experimental.go +++ /dev/null @@ -1,19 +0,0 @@ -package main - -import ( - "github.com/spf13/cobra" - - "github.com/ovh/cds/cli" -) - -var projectExperimentalCmd = cli.Command{ - Name: "experimental", - Aliases: []string{"exp"}, - Short: "CDS Experimental commands", -} - -func projectExperimental() *cobra.Command { - return cli.NewCommand(projectExperimentalCmd, nil, []*cobra.Command{ - projectVCS(), - }) -} diff --git a/sdk/cdsclient/client_project_vcs.go b/sdk/cdsclient/client_project_vcs.go index 20526026bb..ed4c713222 100644 --- a/sdk/cdsclient/client_project_vcs.go +++ b/sdk/cdsclient/client_project_vcs.go @@ -10,34 +10,34 @@ import ( "github.com/ovh/cds/sdk" ) -func (c *client) ProjectVCSGet(projectKey string, vcsName string) (sdk.ProjectVCSServer, error) { +func (c *client) ProjectVCSGet(ctx context.Context, projectKey string, vcsName string) (sdk.ProjectVCSServer, error) { path := fmt.Sprintf("/v2/project/%s/vcs/%s", projectKey, vcsName) var pf sdk.ProjectVCSServer - if _, err := c.GetJSON(context.Background(), path, &pf); err != nil { + if _, err := c.GetJSON(ctx, path, &pf); err != nil { return pf, err } return pf, nil } -func (c *client) ProjectVCSList(projectKey string) ([]sdk.ProjectVCSServer, error) { +func (c *client) ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.ProjectVCSServer, error) { path := fmt.Sprintf("/v2/project/%s/vcs", projectKey) var pfs []sdk.ProjectVCSServer - if _, err := c.GetJSON(context.Background(), path, &pfs); err != nil { + if _, err := c.GetJSON(ctx, path, &pfs); err != nil { return pfs, err } return pfs, nil } -func (c *client) ProjectVCSDelete(projectKey string, vcsName string) error { +func (c *client) ProjectVCSDelete(ctx context.Context, projectKey string, vcsName string) error { path := fmt.Sprintf("/v2/project/%s/vcs/%s", projectKey, vcsName) var pf sdk.ProjectVCSServer - if _, err := c.DeleteJSON(context.Background(), path, &pf); err != nil { + if _, err := c.DeleteJSON(ctx, path, &pf); err != nil { return err } return nil } -func (c *client) ProjectVCSImport(projectKey string, content io.Reader, mods ...RequestModifier) (sdk.ProjectVCSServer, error) { +func (c *client) ProjectVCSImport(ctx context.Context, projectKey string, content io.Reader, mods ...RequestModifier) (sdk.ProjectVCSServer, error) { var pf sdk.ProjectVCSServer body, err := io.ReadAll(content) @@ -49,17 +49,17 @@ func (c *client) ProjectVCSImport(projectKey string, content io.Reader, mods ... return pf, err } - oldvcs, _ := c.ProjectVCSGet(projectKey, pf.Name) + oldvcs, _ := c.ProjectVCSGet(ctx, projectKey, pf.Name) if oldvcs.Name == "" { path := fmt.Sprintf("/v2/project/%s/vcs", projectKey) - if _, err := c.PostJSON(context.Background(), path, &pf, &pf, mods...); err != nil { + if _, err := c.PostJSON(ctx, path, &pf, &pf, mods...); err != nil { return pf, err } return pf, nil } path := fmt.Sprintf("/v2/project/%s/vcs/%s", projectKey, pf.Name) - if _, err := c.PutJSON(context.Background(), path, &pf, &pf, mods...); err != nil { + if _, err := c.PutJSON(ctx, path, &pf, &pf, mods...); err != nil { return pf, err } return pf, nil diff --git a/sdk/cdsclient/interface.go b/sdk/cdsclient/interface.go index 2027f82979..1c6bc6c920 100644 --- a/sdk/cdsclient/interface.go +++ b/sdk/cdsclient/interface.go @@ -226,10 +226,10 @@ type ProjectClient interface { ProjectAccess(ctx context.Context, projectKey, sessionID string, itemType sdk.CDNItemType) error ProjectIntegrationWorkerHookGet(projectKey string, integrationName string) (*sdk.WorkerHookProjectIntegrationModel, error) ProjectIntegrationWorkerHooksImport(projectKey string, integrationName string, hook sdk.WorkerHookProjectIntegrationModel) error - ProjectVCSImport(projectKey string, content io.Reader, mods ...RequestModifier) (sdk.ProjectVCSServer, error) - ProjectVCSGet(projectKey string, integrationName string) (sdk.ProjectVCSServer, error) - ProjectVCSList(projectKey string) ([]sdk.ProjectVCSServer, error) - ProjectVCSDelete(projectKey string, integrationName string) error + ProjectVCSImport(ctx context.Context, projectKey string, content io.Reader, mods ...RequestModifier) (sdk.ProjectVCSServer, error) + ProjectVCSGet(ctx context.Context, projectKey string, integrationName string) (sdk.ProjectVCSServer, error) + ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.ProjectVCSServer, error) + ProjectVCSDelete(ctx context.Context, projectKey string, integrationName string) error } // ProjectKeysClient exposes project keys related functions diff --git a/sdk/cdsclient/mock_cdsclient/interface_mock.go b/sdk/cdsclient/mock_cdsclient/interface_mock.go index bf23239af9..2ac8e2b119 100644 --- a/sdk/cdsclient/mock_cdsclient/interface_mock.go +++ b/sdk/cdsclient/mock_cdsclient/interface_mock.go @@ -2688,38 +2688,38 @@ func (mr *MockProjectClientMockRecorder) ProjectUpdate(key, project interface{}) } // ProjectVCSDelete mocks base method. -func (m *MockProjectClient) ProjectVCSDelete(projectKey, integrationName string) error { +func (m *MockProjectClient) ProjectVCSDelete(ctx context.Context, projectKey, integrationName string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ProjectVCSDelete", projectKey, integrationName) + ret := m.ctrl.Call(m, "ProjectVCSDelete", ctx, projectKey, integrationName) ret0, _ := ret[0].(error) return ret0 } // ProjectVCSDelete indicates an expected call of ProjectVCSDelete. -func (mr *MockProjectClientMockRecorder) ProjectVCSDelete(projectKey, integrationName interface{}) *gomock.Call { +func (mr *MockProjectClientMockRecorder) ProjectVCSDelete(ctx, projectKey, integrationName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSDelete", reflect.TypeOf((*MockProjectClient)(nil).ProjectVCSDelete), projectKey, integrationName) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSDelete", reflect.TypeOf((*MockProjectClient)(nil).ProjectVCSDelete), ctx, projectKey, integrationName) } // ProjectVCSGet mocks base method. -func (m *MockProjectClient) ProjectVCSGet(projectKey, integrationName string) (sdk.ProjectVCSServer, error) { +func (m *MockProjectClient) ProjectVCSGet(ctx context.Context, projectKey, integrationName string) (sdk.ProjectVCSServer, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ProjectVCSGet", projectKey, integrationName) + ret := m.ctrl.Call(m, "ProjectVCSGet", ctx, projectKey, integrationName) ret0, _ := ret[0].(sdk.ProjectVCSServer) ret1, _ := ret[1].(error) return ret0, ret1 } // ProjectVCSGet indicates an expected call of ProjectVCSGet. -func (mr *MockProjectClientMockRecorder) ProjectVCSGet(projectKey, integrationName interface{}) *gomock.Call { +func (mr *MockProjectClientMockRecorder) ProjectVCSGet(ctx, projectKey, integrationName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSGet", reflect.TypeOf((*MockProjectClient)(nil).ProjectVCSGet), projectKey, integrationName) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSGet", reflect.TypeOf((*MockProjectClient)(nil).ProjectVCSGet), ctx, projectKey, integrationName) } // ProjectVCSImport mocks base method. -func (m *MockProjectClient) ProjectVCSImport(projectKey string, content io.Reader, mods ...cdsclient.RequestModifier) (sdk.ProjectVCSServer, error) { +func (m *MockProjectClient) ProjectVCSImport(ctx context.Context, projectKey string, content io.Reader, mods ...cdsclient.RequestModifier) (sdk.ProjectVCSServer, error) { m.ctrl.T.Helper() - varargs := []interface{}{projectKey, content} + varargs := []interface{}{ctx, projectKey, content} for _, a := range mods { varargs = append(varargs, a) } @@ -2730,25 +2730,25 @@ func (m *MockProjectClient) ProjectVCSImport(projectKey string, content io.Reade } // ProjectVCSImport indicates an expected call of ProjectVCSImport. -func (mr *MockProjectClientMockRecorder) ProjectVCSImport(projectKey, content interface{}, mods ...interface{}) *gomock.Call { +func (mr *MockProjectClientMockRecorder) ProjectVCSImport(ctx, projectKey, content interface{}, mods ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{projectKey, content}, mods...) + varargs := append([]interface{}{ctx, projectKey, content}, mods...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSImport", reflect.TypeOf((*MockProjectClient)(nil).ProjectVCSImport), varargs...) } // ProjectVCSList mocks base method. -func (m *MockProjectClient) ProjectVCSList(projectKey string) ([]sdk.ProjectVCSServer, error) { +func (m *MockProjectClient) ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.ProjectVCSServer, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ProjectVCSList", projectKey) + ret := m.ctrl.Call(m, "ProjectVCSList", ctx, projectKey) ret0, _ := ret[0].([]sdk.ProjectVCSServer) ret1, _ := ret[1].(error) return ret0, ret1 } // ProjectVCSList indicates an expected call of ProjectVCSList. -func (mr *MockProjectClientMockRecorder) ProjectVCSList(projectKey interface{}) *gomock.Call { +func (mr *MockProjectClientMockRecorder) ProjectVCSList(ctx, projectKey interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSList", reflect.TypeOf((*MockProjectClient)(nil).ProjectVCSList), projectKey) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSList", reflect.TypeOf((*MockProjectClient)(nil).ProjectVCSList), ctx, projectKey) } // ProjectVariableCreate mocks base method. @@ -6853,38 +6853,38 @@ func (mr *MockInterfaceMockRecorder) ProjectUpdate(key, project interface{}) *go } // ProjectVCSDelete mocks base method. -func (m *MockInterface) ProjectVCSDelete(projectKey, integrationName string) error { +func (m *MockInterface) ProjectVCSDelete(ctx context.Context, projectKey, integrationName string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ProjectVCSDelete", projectKey, integrationName) + ret := m.ctrl.Call(m, "ProjectVCSDelete", ctx, projectKey, integrationName) ret0, _ := ret[0].(error) return ret0 } // ProjectVCSDelete indicates an expected call of ProjectVCSDelete. -func (mr *MockInterfaceMockRecorder) ProjectVCSDelete(projectKey, integrationName interface{}) *gomock.Call { +func (mr *MockInterfaceMockRecorder) ProjectVCSDelete(ctx, projectKey, integrationName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSDelete", reflect.TypeOf((*MockInterface)(nil).ProjectVCSDelete), projectKey, integrationName) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSDelete", reflect.TypeOf((*MockInterface)(nil).ProjectVCSDelete), ctx, projectKey, integrationName) } // ProjectVCSGet mocks base method. -func (m *MockInterface) ProjectVCSGet(projectKey, integrationName string) (sdk.ProjectVCSServer, error) { +func (m *MockInterface) ProjectVCSGet(ctx context.Context, projectKey, integrationName string) (sdk.ProjectVCSServer, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ProjectVCSGet", projectKey, integrationName) + ret := m.ctrl.Call(m, "ProjectVCSGet", ctx, projectKey, integrationName) ret0, _ := ret[0].(sdk.ProjectVCSServer) ret1, _ := ret[1].(error) return ret0, ret1 } // ProjectVCSGet indicates an expected call of ProjectVCSGet. -func (mr *MockInterfaceMockRecorder) ProjectVCSGet(projectKey, integrationName interface{}) *gomock.Call { +func (mr *MockInterfaceMockRecorder) ProjectVCSGet(ctx, projectKey, integrationName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSGet", reflect.TypeOf((*MockInterface)(nil).ProjectVCSGet), projectKey, integrationName) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSGet", reflect.TypeOf((*MockInterface)(nil).ProjectVCSGet), ctx, projectKey, integrationName) } // ProjectVCSImport mocks base method. -func (m *MockInterface) ProjectVCSImport(projectKey string, content io.Reader, mods ...cdsclient.RequestModifier) (sdk.ProjectVCSServer, error) { +func (m *MockInterface) ProjectVCSImport(ctx context.Context, projectKey string, content io.Reader, mods ...cdsclient.RequestModifier) (sdk.ProjectVCSServer, error) { m.ctrl.T.Helper() - varargs := []interface{}{projectKey, content} + varargs := []interface{}{ctx, projectKey, content} for _, a := range mods { varargs = append(varargs, a) } @@ -6895,25 +6895,25 @@ func (m *MockInterface) ProjectVCSImport(projectKey string, content io.Reader, m } // ProjectVCSImport indicates an expected call of ProjectVCSImport. -func (mr *MockInterfaceMockRecorder) ProjectVCSImport(projectKey, content interface{}, mods ...interface{}) *gomock.Call { +func (mr *MockInterfaceMockRecorder) ProjectVCSImport(ctx, projectKey, content interface{}, mods ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{projectKey, content}, mods...) + varargs := append([]interface{}{ctx, projectKey, content}, mods...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSImport", reflect.TypeOf((*MockInterface)(nil).ProjectVCSImport), varargs...) } // ProjectVCSList mocks base method. -func (m *MockInterface) ProjectVCSList(projectKey string) ([]sdk.ProjectVCSServer, error) { +func (m *MockInterface) ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.ProjectVCSServer, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ProjectVCSList", projectKey) + ret := m.ctrl.Call(m, "ProjectVCSList", ctx, projectKey) ret0, _ := ret[0].([]sdk.ProjectVCSServer) ret1, _ := ret[1].(error) return ret0, ret1 } // ProjectVCSList indicates an expected call of ProjectVCSList. -func (mr *MockInterfaceMockRecorder) ProjectVCSList(projectKey interface{}) *gomock.Call { +func (mr *MockInterfaceMockRecorder) ProjectVCSList(ctx, projectKey interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSList", reflect.TypeOf((*MockInterface)(nil).ProjectVCSList), projectKey) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProjectVCSList", reflect.TypeOf((*MockInterface)(nil).ProjectVCSList), ctx, projectKey) } // ProjectVariableCreate mocks base method. diff --git a/tests/03_clictl_project_vcs.yml b/tests/03_clictl_project_vcs.yml index 73254e417f..070d921bdd 100644 --- a/tests/03_clictl_project_vcs.yml +++ b/tests/03_clictl_project_vcs.yml @@ -2,26 +2,26 @@ name: Project VCS Command TestSuite testcases: - name: import vcs server steps: - - script: {{.cdsctl}} -f {{.cdsctl.config}} project vcs import ./fixtures/my_vcs_project.yml + - script: {{.cdsctl}} -f {{.cdsctl.config}} experimental project vcs import ./fixtures/my_vcs_project.yml assertions: - result.code ShouldEqual 0 - name: list vcs project steps: - - script: {{.cdsctl}} -f {{.cdsctl.config}} project vcs list + - script: {{.cdsctl}} -f {{.cdsctl.config}} experimental project vcs list assertions: - result.code ShouldEqual 0 - name: list vcs project steps: - - script: {{.cdsctl}} -f {{.cdsctl.config}} project vcs export > my_vcs_project_exported.yml + - script: {{.cdsctl}} -f {{.cdsctl.config}} experimental project vcs export > my_vcs_project_exported.yml assertions: - result.code ShouldEqual 0 - name: delete vcs project steps: - script: rm my_vcs_project_exported.yml - - script: {{.cdsctl}} -f {{.cdsctl.config}} project vcs delete my_vcs_server + - script: {{.cdsctl}} -f {{.cdsctl.config}} experimental project vcs delete my_vcs_server assertions: - result.code ShouldEqual 0 From d27a26985f3eae7661c521da937488593ebd296b Mon Sep 17 00:00:00 2001 From: Yvonnick Esnault Date: Mon, 4 Apr 2022 16:59:07 +0200 Subject: [PATCH 4/6] fix: cr Signed-off-by: Yvonnick Esnault --- sdk/vcs.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/vcs.go b/sdk/vcs.go index cbdf7f6f71..c93af6039d 100644 --- a/sdk/vcs.go +++ b/sdk/vcs.go @@ -180,7 +180,7 @@ type BuildNumberAndHash struct { type VCSProject struct { ID string `json:"id" db:"id"` - Name string `json:"name" db:"name"` + Name string `json:"name" db:"name" cli:"name,key"` Type string `json:"type" db:"type"` Created time.Time `json:"created" db:"created"` LastModified time.Time `json:"last_modified" db:"last_modified"` From 245bdfd28f605b381b99655e36e6b2c64de27d80 Mon Sep 17 00:00:00 2001 From: Yvonnick Esnault Date: Mon, 4 Apr 2022 17:02:17 +0200 Subject: [PATCH 5/6] fix: cr Signed-off-by: Yvonnick Esnault --- sdk/cdsclient/client_project_vcs.go | 14 +++++------ sdk/cdsclient/interface.go | 6 ++--- .../mock_cdsclient/interface_mock.go | 24 +++++++++---------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/sdk/cdsclient/client_project_vcs.go b/sdk/cdsclient/client_project_vcs.go index ed4c713222..822d6055d2 100644 --- a/sdk/cdsclient/client_project_vcs.go +++ b/sdk/cdsclient/client_project_vcs.go @@ -10,18 +10,18 @@ import ( "github.com/ovh/cds/sdk" ) -func (c *client) ProjectVCSGet(ctx context.Context, projectKey string, vcsName string) (sdk.ProjectVCSServer, error) { +func (c *client) ProjectVCSGet(ctx context.Context, projectKey string, vcsName string) (sdk.VCSProject, error) { path := fmt.Sprintf("/v2/project/%s/vcs/%s", projectKey, vcsName) - var pf sdk.ProjectVCSServer + var pf sdk.VCSProject if _, err := c.GetJSON(ctx, path, &pf); err != nil { return pf, err } return pf, nil } -func (c *client) ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.ProjectVCSServer, error) { +func (c *client) ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.VCSProject, error) { path := fmt.Sprintf("/v2/project/%s/vcs", projectKey) - var pfs []sdk.ProjectVCSServer + var pfs []sdk.VCSProject if _, err := c.GetJSON(ctx, path, &pfs); err != nil { return pfs, err } @@ -30,15 +30,15 @@ func (c *client) ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.P func (c *client) ProjectVCSDelete(ctx context.Context, projectKey string, vcsName string) error { path := fmt.Sprintf("/v2/project/%s/vcs/%s", projectKey, vcsName) - var pf sdk.ProjectVCSServer + var pf sdk.VCSProject if _, err := c.DeleteJSON(ctx, path, &pf); err != nil { return err } return nil } -func (c *client) ProjectVCSImport(ctx context.Context, projectKey string, content io.Reader, mods ...RequestModifier) (sdk.ProjectVCSServer, error) { - var pf sdk.ProjectVCSServer +func (c *client) ProjectVCSImport(ctx context.Context, projectKey string, content io.Reader, mods ...RequestModifier) (sdk.VCSProject, error) { + var pf sdk.VCSProject body, err := io.ReadAll(content) if err != nil { diff --git a/sdk/cdsclient/interface.go b/sdk/cdsclient/interface.go index 1c6bc6c920..d64450e101 100644 --- a/sdk/cdsclient/interface.go +++ b/sdk/cdsclient/interface.go @@ -226,9 +226,9 @@ type ProjectClient interface { ProjectAccess(ctx context.Context, projectKey, sessionID string, itemType sdk.CDNItemType) error ProjectIntegrationWorkerHookGet(projectKey string, integrationName string) (*sdk.WorkerHookProjectIntegrationModel, error) ProjectIntegrationWorkerHooksImport(projectKey string, integrationName string, hook sdk.WorkerHookProjectIntegrationModel) error - ProjectVCSImport(ctx context.Context, projectKey string, content io.Reader, mods ...RequestModifier) (sdk.ProjectVCSServer, error) - ProjectVCSGet(ctx context.Context, projectKey string, integrationName string) (sdk.ProjectVCSServer, error) - ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.ProjectVCSServer, error) + ProjectVCSImport(ctx context.Context, projectKey string, content io.Reader, mods ...RequestModifier) (sdk.VCSProject, error) + ProjectVCSGet(ctx context.Context, projectKey string, integrationName string) (sdk.VCSProject, error) + ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.VCSProject, error) ProjectVCSDelete(ctx context.Context, projectKey string, integrationName string) error } diff --git a/sdk/cdsclient/mock_cdsclient/interface_mock.go b/sdk/cdsclient/mock_cdsclient/interface_mock.go index 2ac8e2b119..8fc2046fac 100644 --- a/sdk/cdsclient/mock_cdsclient/interface_mock.go +++ b/sdk/cdsclient/mock_cdsclient/interface_mock.go @@ -2702,10 +2702,10 @@ func (mr *MockProjectClientMockRecorder) ProjectVCSDelete(ctx, projectKey, integ } // ProjectVCSGet mocks base method. -func (m *MockProjectClient) ProjectVCSGet(ctx context.Context, projectKey, integrationName string) (sdk.ProjectVCSServer, error) { +func (m *MockProjectClient) ProjectVCSGet(ctx context.Context, projectKey, integrationName string) (sdk.VCSProject, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ProjectVCSGet", ctx, projectKey, integrationName) - ret0, _ := ret[0].(sdk.ProjectVCSServer) + ret0, _ := ret[0].(sdk.VCSProject) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -2717,14 +2717,14 @@ func (mr *MockProjectClientMockRecorder) ProjectVCSGet(ctx, projectKey, integrat } // ProjectVCSImport mocks base method. -func (m *MockProjectClient) ProjectVCSImport(ctx context.Context, projectKey string, content io.Reader, mods ...cdsclient.RequestModifier) (sdk.ProjectVCSServer, error) { +func (m *MockProjectClient) ProjectVCSImport(ctx context.Context, projectKey string, content io.Reader, mods ...cdsclient.RequestModifier) (sdk.VCSProject, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx, projectKey, content} for _, a := range mods { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "ProjectVCSImport", varargs...) - ret0, _ := ret[0].(sdk.ProjectVCSServer) + ret0, _ := ret[0].(sdk.VCSProject) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -2737,10 +2737,10 @@ func (mr *MockProjectClientMockRecorder) ProjectVCSImport(ctx, projectKey, conte } // ProjectVCSList mocks base method. -func (m *MockProjectClient) ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.ProjectVCSServer, error) { +func (m *MockProjectClient) ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.VCSProject, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ProjectVCSList", ctx, projectKey) - ret0, _ := ret[0].([]sdk.ProjectVCSServer) + ret0, _ := ret[0].([]sdk.VCSProject) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -6867,10 +6867,10 @@ func (mr *MockInterfaceMockRecorder) ProjectVCSDelete(ctx, projectKey, integrati } // ProjectVCSGet mocks base method. -func (m *MockInterface) ProjectVCSGet(ctx context.Context, projectKey, integrationName string) (sdk.ProjectVCSServer, error) { +func (m *MockInterface) ProjectVCSGet(ctx context.Context, projectKey, integrationName string) (sdk.VCSProject, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ProjectVCSGet", ctx, projectKey, integrationName) - ret0, _ := ret[0].(sdk.ProjectVCSServer) + ret0, _ := ret[0].(sdk.VCSProject) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -6882,14 +6882,14 @@ func (mr *MockInterfaceMockRecorder) ProjectVCSGet(ctx, projectKey, integrationN } // ProjectVCSImport mocks base method. -func (m *MockInterface) ProjectVCSImport(ctx context.Context, projectKey string, content io.Reader, mods ...cdsclient.RequestModifier) (sdk.ProjectVCSServer, error) { +func (m *MockInterface) ProjectVCSImport(ctx context.Context, projectKey string, content io.Reader, mods ...cdsclient.RequestModifier) (sdk.VCSProject, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx, projectKey, content} for _, a := range mods { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "ProjectVCSImport", varargs...) - ret0, _ := ret[0].(sdk.ProjectVCSServer) + ret0, _ := ret[0].(sdk.VCSProject) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -6902,10 +6902,10 @@ func (mr *MockInterfaceMockRecorder) ProjectVCSImport(ctx, projectKey, content i } // ProjectVCSList mocks base method. -func (m *MockInterface) ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.ProjectVCSServer, error) { +func (m *MockInterface) ProjectVCSList(ctx context.Context, projectKey string) ([]sdk.VCSProject, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ProjectVCSList", ctx, projectKey) - ret0, _ := ret[0].([]sdk.ProjectVCSServer) + ret0, _ := ret[0].([]sdk.VCSProject) ret1, _ := ret[1].(error) return ret0, ret1 } From 639989bfff40b6e1f2e6c99c9f812ffe4daa9f20 Mon Sep 17 00:00:00 2001 From: Yvonnick Esnault Date: Mon, 4 Apr 2022 21:25:07 +0200 Subject: [PATCH 6/6] fix: cr Signed-off-by: Yvonnick Esnault --- cli/cdsctl/experimental_project_vcs.go | 4 ++-- tests/03_clictl_project_vcs.yml | 32 +++++++++++++------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/cli/cdsctl/experimental_project_vcs.go b/cli/cdsctl/experimental_project_vcs.go index d10507cb5f..e9b58a2339 100644 --- a/cli/cdsctl/experimental_project_vcs.go +++ b/cli/cdsctl/experimental_project_vcs.go @@ -7,9 +7,9 @@ import ( "github.com/spf13/cobra" + yaml "github.com/ghodss/yaml" "github.com/ovh/cds/cli" "github.com/ovh/cds/sdk/cdsclient" - "github.com/ovh/cds/sdk/exportentities" ) var projectVCSCmd = cli.Command{ @@ -104,7 +104,7 @@ func projectVCSExportFunc(v cli.Values) error { return err } - btes, err := exportentities.Marshal(pf, exportentities.FormatYAML) + btes, err := yaml.Marshal(pf) if err != nil { return err } diff --git a/tests/03_clictl_project_vcs.yml b/tests/03_clictl_project_vcs.yml index 070d921bdd..740a994a08 100644 --- a/tests/03_clictl_project_vcs.yml +++ b/tests/03_clictl_project_vcs.yml @@ -1,27 +1,27 @@ name: Project VCS Command TestSuite testcases: -- name: import vcs server +- name: prepare test steps: - - script: {{.cdsctl}} -f {{.cdsctl.config}} experimental project vcs import ./fixtures/my_vcs_project.yml - assertions: - - result.code ShouldEqual 0 + - script: {{.cdsctl}} -f {{.cdsctl.config}} project remove --force ITCLIPRJVCS + - script: {{.cdsctl}} -f {{.cdsctl.config}} group remove ITCLIPRJVCS --force + - script: {{.cdsctl}} -f {{.cdsctl.config}} group add ITCLIPRJVCS + - script: {{.cdsctl}} -f {{.cdsctl.config}} project create ITCLIPRJVCS "Test Project" ITCLIPRJVCS -- name: list vcs project +- name: import / export vcs server steps: - - script: {{.cdsctl}} -f {{.cdsctl.config}} experimental project vcs list - assertions: - - result.code ShouldEqual 0 - -- name: list vcs project - steps: - - script: {{.cdsctl}} -f {{.cdsctl.config}} experimental project vcs export > my_vcs_project_exported.yml - assertions: + - script: {{.cdsctl}} -f {{.cdsctl.config}} experimental project vcs import ITCLIPRJVCS ./fixtures/my_vcs_project.yml + - script: {{.cdsctl}} -f {{.cdsctl.config}} experimental project vcs list ITCLIPRJVCS --format json + assertions: - result.code ShouldEqual 0 + - result.systemoutjson.systemoutjson0.name ShouldEqual "my_vcs_server" + - script: {{.cdsctl}} -f {{.cdsctl.config}} experimental project vcs export ITCLIPRJVCS my_vcs_server > my_vcs_project_exported.yml + - script: grep 'my_vcs_server' my_vcs_project_exported.yml - name: delete vcs project steps: - script: rm my_vcs_project_exported.yml - - script: {{.cdsctl}} -f {{.cdsctl.config}} experimental project vcs delete my_vcs_server - assertions: + - script: {{.cdsctl}} -f {{.cdsctl.config}} experimental project vcs delete ITCLIPRJVCS my_vcs_server --force + - script: {{.cdsctl}} -f {{.cdsctl.config}} experimental project vcs list ITCLIPRJVCS --format json + assertions: - result.code ShouldEqual 0 - + - result.systemoutjson.systemoutjson0.name ShouldNotEqual "my_vcs_server"