Merge pull request #76 from sgotti/configstore_internal_types
configstore: move configstore types inside configstore package
This commit is contained in:
commit
a52b52865c
|
@ -17,8 +17,8 @@ package cmd
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/api"
|
"agola.io/agola/internal/services/gateway/api"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
|
@ -58,13 +58,13 @@ func orgCreate(cmd *cobra.Command, args []string) error {
|
||||||
gwclient := api.NewClient(gatewayURL, token)
|
gwclient := api.NewClient(gatewayURL, token)
|
||||||
|
|
||||||
// TODO(sgotti) make this a custom pflag Value?
|
// TODO(sgotti) make this a custom pflag Value?
|
||||||
if !types.IsValidVisibility(types.Visibility(orgCreateOpts.visibility)) {
|
if !cstypes.IsValidVisibility(cstypes.Visibility(orgCreateOpts.visibility)) {
|
||||||
return errors.Errorf("invalid visibility %q", orgCreateOpts.visibility)
|
return errors.Errorf("invalid visibility %q", orgCreateOpts.visibility)
|
||||||
}
|
}
|
||||||
|
|
||||||
req := &api.CreateOrgRequest{
|
req := &api.CreateOrgRequest{
|
||||||
Name: orgCreateOpts.name,
|
Name: orgCreateOpts.name,
|
||||||
Visibility: types.Visibility(orgCreateOpts.visibility),
|
Visibility: cstypes.Visibility(orgCreateOpts.visibility),
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Infof("creating org")
|
log.Infof("creating org")
|
||||||
|
|
|
@ -17,8 +17,8 @@ package cmd
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/api"
|
"agola.io/agola/internal/services/gateway/api"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
|
@ -63,7 +63,7 @@ func orgMemberAdd(cmd *cobra.Command, args []string) error {
|
||||||
gwclient := api.NewClient(gatewayURL, token)
|
gwclient := api.NewClient(gatewayURL, token)
|
||||||
|
|
||||||
log.Infof("adding/updating member %q to organization %q with role %q", orgMemberAddOpts.username, orgMemberAddOpts.orgname, orgMemberAddOpts.role)
|
log.Infof("adding/updating member %q to organization %q with role %q", orgMemberAddOpts.username, orgMemberAddOpts.orgname, orgMemberAddOpts.role)
|
||||||
_, _, err := gwclient.AddOrgMember(context.TODO(), orgMemberAddOpts.orgname, orgMemberAddOpts.username, types.MemberRole(orgMemberAddOpts.role))
|
_, _, err := gwclient.AddOrgMember(context.TODO(), orgMemberAddOpts.orgname, orgMemberAddOpts.username, cstypes.MemberRole(orgMemberAddOpts.role))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Errorf("failed to add/update organization member: %w", err)
|
return errors.Errorf("failed to add/update organization member: %w", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,8 +17,8 @@ package cmd
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/api"
|
"agola.io/agola/internal/services/gateway/api"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
|
@ -75,14 +75,14 @@ func projectCreate(cmd *cobra.Command, args []string) error {
|
||||||
gwclient := api.NewClient(gatewayURL, token)
|
gwclient := api.NewClient(gatewayURL, token)
|
||||||
|
|
||||||
// TODO(sgotti) make this a custom pflag Value?
|
// TODO(sgotti) make this a custom pflag Value?
|
||||||
if !types.IsValidVisibility(types.Visibility(projectCreateOpts.visibility)) {
|
if !cstypes.IsValidVisibility(cstypes.Visibility(projectCreateOpts.visibility)) {
|
||||||
return errors.Errorf("invalid visibility %q", projectCreateOpts.visibility)
|
return errors.Errorf("invalid visibility %q", projectCreateOpts.visibility)
|
||||||
}
|
}
|
||||||
|
|
||||||
req := &api.CreateProjectRequest{
|
req := &api.CreateProjectRequest{
|
||||||
Name: projectCreateOpts.name,
|
Name: projectCreateOpts.name,
|
||||||
ParentRef: projectCreateOpts.parentPath,
|
ParentRef: projectCreateOpts.parentPath,
|
||||||
Visibility: types.Visibility(projectCreateOpts.visibility),
|
Visibility: cstypes.Visibility(projectCreateOpts.visibility),
|
||||||
RepoPath: projectCreateOpts.repoPath,
|
RepoPath: projectCreateOpts.repoPath,
|
||||||
RemoteSourceName: projectCreateOpts.remoteSourceName,
|
RemoteSourceName: projectCreateOpts.remoteSourceName,
|
||||||
SkipSSHHostKeyCheck: projectCreateOpts.skipSSHHostKeyCheck,
|
SkipSSHHostKeyCheck: projectCreateOpts.skipSSHHostKeyCheck,
|
||||||
|
|
|
@ -17,8 +17,8 @@ package cmd
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/api"
|
"agola.io/agola/internal/services/gateway/api"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
|
@ -63,14 +63,14 @@ func projectGroupCreate(cmd *cobra.Command, args []string) error {
|
||||||
gwclient := api.NewClient(gatewayURL, token)
|
gwclient := api.NewClient(gatewayURL, token)
|
||||||
|
|
||||||
// TODO(sgotti) make this a custom pflag Value?
|
// TODO(sgotti) make this a custom pflag Value?
|
||||||
if !types.IsValidVisibility(types.Visibility(projectCreateOpts.visibility)) {
|
if !cstypes.IsValidVisibility(cstypes.Visibility(projectCreateOpts.visibility)) {
|
||||||
return errors.Errorf("invalid visibility %q", projectCreateOpts.visibility)
|
return errors.Errorf("invalid visibility %q", projectCreateOpts.visibility)
|
||||||
}
|
}
|
||||||
|
|
||||||
req := &api.CreateProjectGroupRequest{
|
req := &api.CreateProjectGroupRequest{
|
||||||
Name: projectGroupCreateOpts.name,
|
Name: projectGroupCreateOpts.name,
|
||||||
ParentRef: projectGroupCreateOpts.parentPath,
|
ParentRef: projectGroupCreateOpts.parentPath,
|
||||||
Visibility: types.Visibility(projectCreateOpts.visibility),
|
Visibility: cstypes.Visibility(projectCreateOpts.visibility),
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Infof("creating project group")
|
log.Infof("creating project group")
|
||||||
|
|
|
@ -19,8 +19,8 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/api"
|
"agola.io/agola/internal/services/gateway/api"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
|
|
||||||
"github.com/ghodss/yaml"
|
"github.com/ghodss/yaml"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
@ -96,7 +96,7 @@ func secretCreate(cmd *cobra.Command, ownertype string, args []string) error {
|
||||||
}
|
}
|
||||||
req := &api.CreateSecretRequest{
|
req := &api.CreateSecretRequest{
|
||||||
Name: secretCreateOpts.name,
|
Name: secretCreateOpts.name,
|
||||||
Type: types.SecretTypeInternal,
|
Type: cstypes.SecretTypeInternal,
|
||||||
Data: secretData,
|
Data: secretData,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,8 +19,8 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/api"
|
"agola.io/agola/internal/services/gateway/api"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
|
|
||||||
"github.com/ghodss/yaml"
|
"github.com/ghodss/yaml"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
@ -98,7 +98,7 @@ func secretUpdate(cmd *cobra.Command, ownertype string, args []string) error {
|
||||||
}
|
}
|
||||||
req := &api.UpdateSecretRequest{
|
req := &api.UpdateSecretRequest{
|
||||||
Name: secretUpdateOpts.name,
|
Name: secretUpdateOpts.name,
|
||||||
Type: types.SecretTypeInternal,
|
Type: cstypes.SecretTypeInternal,
|
||||||
Data: secretData,
|
Data: secretData,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,8 @@ import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"agola.io/agola/internal/config"
|
"agola.io/agola/internal/config"
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/api"
|
"agola.io/agola/internal/services/gateway/api"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
|
|
||||||
"github.com/ghodss/yaml"
|
"github.com/ghodss/yaml"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
@ -117,12 +117,12 @@ func variableCreate(cmd *cobra.Command, ownertype string, args []string) error {
|
||||||
if err := yaml.Unmarshal(data, &values); err != nil {
|
if err := yaml.Unmarshal(data, &values); err != nil {
|
||||||
log.Fatalf("failed to unmarshal values: %v", err)
|
log.Fatalf("failed to unmarshal values: %v", err)
|
||||||
}
|
}
|
||||||
rvalues := []types.VariableValue{}
|
rvalues := []cstypes.VariableValue{}
|
||||||
for _, value := range values {
|
for _, value := range values {
|
||||||
rvalues = append(rvalues, types.VariableValue{
|
rvalues = append(rvalues, cstypes.VariableValue{
|
||||||
SecretName: value.SecretName,
|
SecretName: value.SecretName,
|
||||||
SecretVar: value.SecretVar,
|
SecretVar: value.SecretVar,
|
||||||
When: (*types.When)(value.When),
|
When: (*cstypes.When)(value.When),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
req := &api.CreateVariableRequest{
|
req := &api.CreateVariableRequest{
|
||||||
|
|
|
@ -19,8 +19,8 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/api"
|
"agola.io/agola/internal/services/gateway/api"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
|
|
||||||
"github.com/ghodss/yaml"
|
"github.com/ghodss/yaml"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
@ -89,12 +89,12 @@ func variableUpdate(cmd *cobra.Command, ownertype string, args []string) error {
|
||||||
if err := yaml.Unmarshal(data, &values); err != nil {
|
if err := yaml.Unmarshal(data, &values); err != nil {
|
||||||
log.Fatalf("failed to unmarshall values: %v", err)
|
log.Fatalf("failed to unmarshall values: %v", err)
|
||||||
}
|
}
|
||||||
rvalues := []types.VariableValue{}
|
rvalues := []cstypes.VariableValue{}
|
||||||
for _, value := range values {
|
for _, value := range values {
|
||||||
rvalues = append(rvalues, types.VariableValue{
|
rvalues = append(rvalues, cstypes.VariableValue{
|
||||||
SecretName: value.SecretName,
|
SecretName: value.SecretName,
|
||||||
SecretVar: value.SecretVar,
|
SecretVar: value.SecretVar,
|
||||||
When: (*types.When)(value.When),
|
When: (*cstypes.When)(value.When),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
req := &api.UpdateVariableRequest{
|
req := &api.UpdateVariableRequest{
|
||||||
|
|
|
@ -18,8 +18,8 @@ import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"agola.io/agola/internal/gitsources/github"
|
"agola.io/agola/internal/gitsources/github"
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/api"
|
"agola.io/agola/internal/services/gateway/api"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
@ -84,7 +84,7 @@ func remoteSourceCreate(cmd *cobra.Command, args []string) error {
|
||||||
gwclient := api.NewClient(gatewayURL, token)
|
gwclient := api.NewClient(gatewayURL, token)
|
||||||
|
|
||||||
// for github remote source type, set defaults for github.com
|
// for github remote source type, set defaults for github.com
|
||||||
if remoteSourceCreateOpts.rsType == string(types.RemoteSourceTypeGithub) {
|
if remoteSourceCreateOpts.rsType == string(cstypes.RemoteSourceTypeGithub) {
|
||||||
remoteSourceCreateOpts.apiURL = github.GitHubAPIURL
|
remoteSourceCreateOpts.apiURL = github.GitHubAPIURL
|
||||||
remoteSourceCreateOpts.sshHostKey = github.GitHubSSHHostKey
|
remoteSourceCreateOpts.sshHostKey = github.GitHubSSHHostKey
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"agola.io/agola/internal/common"
|
"agola.io/agola/internal/common"
|
||||||
"agola.io/agola/internal/services/types"
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
"github.com/ghodss/yaml"
|
"github.com/ghodss/yaml"
|
||||||
|
@ -445,7 +445,7 @@ func (val *Value) UnmarshalJSON(b []byte) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type When types.When
|
type When cstypes.When
|
||||||
|
|
||||||
type when struct {
|
type when struct {
|
||||||
Branch interface{} `json:"branch"`
|
Branch interface{} `json:"branch"`
|
||||||
|
@ -485,8 +485,8 @@ func (w *When) UnmarshalJSON(b []byte) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseWhenConditions(wi interface{}) (*types.WhenConditions, error) {
|
func parseWhenConditions(wi interface{}) (*cstypes.WhenConditions, error) {
|
||||||
w := &types.WhenConditions{}
|
w := &cstypes.WhenConditions{}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
include := []string{}
|
include := []string{}
|
||||||
|
@ -534,12 +534,12 @@ func parseWhenConditions(wi interface{}) (*types.WhenConditions, error) {
|
||||||
return w, nil
|
return w, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseWhenConditionSlice(conds []string) ([]types.WhenCondition, error) {
|
func parseWhenConditionSlice(conds []string) ([]cstypes.WhenCondition, error) {
|
||||||
if len(conds) == 0 {
|
if len(conds) == 0 {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
wcs := []types.WhenCondition{}
|
wcs := []cstypes.WhenCondition{}
|
||||||
for _, cond := range conds {
|
for _, cond := range conds {
|
||||||
wc, err := parseWhenCondition(cond)
|
wc, err := parseWhenCondition(cond)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -551,7 +551,7 @@ func parseWhenConditionSlice(conds []string) ([]types.WhenCondition, error) {
|
||||||
return wcs, nil
|
return wcs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseWhenCondition(s string) (*types.WhenCondition, error) {
|
func parseWhenCondition(s string) (*cstypes.WhenCondition, error) {
|
||||||
isRegExp := false
|
isRegExp := false
|
||||||
if len(s) > 2 {
|
if len(s) > 2 {
|
||||||
for _, d := range regExpDelimiters {
|
for _, d := range regExpDelimiters {
|
||||||
|
@ -563,15 +563,15 @@ func parseWhenCondition(s string) (*types.WhenCondition, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wc := &types.WhenCondition{Match: s}
|
wc := &cstypes.WhenCondition{Match: s}
|
||||||
|
|
||||||
if isRegExp {
|
if isRegExp {
|
||||||
if _, err := regexp.Compile(s); err != nil {
|
if _, err := regexp.Compile(s); err != nil {
|
||||||
return nil, errors.Errorf("wrong regular expression: %w", err)
|
return nil, errors.Errorf("wrong regular expression: %w", err)
|
||||||
}
|
}
|
||||||
wc.Type = types.WhenConditionTypeRegExp
|
wc.Type = cstypes.WhenConditionTypeRegExp
|
||||||
} else {
|
} else {
|
||||||
wc.Type = types.WhenConditionTypeSimple
|
wc.Type = cstypes.WhenConditionTypeSimple
|
||||||
}
|
}
|
||||||
return wc, nil
|
return wc, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
|
|
|
@ -19,8 +19,8 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"agola.io/agola/internal/config"
|
"agola.io/agola/internal/config"
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
rstypes "agola.io/agola/internal/services/runservice/types"
|
rstypes "agola.io/agola/internal/services/runservice/types"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
|
@ -48,11 +48,11 @@ func genRuntime(c *config.Config, ce *config.Runtime, variables map[string]strin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func whenFromConfigWhen(cw *config.When) *types.When {
|
func whenFromConfigWhen(cw *config.When) *cstypes.When {
|
||||||
if cw == nil {
|
if cw == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return &types.When{
|
return &cstypes.When{
|
||||||
Branch: cw.Branch,
|
Branch: cw.Branch,
|
||||||
Tag: cw.Tag,
|
Tag: cw.Tag,
|
||||||
Ref: cw.Ref,
|
Ref: cw.Ref,
|
||||||
|
@ -194,7 +194,7 @@ func GenRunConfigTasks(uuid util.UUIDGenerator, c *config.Config, runName string
|
||||||
rcts := map[string]*rstypes.RunConfigTask{}
|
rcts := map[string]*rstypes.RunConfigTask{}
|
||||||
|
|
||||||
for _, ct := range cr.Tasks {
|
for _, ct := range cr.Tasks {
|
||||||
include := types.MatchWhen(whenFromConfigWhen(ct.When), branch, tag, ref)
|
include := cstypes.MatchWhen(whenFromConfigWhen(ct.When), branch, tag, ref)
|
||||||
|
|
||||||
steps := make(rstypes.Steps, len(ct.Steps))
|
steps := make(rstypes.Steps, len(ct.Steps))
|
||||||
for i, cpts := range ct.Steps {
|
for i, cpts := range ct.Steps {
|
||||||
|
|
|
@ -20,8 +20,8 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"agola.io/agola/internal/config"
|
"agola.io/agola/internal/config"
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
rstypes "agola.io/agola/internal/services/runservice/types"
|
rstypes "agola.io/agola/internal/services/runservice/types"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
|
@ -706,11 +706,11 @@ func TestGenRunConfig(t *testing.T) {
|
||||||
IgnoreFailure: false,
|
IgnoreFailure: false,
|
||||||
Approval: false,
|
Approval: false,
|
||||||
When: &config.When{
|
When: &config.When{
|
||||||
Branch: &types.WhenConditions{Include: []types.WhenCondition{{Match: "master"}}},
|
Branch: &cstypes.WhenConditions{Include: []cstypes.WhenCondition{{Match: "master"}}},
|
||||||
Tag: &types.WhenConditions{Include: []types.WhenCondition{{Match: "v1.x"}, {Match: "v2.x"}}},
|
Tag: &cstypes.WhenConditions{Include: []cstypes.WhenCondition{{Match: "v1.x"}, {Match: "v2.x"}}},
|
||||||
Ref: &types.WhenConditions{
|
Ref: &cstypes.WhenConditions{
|
||||||
Include: []types.WhenCondition{{Match: "master"}},
|
Include: []cstypes.WhenCondition{{Match: "master"}},
|
||||||
Exclude: []types.WhenCondition{{Match: "branch01", Type: types.WhenConditionTypeRegExp}, {Match: "branch02"}},
|
Exclude: []cstypes.WhenCondition{{Match: "branch01", Type: cstypes.WhenConditionTypeRegExp}, {Match: "branch02"}},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -19,12 +19,12 @@ import (
|
||||||
"agola.io/agola/internal/gitsources/gitea"
|
"agola.io/agola/internal/gitsources/gitea"
|
||||||
"agola.io/agola/internal/gitsources/github"
|
"agola.io/agola/internal/gitsources/github"
|
||||||
"agola.io/agola/internal/gitsources/gitlab"
|
"agola.io/agola/internal/gitsources/gitlab"
|
||||||
"agola.io/agola/internal/services/types"
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
|
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newGitea(rs *types.RemoteSource, accessToken string) (*gitea.Client, error) {
|
func newGitea(rs *cstypes.RemoteSource, accessToken string) (*gitea.Client, error) {
|
||||||
return gitea.New(gitea.Opts{
|
return gitea.New(gitea.Opts{
|
||||||
APIURL: rs.APIURL,
|
APIURL: rs.APIURL,
|
||||||
SkipVerify: rs.SkipVerify,
|
SkipVerify: rs.SkipVerify,
|
||||||
|
@ -34,7 +34,7 @@ func newGitea(rs *types.RemoteSource, accessToken string) (*gitea.Client, error)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func newGitlab(rs *types.RemoteSource, accessToken string) (*gitlab.Client, error) {
|
func newGitlab(rs *cstypes.RemoteSource, accessToken string) (*gitlab.Client, error) {
|
||||||
return gitlab.New(gitlab.Opts{
|
return gitlab.New(gitlab.Opts{
|
||||||
APIURL: rs.APIURL,
|
APIURL: rs.APIURL,
|
||||||
SkipVerify: rs.SkipVerify,
|
SkipVerify: rs.SkipVerify,
|
||||||
|
@ -44,7 +44,7 @@ func newGitlab(rs *types.RemoteSource, accessToken string) (*gitlab.Client, erro
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func newGithub(rs *types.RemoteSource, accessToken string) (*github.Client, error) {
|
func newGithub(rs *cstypes.RemoteSource, accessToken string) (*github.Client, error) {
|
||||||
return github.New(github.Opts{
|
return github.New(github.Opts{
|
||||||
APIURL: rs.APIURL,
|
APIURL: rs.APIURL,
|
||||||
SkipVerify: rs.SkipVerify,
|
SkipVerify: rs.SkipVerify,
|
||||||
|
@ -54,18 +54,18 @@ func newGithub(rs *types.RemoteSource, accessToken string) (*github.Client, erro
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetAccessToken(rs *types.RemoteSource, userAccessToken, oauth2AccessToken string) (string, error) {
|
func GetAccessToken(rs *cstypes.RemoteSource, userAccessToken, oauth2AccessToken string) (string, error) {
|
||||||
switch rs.AuthType {
|
switch rs.AuthType {
|
||||||
case types.RemoteSourceAuthTypePassword:
|
case cstypes.RemoteSourceAuthTypePassword:
|
||||||
return userAccessToken, nil
|
return userAccessToken, nil
|
||||||
case types.RemoteSourceAuthTypeOauth2:
|
case cstypes.RemoteSourceAuthTypeOauth2:
|
||||||
return oauth2AccessToken, nil
|
return oauth2AccessToken, nil
|
||||||
default:
|
default:
|
||||||
return "", errors.Errorf("invalid remote source auth type %q", rs.AuthType)
|
return "", errors.Errorf("invalid remote source auth type %q", rs.AuthType)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetGitSource(rs *types.RemoteSource, la *types.LinkedAccount) (gitsource.GitSource, error) {
|
func GetGitSource(rs *cstypes.RemoteSource, la *cstypes.LinkedAccount) (gitsource.GitSource, error) {
|
||||||
var accessToken string
|
var accessToken string
|
||||||
if la != nil {
|
if la != nil {
|
||||||
var err error
|
var err error
|
||||||
|
@ -78,11 +78,11 @@ func GetGitSource(rs *types.RemoteSource, la *types.LinkedAccount) (gitsource.Gi
|
||||||
var gitSource gitsource.GitSource
|
var gitSource gitsource.GitSource
|
||||||
var err error
|
var err error
|
||||||
switch rs.Type {
|
switch rs.Type {
|
||||||
case types.RemoteSourceTypeGitea:
|
case cstypes.RemoteSourceTypeGitea:
|
||||||
gitSource, err = newGitea(rs, accessToken)
|
gitSource, err = newGitea(rs, accessToken)
|
||||||
case types.RemoteSourceTypeGitlab:
|
case cstypes.RemoteSourceTypeGitlab:
|
||||||
gitSource, err = newGitlab(rs, accessToken)
|
gitSource, err = newGitlab(rs, accessToken)
|
||||||
case types.RemoteSourceTypeGithub:
|
case cstypes.RemoteSourceTypeGithub:
|
||||||
gitSource, err = newGithub(rs, accessToken)
|
gitSource, err = newGithub(rs, accessToken)
|
||||||
default:
|
default:
|
||||||
return nil, errors.Errorf("remote source %s isn't a valid git source", rs.Name)
|
return nil, errors.Errorf("remote source %s isn't a valid git source", rs.Name)
|
||||||
|
@ -91,13 +91,13 @@ func GetGitSource(rs *types.RemoteSource, la *types.LinkedAccount) (gitsource.Gi
|
||||||
return gitSource, err
|
return gitSource, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetUserSource(rs *types.RemoteSource, accessToken string) (gitsource.UserSource, error) {
|
func GetUserSource(rs *cstypes.RemoteSource, accessToken string) (gitsource.UserSource, error) {
|
||||||
var userSource gitsource.UserSource
|
var userSource gitsource.UserSource
|
||||||
var err error
|
var err error
|
||||||
switch rs.AuthType {
|
switch rs.AuthType {
|
||||||
case types.RemoteSourceAuthTypeOauth2:
|
case cstypes.RemoteSourceAuthTypeOauth2:
|
||||||
userSource, err = GetOauth2Source(rs, accessToken)
|
userSource, err = GetOauth2Source(rs, accessToken)
|
||||||
case types.RemoteSourceAuthTypePassword:
|
case cstypes.RemoteSourceAuthTypePassword:
|
||||||
userSource, err = GetPasswordSource(rs, accessToken)
|
userSource, err = GetPasswordSource(rs, accessToken)
|
||||||
default:
|
default:
|
||||||
return nil, errors.Errorf("unknown remote source auth type")
|
return nil, errors.Errorf("unknown remote source auth type")
|
||||||
|
@ -106,15 +106,15 @@ func GetUserSource(rs *types.RemoteSource, accessToken string) (gitsource.UserSo
|
||||||
return userSource, err
|
return userSource, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetOauth2Source(rs *types.RemoteSource, accessToken string) (gitsource.Oauth2Source, error) {
|
func GetOauth2Source(rs *cstypes.RemoteSource, accessToken string) (gitsource.Oauth2Source, error) {
|
||||||
var oauth2Source gitsource.Oauth2Source
|
var oauth2Source gitsource.Oauth2Source
|
||||||
var err error
|
var err error
|
||||||
switch rs.Type {
|
switch rs.Type {
|
||||||
case types.RemoteSourceTypeGitea:
|
case cstypes.RemoteSourceTypeGitea:
|
||||||
oauth2Source, err = newGitea(rs, accessToken)
|
oauth2Source, err = newGitea(rs, accessToken)
|
||||||
case types.RemoteSourceTypeGitlab:
|
case cstypes.RemoteSourceTypeGitlab:
|
||||||
oauth2Source, err = newGitlab(rs, accessToken)
|
oauth2Source, err = newGitlab(rs, accessToken)
|
||||||
case types.RemoteSourceTypeGithub:
|
case cstypes.RemoteSourceTypeGithub:
|
||||||
oauth2Source, err = newGithub(rs, accessToken)
|
oauth2Source, err = newGithub(rs, accessToken)
|
||||||
default:
|
default:
|
||||||
return nil, errors.Errorf("remote source %s isn't a valid oauth2 source", rs.Name)
|
return nil, errors.Errorf("remote source %s isn't a valid oauth2 source", rs.Name)
|
||||||
|
@ -123,11 +123,11 @@ func GetOauth2Source(rs *types.RemoteSource, accessToken string) (gitsource.Oaut
|
||||||
return oauth2Source, err
|
return oauth2Source, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetPasswordSource(rs *types.RemoteSource, accessToken string) (gitsource.PasswordSource, error) {
|
func GetPasswordSource(rs *cstypes.RemoteSource, accessToken string) (gitsource.PasswordSource, error) {
|
||||||
var passwordSource gitsource.PasswordSource
|
var passwordSource gitsource.PasswordSource
|
||||||
var err error
|
var err error
|
||||||
switch rs.Type {
|
switch rs.Type {
|
||||||
case types.RemoteSourceTypeGitea:
|
case cstypes.RemoteSourceTypeGitea:
|
||||||
passwordSource, err = newGitea(rs, accessToken)
|
passwordSource, err = newGitea(rs, accessToken)
|
||||||
default:
|
default:
|
||||||
return nil, errors.Errorf("remote source %s isn't a valid oauth2 source", rs.Name)
|
return nil, errors.Errorf("remote source %s isn't a valid oauth2 source", rs.Name)
|
||||||
|
|
|
@ -16,7 +16,7 @@ package common
|
||||||
|
|
||||||
import (
|
import (
|
||||||
csapi "agola.io/agola/internal/services/configstore/api"
|
csapi "agola.io/agola/internal/services/configstore/api"
|
||||||
"agola.io/agola/internal/services/types"
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ func FilterOverriddenVariables(variables []*csapi.Variable) []*csapi.Variable {
|
||||||
return filteredVariables
|
return filteredVariables
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetVarValueMatchingSecret(varval types.VariableValue, varParentPath string, secrets []*csapi.Secret) *csapi.Secret {
|
func GetVarValueMatchingSecret(varval cstypes.VariableValue, varParentPath string, secrets []*csapi.Secret) *csapi.Secret {
|
||||||
// get the secret value referenced by the variable, it must be a secret at the same level or a lower level
|
// get the secret value referenced by the variable, it must be a secret at the same level or a lower level
|
||||||
var secret *csapi.Secret
|
var secret *csapi.Secret
|
||||||
for _, s := range secrets {
|
for _, s := range secrets {
|
||||||
|
|
|
@ -18,7 +18,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
csapi "agola.io/agola/internal/services/configstore/api"
|
csapi "agola.io/agola/internal/services/configstore/api"
|
||||||
"agola.io/agola/internal/services/types"
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -39,37 +39,37 @@ func TestFilterOverriddenVariables(t *testing.T) {
|
||||||
// variables must be in depth (from leaves to root) order as returned by the
|
// variables must be in depth (from leaves to root) order as returned by the
|
||||||
// configstore apis
|
// configstore apis
|
||||||
&csapi.Variable{
|
&csapi.Variable{
|
||||||
Variable: &types.Variable{
|
Variable: &cstypes.Variable{
|
||||||
Name: "var04",
|
Name: "var04",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup02/projectgroup03/project02",
|
ParentPath: "org/org01/projectgroup02/projectgroup03/project02",
|
||||||
},
|
},
|
||||||
&csapi.Variable{
|
&csapi.Variable{
|
||||||
Variable: &types.Variable{
|
Variable: &cstypes.Variable{
|
||||||
Name: "var03",
|
Name: "var03",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01/project01",
|
ParentPath: "org/org01/projectgroup01/project01",
|
||||||
},
|
},
|
||||||
&csapi.Variable{
|
&csapi.Variable{
|
||||||
Variable: &types.Variable{
|
Variable: &cstypes.Variable{
|
||||||
Name: "var02",
|
Name: "var02",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01/project01",
|
ParentPath: "org/org01/projectgroup01/project01",
|
||||||
},
|
},
|
||||||
&csapi.Variable{
|
&csapi.Variable{
|
||||||
Variable: &types.Variable{
|
Variable: &cstypes.Variable{
|
||||||
Name: "var02",
|
Name: "var02",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01",
|
ParentPath: "org/org01/projectgroup01",
|
||||||
},
|
},
|
||||||
&csapi.Variable{
|
&csapi.Variable{
|
||||||
Variable: &types.Variable{
|
Variable: &cstypes.Variable{
|
||||||
Name: "var01",
|
Name: "var01",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01",
|
ParentPath: "org/org01/projectgroup01",
|
||||||
},
|
},
|
||||||
&csapi.Variable{
|
&csapi.Variable{
|
||||||
Variable: &types.Variable{
|
Variable: &cstypes.Variable{
|
||||||
Name: "var01",
|
Name: "var01",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01",
|
ParentPath: "org/org01",
|
||||||
|
@ -77,25 +77,25 @@ func TestFilterOverriddenVariables(t *testing.T) {
|
||||||
},
|
},
|
||||||
out: []*csapi.Variable{
|
out: []*csapi.Variable{
|
||||||
&csapi.Variable{
|
&csapi.Variable{
|
||||||
Variable: &types.Variable{
|
Variable: &cstypes.Variable{
|
||||||
Name: "var04",
|
Name: "var04",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup02/projectgroup03/project02",
|
ParentPath: "org/org01/projectgroup02/projectgroup03/project02",
|
||||||
},
|
},
|
||||||
&csapi.Variable{
|
&csapi.Variable{
|
||||||
Variable: &types.Variable{
|
Variable: &cstypes.Variable{
|
||||||
Name: "var03",
|
Name: "var03",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01/project01",
|
ParentPath: "org/org01/projectgroup01/project01",
|
||||||
},
|
},
|
||||||
&csapi.Variable{
|
&csapi.Variable{
|
||||||
Variable: &types.Variable{
|
Variable: &cstypes.Variable{
|
||||||
Name: "var02",
|
Name: "var02",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01/project01",
|
ParentPath: "org/org01/projectgroup01/project01",
|
||||||
},
|
},
|
||||||
&csapi.Variable{
|
&csapi.Variable{
|
||||||
Variable: &types.Variable{
|
Variable: &cstypes.Variable{
|
||||||
Name: "var01",
|
Name: "var01",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01",
|
ParentPath: "org/org01/projectgroup01",
|
||||||
|
@ -118,14 +118,14 @@ func TestFilterOverriddenVariables(t *testing.T) {
|
||||||
func TestGetVarValueMatchingSecret(t *testing.T) {
|
func TestGetVarValueMatchingSecret(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
varValue types.VariableValue
|
varValue cstypes.VariableValue
|
||||||
varParentPath string
|
varParentPath string
|
||||||
secrets []*csapi.Secret
|
secrets []*csapi.Secret
|
||||||
out *csapi.Secret
|
out *csapi.Secret
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "test empty secrets",
|
name: "test empty secrets",
|
||||||
varValue: types.VariableValue{
|
varValue: cstypes.VariableValue{
|
||||||
SecretName: "secret01",
|
SecretName: "secret01",
|
||||||
SecretVar: "secretvar01",
|
SecretVar: "secretvar01",
|
||||||
},
|
},
|
||||||
|
@ -135,14 +135,14 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "test secret with different name",
|
name: "test secret with different name",
|
||||||
varValue: types.VariableValue{
|
varValue: cstypes.VariableValue{
|
||||||
SecretName: "secret01",
|
SecretName: "secret01",
|
||||||
SecretVar: "secretvar01",
|
SecretVar: "secretvar01",
|
||||||
},
|
},
|
||||||
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||||
secrets: []*csapi.Secret{
|
secrets: []*csapi.Secret{
|
||||||
&csapi.Secret{
|
&csapi.Secret{
|
||||||
Secret: &types.Secret{
|
Secret: &cstypes.Secret{
|
||||||
Name: "secret02",
|
Name: "secret02",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01/projectgroup02",
|
ParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||||
|
@ -152,14 +152,14 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "test secret with tree",
|
name: "test secret with tree",
|
||||||
varValue: types.VariableValue{
|
varValue: cstypes.VariableValue{
|
||||||
SecretName: "secret01",
|
SecretName: "secret01",
|
||||||
SecretVar: "secretvar01",
|
SecretVar: "secretvar01",
|
||||||
},
|
},
|
||||||
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||||
secrets: []*csapi.Secret{
|
secrets: []*csapi.Secret{
|
||||||
&csapi.Secret{
|
&csapi.Secret{
|
||||||
Secret: &types.Secret{
|
Secret: &cstypes.Secret{
|
||||||
Name: "secret02",
|
Name: "secret02",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01/projectgroup03",
|
ParentPath: "org/org01/projectgroup01/projectgroup03",
|
||||||
|
@ -169,14 +169,14 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "test secret in child of variable parent",
|
name: "test secret in child of variable parent",
|
||||||
varValue: types.VariableValue{
|
varValue: cstypes.VariableValue{
|
||||||
SecretName: "secret01",
|
SecretName: "secret01",
|
||||||
SecretVar: "secretvar01",
|
SecretVar: "secretvar01",
|
||||||
},
|
},
|
||||||
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||||
secrets: []*csapi.Secret{
|
secrets: []*csapi.Secret{
|
||||||
&csapi.Secret{
|
&csapi.Secret{
|
||||||
Secret: &types.Secret{
|
Secret: &cstypes.Secret{
|
||||||
Name: "secret01",
|
Name: "secret01",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01/projectgroup02/project01",
|
ParentPath: "org/org01/projectgroup01/projectgroup02/project01",
|
||||||
|
@ -186,27 +186,27 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "test secret in same parent and also child of variable parent",
|
name: "test secret in same parent and also child of variable parent",
|
||||||
varValue: types.VariableValue{
|
varValue: cstypes.VariableValue{
|
||||||
SecretName: "secret01",
|
SecretName: "secret01",
|
||||||
SecretVar: "secretvar01",
|
SecretVar: "secretvar01",
|
||||||
},
|
},
|
||||||
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||||
secrets: []*csapi.Secret{
|
secrets: []*csapi.Secret{
|
||||||
&csapi.Secret{
|
&csapi.Secret{
|
||||||
Secret: &types.Secret{
|
Secret: &cstypes.Secret{
|
||||||
Name: "secret01",
|
Name: "secret01",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01/projectgroup02/project01",
|
ParentPath: "org/org01/projectgroup01/projectgroup02/project01",
|
||||||
},
|
},
|
||||||
&csapi.Secret{
|
&csapi.Secret{
|
||||||
Secret: &types.Secret{
|
Secret: &cstypes.Secret{
|
||||||
Name: "secret01",
|
Name: "secret01",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01/projectgroup02",
|
ParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
out: &csapi.Secret{
|
out: &csapi.Secret{
|
||||||
Secret: &types.Secret{
|
Secret: &cstypes.Secret{
|
||||||
Name: "secret01",
|
Name: "secret01",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01/projectgroup02",
|
ParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||||
|
@ -214,21 +214,21 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "test secret in parent",
|
name: "test secret in parent",
|
||||||
varValue: types.VariableValue{
|
varValue: cstypes.VariableValue{
|
||||||
SecretName: "secret01",
|
SecretName: "secret01",
|
||||||
SecretVar: "secretvar01",
|
SecretVar: "secretvar01",
|
||||||
},
|
},
|
||||||
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||||
secrets: []*csapi.Secret{
|
secrets: []*csapi.Secret{
|
||||||
&csapi.Secret{
|
&csapi.Secret{
|
||||||
Secret: &types.Secret{
|
Secret: &cstypes.Secret{
|
||||||
Name: "secret01",
|
Name: "secret01",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01",
|
ParentPath: "org/org01/projectgroup01",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
out: &csapi.Secret{
|
out: &csapi.Secret{
|
||||||
Secret: &types.Secret{
|
Secret: &cstypes.Secret{
|
||||||
Name: "secret01",
|
Name: "secret01",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01",
|
ParentPath: "org/org01/projectgroup01",
|
||||||
|
@ -236,7 +236,7 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "test multiple secrets in same branch and also child of variable parent",
|
name: "test multiple secrets in same branch and also child of variable parent",
|
||||||
varValue: types.VariableValue{
|
varValue: cstypes.VariableValue{
|
||||||
SecretName: "secret01",
|
SecretName: "secret01",
|
||||||
SecretVar: "secretvar01",
|
SecretVar: "secretvar01",
|
||||||
},
|
},
|
||||||
|
@ -245,26 +245,26 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
||||||
// secrets must be in depth (from leaves to root) order as returned by the
|
// secrets must be in depth (from leaves to root) order as returned by the
|
||||||
// configstore apis
|
// configstore apis
|
||||||
&csapi.Secret{
|
&csapi.Secret{
|
||||||
Secret: &types.Secret{
|
Secret: &cstypes.Secret{
|
||||||
Name: "secret01",
|
Name: "secret01",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01/projectgroup02/project01",
|
ParentPath: "org/org01/projectgroup01/projectgroup02/project01",
|
||||||
},
|
},
|
||||||
&csapi.Secret{
|
&csapi.Secret{
|
||||||
Secret: &types.Secret{
|
Secret: &cstypes.Secret{
|
||||||
Name: "secret01",
|
Name: "secret01",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01/projectgroup02",
|
ParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||||
},
|
},
|
||||||
&csapi.Secret{
|
&csapi.Secret{
|
||||||
Secret: &types.Secret{
|
Secret: &cstypes.Secret{
|
||||||
Name: "secret01",
|
Name: "secret01",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01",
|
ParentPath: "org/org01/projectgroup01",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
out: &csapi.Secret{
|
out: &csapi.Secret{
|
||||||
Secret: &types.Secret{
|
Secret: &cstypes.Secret{
|
||||||
Name: "secret01",
|
Name: "secret01",
|
||||||
},
|
},
|
||||||
ParentPath: "org/org01/projectgroup01/projectgroup02",
|
ParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||||
|
|
|
@ -23,7 +23,7 @@ import (
|
||||||
"agola.io/agola/internal/datamanager"
|
"agola.io/agola/internal/datamanager"
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/configstore/readdb"
|
"agola.io/agola/internal/services/configstore/readdb"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
uuid "github.com/satori/go.uuid"
|
uuid "github.com/satori/go.uuid"
|
||||||
|
|
|
@ -21,7 +21,7 @@ import (
|
||||||
|
|
||||||
"agola.io/agola/internal/datamanager"
|
"agola.io/agola/internal/datamanager"
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
uuid "github.com/satori/go.uuid"
|
uuid "github.com/satori/go.uuid"
|
||||||
|
|
|
@ -21,7 +21,7 @@ import (
|
||||||
|
|
||||||
"agola.io/agola/internal/datamanager"
|
"agola.io/agola/internal/datamanager"
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
uuid "github.com/satori/go.uuid"
|
uuid "github.com/satori/go.uuid"
|
||||||
|
|
|
@ -20,7 +20,7 @@ import (
|
||||||
|
|
||||||
"agola.io/agola/internal/datamanager"
|
"agola.io/agola/internal/datamanager"
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
uuid "github.com/satori/go.uuid"
|
uuid "github.com/satori/go.uuid"
|
||||||
|
|
|
@ -20,7 +20,7 @@ import (
|
||||||
|
|
||||||
"agola.io/agola/internal/datamanager"
|
"agola.io/agola/internal/datamanager"
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
uuid "github.com/satori/go.uuid"
|
uuid "github.com/satori/go.uuid"
|
||||||
|
|
|
@ -22,7 +22,7 @@ import (
|
||||||
"agola.io/agola/internal/datamanager"
|
"agola.io/agola/internal/datamanager"
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/configstore/readdb"
|
"agola.io/agola/internal/services/configstore/readdb"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
uuid "github.com/satori/go.uuid"
|
uuid "github.com/satori/go.uuid"
|
||||||
|
|
|
@ -20,7 +20,7 @@ import (
|
||||||
|
|
||||||
"agola.io/agola/internal/datamanager"
|
"agola.io/agola/internal/datamanager"
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
uuid "github.com/satori/go.uuid"
|
uuid "github.com/satori/go.uuid"
|
||||||
|
|
|
@ -19,7 +19,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
|
|
|
@ -26,7 +26,7 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
|
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
)
|
)
|
||||||
|
|
|
@ -22,7 +22,7 @@ import (
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/configstore/action"
|
"agola.io/agola/internal/services/configstore/action"
|
||||||
"agola.io/agola/internal/services/configstore/readdb"
|
"agola.io/agola/internal/services/configstore/readdb"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ import (
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/configstore/action"
|
"agola.io/agola/internal/services/configstore/action"
|
||||||
"agola.io/agola/internal/services/configstore/readdb"
|
"agola.io/agola/internal/services/configstore/readdb"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ import (
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/configstore/action"
|
"agola.io/agola/internal/services/configstore/action"
|
||||||
"agola.io/agola/internal/services/configstore/readdb"
|
"agola.io/agola/internal/services/configstore/readdb"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ import (
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/configstore/action"
|
"agola.io/agola/internal/services/configstore/action"
|
||||||
"agola.io/agola/internal/services/configstore/readdb"
|
"agola.io/agola/internal/services/configstore/readdb"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ import (
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/configstore/action"
|
"agola.io/agola/internal/services/configstore/action"
|
||||||
"agola.io/agola/internal/services/configstore/readdb"
|
"agola.io/agola/internal/services/configstore/readdb"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
|
|
@ -23,7 +23,7 @@ import (
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
action "agola.io/agola/internal/services/configstore/action"
|
action "agola.io/agola/internal/services/configstore/action"
|
||||||
"agola.io/agola/internal/services/configstore/readdb"
|
"agola.io/agola/internal/services/configstore/readdb"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ import (
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/configstore/action"
|
"agola.io/agola/internal/services/configstore/action"
|
||||||
"agola.io/agola/internal/services/configstore/readdb"
|
"agola.io/agola/internal/services/configstore/readdb"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
|
|
@ -32,7 +32,7 @@ import (
|
||||||
"agola.io/agola/internal/services/configstore/api"
|
"agola.io/agola/internal/services/configstore/api"
|
||||||
"agola.io/agola/internal/services/configstore/common"
|
"agola.io/agola/internal/services/configstore/common"
|
||||||
"agola.io/agola/internal/services/configstore/readdb"
|
"agola.io/agola/internal/services/configstore/readdb"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
|
|
@ -30,7 +30,7 @@ import (
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/config"
|
"agola.io/agola/internal/services/config"
|
||||||
action "agola.io/agola/internal/services/configstore/action"
|
action "agola.io/agola/internal/services/configstore/action"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/testutil"
|
"agola.io/agola/internal/testutil"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ import (
|
||||||
|
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/configstore/common"
|
"agola.io/agola/internal/services/configstore/common"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
sq "github.com/Masterminds/squirrel"
|
sq "github.com/Masterminds/squirrel"
|
||||||
|
|
|
@ -22,7 +22,7 @@ import (
|
||||||
|
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/configstore/common"
|
"agola.io/agola/internal/services/configstore/common"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
sq "github.com/Masterminds/squirrel"
|
sq "github.com/Masterminds/squirrel"
|
||||||
|
|
|
@ -22,7 +22,7 @@ import (
|
||||||
|
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/configstore/common"
|
"agola.io/agola/internal/services/configstore/common"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
sq "github.com/Masterminds/squirrel"
|
sq "github.com/Masterminds/squirrel"
|
||||||
|
|
|
@ -30,7 +30,7 @@ import (
|
||||||
"agola.io/agola/internal/objectstorage"
|
"agola.io/agola/internal/objectstorage"
|
||||||
ostypes "agola.io/agola/internal/objectstorage/types"
|
ostypes "agola.io/agola/internal/objectstorage/types"
|
||||||
"agola.io/agola/internal/sequence"
|
"agola.io/agola/internal/sequence"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
sq "github.com/Masterminds/squirrel"
|
sq "github.com/Masterminds/squirrel"
|
||||||
|
|
|
@ -21,7 +21,7 @@ import (
|
||||||
|
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/configstore/common"
|
"agola.io/agola/internal/services/configstore/common"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
sq "github.com/Masterminds/squirrel"
|
sq "github.com/Masterminds/squirrel"
|
||||||
|
|
|
@ -18,7 +18,7 @@ import (
|
||||||
"path"
|
"path"
|
||||||
|
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
)
|
)
|
||||||
|
|
|
@ -19,7 +19,7 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
sq "github.com/Masterminds/squirrel"
|
sq "github.com/Masterminds/squirrel"
|
||||||
|
|
|
@ -20,7 +20,7 @@ import (
|
||||||
|
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/configstore/common"
|
"agola.io/agola/internal/services/configstore/common"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
sq "github.com/Masterminds/squirrel"
|
sq "github.com/Masterminds/squirrel"
|
||||||
|
|
|
@ -19,7 +19,7 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
"agola.io/agola/internal/db"
|
"agola.io/agola/internal/db"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
sq "github.com/Masterminds/squirrel"
|
sq "github.com/Masterminds/squirrel"
|
||||||
|
|
|
@ -18,7 +18,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"agola.io/agola/internal/services/common"
|
"agola.io/agola/internal/services/common"
|
||||||
"agola.io/agola/internal/services/types"
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
|
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
)
|
)
|
||||||
|
@ -68,7 +68,7 @@ func (h *ActionHandler) IsOrgOwner(ctx context.Context, orgID string) (bool, err
|
||||||
if userOrg.Organization.ID != orgID {
|
if userOrg.Organization.ID != orgID {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if userOrg.Role == types.MemberRoleOwner {
|
if userOrg.Role == cstypes.MemberRoleOwner {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ func (h *ActionHandler) IsOrgOwner(ctx context.Context, orgID string) (bool, err
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) IsProjectOwner(ctx context.Context, ownerType types.ConfigType, ownerID string) (bool, error) {
|
func (h *ActionHandler) IsProjectOwner(ctx context.Context, ownerType cstypes.ConfigType, ownerID string) (bool, error) {
|
||||||
isAdmin := h.IsUserAdmin(ctx)
|
isAdmin := h.IsUserAdmin(ctx)
|
||||||
if isAdmin {
|
if isAdmin {
|
||||||
return true, nil
|
return true, nil
|
||||||
|
@ -87,13 +87,13 @@ func (h *ActionHandler) IsProjectOwner(ctx context.Context, ownerType types.Conf
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if ownerType == types.ConfigTypeUser {
|
if ownerType == cstypes.ConfigTypeUser {
|
||||||
if userID == ownerID {
|
if userID == ownerID {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ownerType == types.ConfigTypeOrg {
|
if ownerType == cstypes.ConfigTypeOrg {
|
||||||
userOrgs, resp, err := h.configstoreClient.GetUserOrgs(ctx, userID)
|
userOrgs, resp, err := h.configstoreClient.GetUserOrgs(ctx, userID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, errors.Errorf("failed to get user orgs: %w", ErrFromRemote(resp, err))
|
return false, errors.Errorf("failed to get user orgs: %w", ErrFromRemote(resp, err))
|
||||||
|
@ -103,7 +103,7 @@ func (h *ActionHandler) IsProjectOwner(ctx context.Context, ownerType types.Conf
|
||||||
if userOrg.Organization.ID != ownerID {
|
if userOrg.Organization.ID != ownerID {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if userOrg.Role == types.MemberRoleOwner {
|
if userOrg.Role == cstypes.MemberRoleOwner {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ func (h *ActionHandler) IsProjectOwner(ctx context.Context, ownerType types.Conf
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) IsProjectMember(ctx context.Context, ownerType types.ConfigType, ownerID string) (bool, error) {
|
func (h *ActionHandler) IsProjectMember(ctx context.Context, ownerType cstypes.ConfigType, ownerID string) (bool, error) {
|
||||||
isAdmin := h.IsUserAdmin(ctx)
|
isAdmin := h.IsUserAdmin(ctx)
|
||||||
if isAdmin {
|
if isAdmin {
|
||||||
return true, nil
|
return true, nil
|
||||||
|
@ -123,13 +123,13 @@ func (h *ActionHandler) IsProjectMember(ctx context.Context, ownerType types.Con
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if ownerType == types.ConfigTypeUser {
|
if ownerType == cstypes.ConfigTypeUser {
|
||||||
if userID == ownerID {
|
if userID == ownerID {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ownerType == types.ConfigTypeOrg {
|
if ownerType == cstypes.ConfigTypeOrg {
|
||||||
userOrgs, resp, err := h.configstoreClient.GetUserOrgs(ctx, userID)
|
userOrgs, resp, err := h.configstoreClient.GetUserOrgs(ctx, userID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, errors.Errorf("failed to get user orgs: %w", ErrFromRemote(resp, err))
|
return false, errors.Errorf("failed to get user orgs: %w", ErrFromRemote(resp, err))
|
||||||
|
@ -146,18 +146,18 @@ func (h *ActionHandler) IsProjectMember(ctx context.Context, ownerType types.Con
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) IsVariableOwner(ctx context.Context, parentType types.ConfigType, parentRef string) (bool, error) {
|
func (h *ActionHandler) IsVariableOwner(ctx context.Context, parentType cstypes.ConfigType, parentRef string) (bool, error) {
|
||||||
var ownerType types.ConfigType
|
var ownerType cstypes.ConfigType
|
||||||
var ownerID string
|
var ownerID string
|
||||||
switch parentType {
|
switch parentType {
|
||||||
case types.ConfigTypeProjectGroup:
|
case cstypes.ConfigTypeProjectGroup:
|
||||||
pg, resp, err := h.configstoreClient.GetProjectGroup(ctx, parentRef)
|
pg, resp, err := h.configstoreClient.GetProjectGroup(ctx, parentRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, errors.Errorf("failed to get project group %q: %w", parentRef, ErrFromRemote(resp, err))
|
return false, errors.Errorf("failed to get project group %q: %w", parentRef, ErrFromRemote(resp, err))
|
||||||
}
|
}
|
||||||
ownerType = pg.OwnerType
|
ownerType = pg.OwnerType
|
||||||
ownerID = pg.OwnerID
|
ownerID = pg.OwnerID
|
||||||
case types.ConfigTypeProject:
|
case cstypes.ConfigTypeProject:
|
||||||
p, resp, err := h.configstoreClient.GetProject(ctx, parentRef)
|
p, resp, err := h.configstoreClient.GetProject(ctx, parentRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, errors.Errorf("failed to get project %q: %w", parentRef, ErrFromRemote(resp, err))
|
return false, errors.Errorf("failed to get project %q: %w", parentRef, ErrFromRemote(resp, err))
|
||||||
|
@ -175,8 +175,8 @@ func (h *ActionHandler) CanGetRun(ctx context.Context, runGroup string) (bool, e
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var visibility types.Visibility
|
var visibility cstypes.Visibility
|
||||||
var ownerType types.ConfigType
|
var ownerType cstypes.ConfigType
|
||||||
var ownerID string
|
var ownerID string
|
||||||
switch groupType {
|
switch groupType {
|
||||||
case common.GroupTypeProject:
|
case common.GroupTypeProject:
|
||||||
|
@ -189,12 +189,12 @@ func (h *ActionHandler) CanGetRun(ctx context.Context, runGroup string) (bool, e
|
||||||
visibility = p.GlobalVisibility
|
visibility = p.GlobalVisibility
|
||||||
case common.GroupTypeUser:
|
case common.GroupTypeUser:
|
||||||
// user direct runs
|
// user direct runs
|
||||||
ownerType = types.ConfigTypeUser
|
ownerType = cstypes.ConfigTypeUser
|
||||||
ownerID = groupID
|
ownerID = groupID
|
||||||
visibility = types.VisibilityPrivate
|
visibility = cstypes.VisibilityPrivate
|
||||||
}
|
}
|
||||||
|
|
||||||
if visibility == types.VisibilityPublic {
|
if visibility == cstypes.VisibilityPublic {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
isProjectMember, err := h.IsProjectMember(ctx, ownerType, ownerID)
|
isProjectMember, err := h.IsProjectMember(ctx, ownerType, ownerID)
|
||||||
|
@ -213,7 +213,7 @@ func (h *ActionHandler) CanDoRunActions(ctx context.Context, runGroup string) (b
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var ownerType types.ConfigType
|
var ownerType cstypes.ConfigType
|
||||||
var ownerID string
|
var ownerID string
|
||||||
switch groupType {
|
switch groupType {
|
||||||
case common.GroupTypeProject:
|
case common.GroupTypeProject:
|
||||||
|
@ -225,7 +225,7 @@ func (h *ActionHandler) CanDoRunActions(ctx context.Context, runGroup string) (b
|
||||||
ownerID = p.OwnerID
|
ownerID = p.OwnerID
|
||||||
case common.GroupTypeUser:
|
case common.GroupTypeUser:
|
||||||
// user direct runs
|
// user direct runs
|
||||||
ownerType = types.ConfigTypeUser
|
ownerType = cstypes.ConfigTypeUser
|
||||||
ownerID = groupID
|
ownerID = groupID
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,13 +17,13 @@ package action
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"agola.io/agola/internal/services/types"
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (h *ActionHandler) GetOrg(ctx context.Context, orgRef string) (*types.Organization, error) {
|
func (h *ActionHandler) GetOrg(ctx context.Context, orgRef string) (*cstypes.Organization, error) {
|
||||||
org, resp, err := h.configstoreClient.GetOrg(ctx, orgRef)
|
org, resp, err := h.configstoreClient.GetOrg(ctx, orgRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, ErrFromRemote(resp, err)
|
return nil, ErrFromRemote(resp, err)
|
||||||
|
@ -37,7 +37,7 @@ type GetOrgsRequest struct {
|
||||||
Asc bool
|
Asc bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) GetOrgs(ctx context.Context, req *GetOrgsRequest) ([]*types.Organization, error) {
|
func (h *ActionHandler) GetOrgs(ctx context.Context, req *GetOrgsRequest) ([]*cstypes.Organization, error) {
|
||||||
orgs, resp, err := h.configstoreClient.GetOrgs(ctx, req.Start, req.Limit, req.Asc)
|
orgs, resp, err := h.configstoreClient.GetOrgs(ctx, req.Start, req.Limit, req.Asc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, ErrFromRemote(resp, err)
|
return nil, ErrFromRemote(resp, err)
|
||||||
|
@ -46,13 +46,13 @@ func (h *ActionHandler) GetOrgs(ctx context.Context, req *GetOrgsRequest) ([]*ty
|
||||||
}
|
}
|
||||||
|
|
||||||
type OrgMembersResponse struct {
|
type OrgMembersResponse struct {
|
||||||
Organization *types.Organization
|
Organization *cstypes.Organization
|
||||||
Members []*OrgMemberResponse
|
Members []*OrgMemberResponse
|
||||||
}
|
}
|
||||||
|
|
||||||
type OrgMemberResponse struct {
|
type OrgMemberResponse struct {
|
||||||
User *types.User
|
User *cstypes.User
|
||||||
Role types.MemberRole
|
Role cstypes.MemberRole
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) GetOrgMembers(ctx context.Context, orgRef string) (*OrgMembersResponse, error) {
|
func (h *ActionHandler) GetOrgMembers(ctx context.Context, orgRef string) (*OrgMembersResponse, error) {
|
||||||
|
@ -81,12 +81,12 @@ func (h *ActionHandler) GetOrgMembers(ctx context.Context, orgRef string) (*OrgM
|
||||||
|
|
||||||
type CreateOrgRequest struct {
|
type CreateOrgRequest struct {
|
||||||
Name string
|
Name string
|
||||||
Visibility types.Visibility
|
Visibility cstypes.Visibility
|
||||||
|
|
||||||
CreatorUserID string
|
CreatorUserID string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) CreateOrg(ctx context.Context, req *CreateOrgRequest) (*types.Organization, error) {
|
func (h *ActionHandler) CreateOrg(ctx context.Context, req *CreateOrgRequest) (*cstypes.Organization, error) {
|
||||||
if !h.IsUserLoggedOrAdmin(ctx) {
|
if !h.IsUserLoggedOrAdmin(ctx) {
|
||||||
return nil, errors.Errorf("user not logged in")
|
return nil, errors.Errorf("user not logged in")
|
||||||
}
|
}
|
||||||
|
@ -98,7 +98,7 @@ func (h *ActionHandler) CreateOrg(ctx context.Context, req *CreateOrgRequest) (*
|
||||||
return nil, util.NewErrBadRequest(errors.Errorf("invalid organization name %q", req.Name))
|
return nil, util.NewErrBadRequest(errors.Errorf("invalid organization name %q", req.Name))
|
||||||
}
|
}
|
||||||
|
|
||||||
org := &types.Organization{
|
org := &cstypes.Organization{
|
||||||
Name: req.Name,
|
Name: req.Name,
|
||||||
Visibility: req.Visibility,
|
Visibility: req.Visibility,
|
||||||
}
|
}
|
||||||
|
@ -138,12 +138,12 @@ func (h *ActionHandler) DeleteOrg(ctx context.Context, orgRef string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
type AddOrgMemberResponse struct {
|
type AddOrgMemberResponse struct {
|
||||||
OrganizationMember *types.OrganizationMember
|
OrganizationMember *cstypes.OrganizationMember
|
||||||
Org *types.Organization
|
Org *cstypes.Organization
|
||||||
User *types.User
|
User *cstypes.User
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) AddOrgMember(ctx context.Context, orgRef, userRef string, role types.MemberRole) (*AddOrgMemberResponse, error) {
|
func (h *ActionHandler) AddOrgMember(ctx context.Context, orgRef, userRef string, role cstypes.MemberRole) (*AddOrgMemberResponse, error) {
|
||||||
org, resp, err := h.configstoreClient.GetOrg(ctx, orgRef)
|
org, resp, err := h.configstoreClient.GetOrg(ctx, orgRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, ErrFromRemote(resp, err)
|
return nil, ErrFromRemote(resp, err)
|
||||||
|
|
|
@ -23,6 +23,7 @@ import (
|
||||||
|
|
||||||
gitsource "agola.io/agola/internal/gitsources"
|
gitsource "agola.io/agola/internal/gitsources"
|
||||||
csapi "agola.io/agola/internal/services/configstore/api"
|
csapi "agola.io/agola/internal/services/configstore/api"
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
|
@ -39,7 +40,7 @@ func (h *ActionHandler) GetProject(ctx context.Context, projectRef string) (*csa
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Errorf("failed to determine ownership: %w", err)
|
return nil, errors.Errorf("failed to determine ownership: %w", err)
|
||||||
}
|
}
|
||||||
if project.GlobalVisibility == types.VisibilityPublic {
|
if project.GlobalVisibility == cstypes.VisibilityPublic {
|
||||||
return project, nil
|
return project, nil
|
||||||
}
|
}
|
||||||
if !isProjectMember {
|
if !isProjectMember {
|
||||||
|
@ -52,7 +53,7 @@ func (h *ActionHandler) GetProject(ctx context.Context, projectRef string) (*csa
|
||||||
type CreateProjectRequest struct {
|
type CreateProjectRequest struct {
|
||||||
Name string
|
Name string
|
||||||
ParentRef string
|
ParentRef string
|
||||||
Visibility types.Visibility
|
Visibility cstypes.Visibility
|
||||||
RemoteSourceName string
|
RemoteSourceName string
|
||||||
RepoPath string
|
RepoPath string
|
||||||
SkipSSHHostKeyCheck bool
|
SkipSSHHostKeyCheck bool
|
||||||
|
@ -108,7 +109,7 @@ func (h *ActionHandler) CreateProject(ctx context.Context, req *CreateProjectReq
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Errorf("failed to get remote source %q: %w", req.RemoteSourceName, ErrFromRemote(resp, err))
|
return nil, errors.Errorf("failed to get remote source %q: %w", req.RemoteSourceName, ErrFromRemote(resp, err))
|
||||||
}
|
}
|
||||||
var la *types.LinkedAccount
|
var la *cstypes.LinkedAccount
|
||||||
for _, v := range user.LinkedAccounts {
|
for _, v := range user.LinkedAccounts {
|
||||||
if v.RemoteSourceID == rs.ID {
|
if v.RemoteSourceID == rs.ID {
|
||||||
la = v
|
la = v
|
||||||
|
@ -135,14 +136,14 @@ func (h *ActionHandler) CreateProject(ctx context.Context, req *CreateProjectReq
|
||||||
return nil, errors.Errorf("failed to generate ssh key pair: %w", err)
|
return nil, errors.Errorf("failed to generate ssh key pair: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
p := &types.Project{
|
p := &cstypes.Project{
|
||||||
Name: req.Name,
|
Name: req.Name,
|
||||||
Parent: types.Parent{
|
Parent: cstypes.Parent{
|
||||||
Type: types.ConfigTypeProjectGroup,
|
Type: cstypes.ConfigTypeProjectGroup,
|
||||||
ID: parentRef,
|
ID: parentRef,
|
||||||
},
|
},
|
||||||
Visibility: req.Visibility,
|
Visibility: req.Visibility,
|
||||||
RemoteRepositoryConfigType: types.RemoteRepositoryConfigTypeRemoteSource,
|
RemoteRepositoryConfigType: cstypes.RemoteRepositoryConfigTypeRemoteSource,
|
||||||
RemoteSourceID: rs.ID,
|
RemoteSourceID: rs.ID,
|
||||||
LinkedAccountID: la.ID,
|
LinkedAccountID: la.ID,
|
||||||
RepositoryID: repo.ID,
|
RepositoryID: repo.ID,
|
||||||
|
@ -180,7 +181,7 @@ func (h *ActionHandler) CreateProject(ctx context.Context, req *CreateProjectReq
|
||||||
|
|
||||||
type UpdateProjectRequest struct {
|
type UpdateProjectRequest struct {
|
||||||
Name string
|
Name string
|
||||||
Visibility types.Visibility
|
Visibility cstypes.Visibility
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) UpdateProject(ctx context.Context, projectRef string, req *UpdateProjectRequest) (*csapi.Project, error) {
|
func (h *ActionHandler) UpdateProject(ctx context.Context, projectRef string, req *UpdateProjectRequest) (*csapi.Project, error) {
|
||||||
|
@ -235,7 +236,7 @@ func (h *ActionHandler) ProjectUpdateRepoLinkedAccount(ctx context.Context, proj
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Errorf("failed to get remote source %q: %w", p.RemoteSourceID, ErrFromRemote(resp, err))
|
return nil, errors.Errorf("failed to get remote source %q: %w", p.RemoteSourceID, ErrFromRemote(resp, err))
|
||||||
}
|
}
|
||||||
var la *types.LinkedAccount
|
var la *cstypes.LinkedAccount
|
||||||
for _, v := range user.LinkedAccounts {
|
for _, v := range user.LinkedAccounts {
|
||||||
if v.RemoteSourceID == rs.ID {
|
if v.RemoteSourceID == rs.ID {
|
||||||
la = v
|
la = v
|
||||||
|
@ -269,7 +270,7 @@ func (h *ActionHandler) ProjectUpdateRepoLinkedAccount(ctx context.Context, proj
|
||||||
return rp, nil
|
return rp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) setupGitSourceRepo(ctx context.Context, rs *types.RemoteSource, user *types.User, la *types.LinkedAccount, project *csapi.Project) error {
|
func (h *ActionHandler) setupGitSourceRepo(ctx context.Context, rs *cstypes.RemoteSource, user *cstypes.User, la *cstypes.LinkedAccount, project *csapi.Project) error {
|
||||||
gitsource, err := h.GetGitSource(ctx, rs, user.Name, la)
|
gitsource, err := h.GetGitSource(ctx, rs, user.Name, la)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Errorf("failed to create gitsource client: %w", err)
|
return errors.Errorf("failed to create gitsource client: %w", err)
|
||||||
|
@ -305,7 +306,7 @@ func (h *ActionHandler) setupGitSourceRepo(ctx context.Context, rs *types.Remote
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) cleanupGitSourceRepo(ctx context.Context, rs *types.RemoteSource, user *types.User, la *types.LinkedAccount, project *csapi.Project) error {
|
func (h *ActionHandler) cleanupGitSourceRepo(ctx context.Context, rs *cstypes.RemoteSource, user *cstypes.User, la *cstypes.LinkedAccount, project *csapi.Project) error {
|
||||||
gitsource, err := h.GetGitSource(ctx, rs, user.Name, la)
|
gitsource, err := h.GetGitSource(ctx, rs, user.Name, la)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Errorf("failed to create gitsource client: %w", err)
|
return errors.Errorf("failed to create gitsource client: %w", err)
|
||||||
|
@ -436,7 +437,7 @@ func (h *ActionHandler) ProjectCreateRun(ctx context.Context, projectRef, branch
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Errorf("failed to get remote source %q: %w", p.RemoteSourceID, ErrFromRemote(resp, err))
|
return errors.Errorf("failed to get remote source %q: %w", p.RemoteSourceID, ErrFromRemote(resp, err))
|
||||||
}
|
}
|
||||||
var la *types.LinkedAccount
|
var la *cstypes.LinkedAccount
|
||||||
for _, v := range user.LinkedAccounts {
|
for _, v := range user.LinkedAccounts {
|
||||||
if v.RemoteSourceID == rs.ID {
|
if v.RemoteSourceID == rs.ID {
|
||||||
la = v
|
la = v
|
||||||
|
@ -571,7 +572,7 @@ func (h *ActionHandler) ProjectCreateRun(ctx context.Context, projectRef, branch
|
||||||
return h.CreateRuns(ctx, req)
|
return h.CreateRuns(ctx, req)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) getRemoteRepoAccessData(ctx context.Context, linkedAccountID string) (*types.User, *types.RemoteSource, *types.LinkedAccount, error) {
|
func (h *ActionHandler) getRemoteRepoAccessData(ctx context.Context, linkedAccountID string) (*cstypes.User, *cstypes.RemoteSource, *cstypes.LinkedAccount, error) {
|
||||||
user, resp, err := h.configstoreClient.GetUserByLinkedAccount(ctx, linkedAccountID)
|
user, resp, err := h.configstoreClient.GetUserByLinkedAccount(ctx, linkedAccountID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, errors.Errorf("failed to get user with linked account id %q: %w", linkedAccountID, ErrFromRemote(resp, err))
|
return nil, nil, nil, errors.Errorf("failed to get user with linked account id %q: %w", linkedAccountID, ErrFromRemote(resp, err))
|
||||||
|
|
|
@ -19,7 +19,7 @@ import (
|
||||||
"path"
|
"path"
|
||||||
|
|
||||||
csapi "agola.io/agola/internal/services/configstore/api"
|
csapi "agola.io/agola/internal/services/configstore/api"
|
||||||
"agola.io/agola/internal/services/types"
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
|
@ -53,7 +53,7 @@ type CreateProjectGroupRequest struct {
|
||||||
CurrentUserID string
|
CurrentUserID string
|
||||||
Name string
|
Name string
|
||||||
ParentRef string
|
ParentRef string
|
||||||
Visibility types.Visibility
|
Visibility cstypes.Visibility
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) CreateProjectGroup(ctx context.Context, req *CreateProjectGroupRequest) (*csapi.ProjectGroup, error) {
|
func (h *ActionHandler) CreateProjectGroup(ctx context.Context, req *CreateProjectGroupRequest) (*csapi.ProjectGroup, error) {
|
||||||
|
@ -85,10 +85,10 @@ func (h *ActionHandler) CreateProjectGroup(ctx context.Context, req *CreateProje
|
||||||
parentRef = path.Join("user", user.Name)
|
parentRef = path.Join("user", user.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
p := &types.ProjectGroup{
|
p := &cstypes.ProjectGroup{
|
||||||
Name: req.Name,
|
Name: req.Name,
|
||||||
Parent: types.Parent{
|
Parent: cstypes.Parent{
|
||||||
Type: types.ConfigTypeProjectGroup,
|
Type: cstypes.ConfigTypeProjectGroup,
|
||||||
ID: parentRef,
|
ID: parentRef,
|
||||||
},
|
},
|
||||||
Visibility: req.Visibility,
|
Visibility: req.Visibility,
|
||||||
|
@ -106,7 +106,7 @@ func (h *ActionHandler) CreateProjectGroup(ctx context.Context, req *CreateProje
|
||||||
|
|
||||||
type UpdateProjectGroupRequest struct {
|
type UpdateProjectGroupRequest struct {
|
||||||
Name string
|
Name string
|
||||||
Visibility types.Visibility
|
Visibility cstypes.Visibility
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) UpdateProjectGroup(ctx context.Context, projectGroupRef string, req *UpdateProjectGroupRequest) (*csapi.ProjectGroup, error) {
|
func (h *ActionHandler) UpdateProjectGroup(ctx context.Context, projectGroupRef string, req *UpdateProjectGroupRequest) (*csapi.ProjectGroup, error) {
|
||||||
|
|
|
@ -17,13 +17,13 @@ package action
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"agola.io/agola/internal/services/types"
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (h *ActionHandler) GetRemoteSource(ctx context.Context, rsRef string) (*types.RemoteSource, error) {
|
func (h *ActionHandler) GetRemoteSource(ctx context.Context, rsRef string) (*cstypes.RemoteSource, error) {
|
||||||
rs, resp, err := h.configstoreClient.GetRemoteSource(ctx, rsRef)
|
rs, resp, err := h.configstoreClient.GetRemoteSource(ctx, rsRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, ErrFromRemote(resp, err)
|
return nil, ErrFromRemote(resp, err)
|
||||||
|
@ -37,7 +37,7 @@ type GetRemoteSourcesRequest struct {
|
||||||
Asc bool
|
Asc bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) GetRemoteSources(ctx context.Context, req *GetRemoteSourcesRequest) ([]*types.RemoteSource, error) {
|
func (h *ActionHandler) GetRemoteSources(ctx context.Context, req *GetRemoteSourcesRequest) ([]*cstypes.RemoteSource, error) {
|
||||||
remoteSources, resp, err := h.configstoreClient.GetRemoteSources(ctx, req.Start, req.Limit, req.Asc)
|
remoteSources, resp, err := h.configstoreClient.GetRemoteSources(ctx, req.Start, req.Limit, req.Asc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, ErrFromRemote(resp, err)
|
return nil, ErrFromRemote(resp, err)
|
||||||
|
@ -59,7 +59,7 @@ type CreateRemoteSourceRequest struct {
|
||||||
LoginEnabled *bool
|
LoginEnabled *bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) CreateRemoteSource(ctx context.Context, req *CreateRemoteSourceRequest) (*types.RemoteSource, error) {
|
func (h *ActionHandler) CreateRemoteSource(ctx context.Context, req *CreateRemoteSourceRequest) (*cstypes.RemoteSource, error) {
|
||||||
if !h.IsUserAdmin(ctx) {
|
if !h.IsUserAdmin(ctx) {
|
||||||
return nil, errors.Errorf("user not admin")
|
return nil, errors.Errorf("user not admin")
|
||||||
}
|
}
|
||||||
|
@ -82,11 +82,11 @@ func (h *ActionHandler) CreateRemoteSource(ctx context.Context, req *CreateRemot
|
||||||
}
|
}
|
||||||
|
|
||||||
// validate if the remote source type supports the required auth type
|
// validate if the remote source type supports the required auth type
|
||||||
if !types.SourceSupportsAuthType(types.RemoteSourceType(req.Type), types.RemoteSourceAuthType(req.AuthType)) {
|
if !cstypes.SourceSupportsAuthType(cstypes.RemoteSourceType(req.Type), cstypes.RemoteSourceAuthType(req.AuthType)) {
|
||||||
return nil, util.NewErrBadRequest(errors.Errorf("remotesource type %q doesn't support auth type %q", req.Type, req.AuthType))
|
return nil, util.NewErrBadRequest(errors.Errorf("remotesource type %q doesn't support auth type %q", req.Type, req.AuthType))
|
||||||
}
|
}
|
||||||
|
|
||||||
if req.AuthType == string(types.RemoteSourceAuthTypeOauth2) {
|
if req.AuthType == string(cstypes.RemoteSourceAuthTypeOauth2) {
|
||||||
if req.Oauth2ClientID == "" {
|
if req.Oauth2ClientID == "" {
|
||||||
return nil, util.NewErrBadRequest(errors.Errorf("remotesource oauth2 clientid required"))
|
return nil, util.NewErrBadRequest(errors.Errorf("remotesource oauth2 clientid required"))
|
||||||
}
|
}
|
||||||
|
@ -95,10 +95,10 @@ func (h *ActionHandler) CreateRemoteSource(ctx context.Context, req *CreateRemot
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rs := &types.RemoteSource{
|
rs := &cstypes.RemoteSource{
|
||||||
Name: req.Name,
|
Name: req.Name,
|
||||||
Type: types.RemoteSourceType(req.Type),
|
Type: cstypes.RemoteSourceType(req.Type),
|
||||||
AuthType: types.RemoteSourceAuthType(req.AuthType),
|
AuthType: cstypes.RemoteSourceAuthType(req.AuthType),
|
||||||
APIURL: req.APIURL,
|
APIURL: req.APIURL,
|
||||||
SkipVerify: req.SkipVerify,
|
SkipVerify: req.SkipVerify,
|
||||||
Oauth2ClientID: req.Oauth2ClientID,
|
Oauth2ClientID: req.Oauth2ClientID,
|
||||||
|
@ -133,7 +133,7 @@ type UpdateRemoteSourceRequest struct {
|
||||||
LoginEnabled *bool
|
LoginEnabled *bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) UpdateRemoteSource(ctx context.Context, req *UpdateRemoteSourceRequest) (*types.RemoteSource, error) {
|
func (h *ActionHandler) UpdateRemoteSource(ctx context.Context, req *UpdateRemoteSourceRequest) (*cstypes.RemoteSource, error) {
|
||||||
if !h.IsUserAdmin(ctx) {
|
if !h.IsUserAdmin(ctx) {
|
||||||
return nil, errors.Errorf("user not admin")
|
return nil, errors.Errorf("user not admin")
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ import (
|
||||||
gitsource "agola.io/agola/internal/gitsources"
|
gitsource "agola.io/agola/internal/gitsources"
|
||||||
"agola.io/agola/internal/runconfig"
|
"agola.io/agola/internal/runconfig"
|
||||||
"agola.io/agola/internal/services/common"
|
"agola.io/agola/internal/services/common"
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
rsapi "agola.io/agola/internal/services/runservice/api"
|
rsapi "agola.io/agola/internal/services/runservice/api"
|
||||||
rstypes "agola.io/agola/internal/services/runservice/types"
|
rstypes "agola.io/agola/internal/services/runservice/types"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/types"
|
||||||
|
@ -293,8 +294,8 @@ type CreateRunRequest struct {
|
||||||
RefType types.RunRefType
|
RefType types.RunRefType
|
||||||
RunCreationTrigger types.RunCreationTriggerType
|
RunCreationTrigger types.RunCreationTriggerType
|
||||||
|
|
||||||
Project *types.Project
|
Project *cstypes.Project
|
||||||
User *types.User
|
User *cstypes.User
|
||||||
RepoPath string
|
RepoPath string
|
||||||
GitSource gitsource.GitSource
|
GitSource gitsource.GitSource
|
||||||
CommitSHA string
|
CommitSHA string
|
||||||
|
@ -537,9 +538,9 @@ func (h *ActionHandler) genRunVariables(ctx context.Context, req *CreateRunReque
|
||||||
}
|
}
|
||||||
for _, pvar := range pvars {
|
for _, pvar := range pvars {
|
||||||
// find the value match
|
// find the value match
|
||||||
var varval types.VariableValue
|
var varval cstypes.VariableValue
|
||||||
for _, varval = range pvar.Values {
|
for _, varval = range pvar.Values {
|
||||||
match := types.MatchWhen(varval.When, req.Branch, req.Tag, req.Ref)
|
match := cstypes.MatchWhen(varval.When, req.Branch, req.Tag, req.Ref)
|
||||||
if !match {
|
if !match {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,14 +19,14 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
csapi "agola.io/agola/internal/services/configstore/api"
|
csapi "agola.io/agola/internal/services/configstore/api"
|
||||||
"agola.io/agola/internal/services/types"
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
)
|
)
|
||||||
|
|
||||||
type GetSecretsRequest struct {
|
type GetSecretsRequest struct {
|
||||||
ParentType types.ConfigType
|
ParentType cstypes.ConfigType
|
||||||
ParentRef string
|
ParentRef string
|
||||||
|
|
||||||
Tree bool
|
Tree bool
|
||||||
|
@ -37,9 +37,9 @@ func (h *ActionHandler) GetSecrets(ctx context.Context, req *GetSecretsRequest)
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
var err error
|
var err error
|
||||||
switch req.ParentType {
|
switch req.ParentType {
|
||||||
case types.ConfigTypeProjectGroup:
|
case cstypes.ConfigTypeProjectGroup:
|
||||||
cssecrets, resp, err = h.configstoreClient.GetProjectGroupSecrets(ctx, req.ParentRef, req.Tree)
|
cssecrets, resp, err = h.configstoreClient.GetProjectGroupSecrets(ctx, req.ParentRef, req.Tree)
|
||||||
case types.ConfigTypeProject:
|
case cstypes.ConfigTypeProject:
|
||||||
cssecrets, resp, err = h.configstoreClient.GetProjectSecrets(ctx, req.ParentRef, req.Tree)
|
cssecrets, resp, err = h.configstoreClient.GetProjectSecrets(ctx, req.ParentRef, req.Tree)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -52,10 +52,10 @@ func (h *ActionHandler) GetSecrets(ctx context.Context, req *GetSecretsRequest)
|
||||||
type CreateSecretRequest struct {
|
type CreateSecretRequest struct {
|
||||||
Name string
|
Name string
|
||||||
|
|
||||||
ParentType types.ConfigType
|
ParentType cstypes.ConfigType
|
||||||
ParentRef string
|
ParentRef string
|
||||||
|
|
||||||
Type types.SecretType
|
Type cstypes.SecretType
|
||||||
|
|
||||||
// internal secret
|
// internal secret
|
||||||
Data map[string]string
|
Data map[string]string
|
||||||
|
@ -78,7 +78,7 @@ func (h *ActionHandler) CreateSecret(ctx context.Context, req *CreateSecretReque
|
||||||
return nil, util.NewErrBadRequest(errors.Errorf("invalid secret name %q", req.Name))
|
return nil, util.NewErrBadRequest(errors.Errorf("invalid secret name %q", req.Name))
|
||||||
}
|
}
|
||||||
|
|
||||||
s := &types.Secret{
|
s := &cstypes.Secret{
|
||||||
Name: req.Name,
|
Name: req.Name,
|
||||||
Type: req.Type,
|
Type: req.Type,
|
||||||
Data: req.Data,
|
Data: req.Data,
|
||||||
|
@ -87,10 +87,10 @@ func (h *ActionHandler) CreateSecret(ctx context.Context, req *CreateSecretReque
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
var rs *csapi.Secret
|
var rs *csapi.Secret
|
||||||
switch req.ParentType {
|
switch req.ParentType {
|
||||||
case types.ConfigTypeProjectGroup:
|
case cstypes.ConfigTypeProjectGroup:
|
||||||
h.log.Infof("creating project group secret")
|
h.log.Infof("creating project group secret")
|
||||||
rs, resp, err = h.configstoreClient.CreateProjectGroupSecret(ctx, req.ParentRef, s)
|
rs, resp, err = h.configstoreClient.CreateProjectGroupSecret(ctx, req.ParentRef, s)
|
||||||
case types.ConfigTypeProject:
|
case cstypes.ConfigTypeProject:
|
||||||
h.log.Infof("creating project secret")
|
h.log.Infof("creating project secret")
|
||||||
rs, resp, err = h.configstoreClient.CreateProjectSecret(ctx, req.ParentRef, s)
|
rs, resp, err = h.configstoreClient.CreateProjectSecret(ctx, req.ParentRef, s)
|
||||||
}
|
}
|
||||||
|
@ -107,10 +107,10 @@ type UpdateSecretRequest struct {
|
||||||
|
|
||||||
Name string
|
Name string
|
||||||
|
|
||||||
ParentType types.ConfigType
|
ParentType cstypes.ConfigType
|
||||||
ParentRef string
|
ParentRef string
|
||||||
|
|
||||||
Type types.SecretType
|
Type cstypes.SecretType
|
||||||
|
|
||||||
// internal secret
|
// internal secret
|
||||||
Data map[string]string
|
Data map[string]string
|
||||||
|
@ -133,7 +133,7 @@ func (h *ActionHandler) UpdateSecret(ctx context.Context, req *UpdateSecretReque
|
||||||
return nil, util.NewErrBadRequest(errors.Errorf("invalid secret name %q", req.Name))
|
return nil, util.NewErrBadRequest(errors.Errorf("invalid secret name %q", req.Name))
|
||||||
}
|
}
|
||||||
|
|
||||||
s := &types.Secret{
|
s := &cstypes.Secret{
|
||||||
Name: req.Name,
|
Name: req.Name,
|
||||||
Type: req.Type,
|
Type: req.Type,
|
||||||
Data: req.Data,
|
Data: req.Data,
|
||||||
|
@ -142,10 +142,10 @@ func (h *ActionHandler) UpdateSecret(ctx context.Context, req *UpdateSecretReque
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
var rs *csapi.Secret
|
var rs *csapi.Secret
|
||||||
switch req.ParentType {
|
switch req.ParentType {
|
||||||
case types.ConfigTypeProjectGroup:
|
case cstypes.ConfigTypeProjectGroup:
|
||||||
h.log.Infof("updating project group secret")
|
h.log.Infof("updating project group secret")
|
||||||
rs, resp, err = h.configstoreClient.UpdateProjectGroupSecret(ctx, req.ParentRef, req.SecretName, s)
|
rs, resp, err = h.configstoreClient.UpdateProjectGroupSecret(ctx, req.ParentRef, req.SecretName, s)
|
||||||
case types.ConfigTypeProject:
|
case cstypes.ConfigTypeProject:
|
||||||
h.log.Infof("updating project secret")
|
h.log.Infof("updating project secret")
|
||||||
rs, resp, err = h.configstoreClient.UpdateProjectSecret(ctx, req.ParentRef, req.SecretName, s)
|
rs, resp, err = h.configstoreClient.UpdateProjectSecret(ctx, req.ParentRef, req.SecretName, s)
|
||||||
}
|
}
|
||||||
|
@ -157,7 +157,7 @@ func (h *ActionHandler) UpdateSecret(ctx context.Context, req *UpdateSecretReque
|
||||||
return rs, nil
|
return rs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) DeleteSecret(ctx context.Context, parentType types.ConfigType, parentRef, name string) error {
|
func (h *ActionHandler) DeleteSecret(ctx context.Context, parentType cstypes.ConfigType, parentRef, name string) error {
|
||||||
isVariableOwner, err := h.IsVariableOwner(ctx, parentType, parentRef)
|
isVariableOwner, err := h.IsVariableOwner(ctx, parentType, parentRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Errorf("failed to determine ownership: %w", err)
|
return errors.Errorf("failed to determine ownership: %w", err)
|
||||||
|
@ -168,10 +168,10 @@ func (h *ActionHandler) DeleteSecret(ctx context.Context, parentType types.Confi
|
||||||
|
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
switch parentType {
|
switch parentType {
|
||||||
case types.ConfigTypeProjectGroup:
|
case cstypes.ConfigTypeProjectGroup:
|
||||||
h.log.Infof("deleting project group secret")
|
h.log.Infof("deleting project group secret")
|
||||||
resp, err = h.configstoreClient.DeleteProjectGroupSecret(ctx, parentRef, name)
|
resp, err = h.configstoreClient.DeleteProjectGroupSecret(ctx, parentRef, name)
|
||||||
case types.ConfigTypeProject:
|
case cstypes.ConfigTypeProject:
|
||||||
h.log.Infof("deleting project secret")
|
h.log.Infof("deleting project secret")
|
||||||
resp, err = h.configstoreClient.DeleteProjectSecret(ctx, parentRef, name)
|
resp, err = h.configstoreClient.DeleteProjectSecret(ctx, parentRef, name)
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ import (
|
||||||
"agola.io/agola/internal/gitsources/agolagit"
|
"agola.io/agola/internal/gitsources/agolagit"
|
||||||
"agola.io/agola/internal/services/common"
|
"agola.io/agola/internal/services/common"
|
||||||
csapi "agola.io/agola/internal/services/configstore/api"
|
csapi "agola.io/agola/internal/services/configstore/api"
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/types"
|
"agola.io/agola/internal/services/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
|
@ -43,7 +44,7 @@ func isAccessTokenExpired(expiresAt time.Time) bool {
|
||||||
return expiresAt.Add(-expireTimeRange).Before(time.Now())
|
return expiresAt.Add(-expireTimeRange).Before(time.Now())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) GetUser(ctx context.Context, userRef string) (*types.User, error) {
|
func (h *ActionHandler) GetUser(ctx context.Context, userRef string) (*cstypes.User, error) {
|
||||||
if !h.IsUserLoggedOrAdmin(ctx) {
|
if !h.IsUserLoggedOrAdmin(ctx) {
|
||||||
return nil, errors.Errorf("user not logged in")
|
return nil, errors.Errorf("user not logged in")
|
||||||
}
|
}
|
||||||
|
@ -61,7 +62,7 @@ type GetUsersRequest struct {
|
||||||
Asc bool
|
Asc bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) GetUsers(ctx context.Context, req *GetUsersRequest) ([]*types.User, error) {
|
func (h *ActionHandler) GetUsers(ctx context.Context, req *GetUsersRequest) ([]*cstypes.User, error) {
|
||||||
if !h.IsUserAdmin(ctx) {
|
if !h.IsUserAdmin(ctx) {
|
||||||
return nil, errors.Errorf("user not logged in")
|
return nil, errors.Errorf("user not logged in")
|
||||||
}
|
}
|
||||||
|
@ -77,7 +78,7 @@ type CreateUserRequest struct {
|
||||||
UserName string
|
UserName string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) CreateUser(ctx context.Context, req *CreateUserRequest) (*types.User, error) {
|
func (h *ActionHandler) CreateUser(ctx context.Context, req *CreateUserRequest) (*cstypes.User, error) {
|
||||||
if !h.IsUserAdmin(ctx) {
|
if !h.IsUserAdmin(ctx) {
|
||||||
return nil, errors.Errorf("user not admin")
|
return nil, errors.Errorf("user not admin")
|
||||||
}
|
}
|
||||||
|
@ -158,7 +159,7 @@ type CreateUserLARequest struct {
|
||||||
Oauth2AccessTokenExpiresAt time.Time
|
Oauth2AccessTokenExpiresAt time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) CreateUserLA(ctx context.Context, req *CreateUserLARequest) (*types.LinkedAccount, error) {
|
func (h *ActionHandler) CreateUserLA(ctx context.Context, req *CreateUserLARequest) (*cstypes.LinkedAccount, error) {
|
||||||
userRef := req.UserRef
|
userRef := req.UserRef
|
||||||
user, resp, err := h.configstoreClient.GetUser(ctx, userRef)
|
user, resp, err := h.configstoreClient.GetUser(ctx, userRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -168,7 +169,7 @@ func (h *ActionHandler) CreateUserLA(ctx context.Context, req *CreateUserLAReque
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Errorf("failed to get remote source %q: %w", req.RemoteSourceName, ErrFromRemote(resp, err))
|
return nil, errors.Errorf("failed to get remote source %q: %w", req.RemoteSourceName, ErrFromRemote(resp, err))
|
||||||
}
|
}
|
||||||
var la *types.LinkedAccount
|
var la *cstypes.LinkedAccount
|
||||||
for _, v := range user.LinkedAccounts {
|
for _, v := range user.LinkedAccounts {
|
||||||
if v.RemoteSourceID == rs.ID {
|
if v.RemoteSourceID == rs.ID {
|
||||||
la = v
|
la = v
|
||||||
|
@ -216,7 +217,7 @@ func (h *ActionHandler) CreateUserLA(ctx context.Context, req *CreateUserLAReque
|
||||||
return la, nil
|
return la, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) UpdateUserLA(ctx context.Context, userRef string, la *types.LinkedAccount) error {
|
func (h *ActionHandler) UpdateUserLA(ctx context.Context, userRef string, la *cstypes.LinkedAccount) error {
|
||||||
user, resp, err := h.configstoreClient.GetUser(ctx, userRef)
|
user, resp, err := h.configstoreClient.GetUser(ctx, userRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Errorf("failed to get user %q: %w", userRef, ErrFromRemote(resp, err))
|
return errors.Errorf("failed to get user %q: %w", userRef, ErrFromRemote(resp, err))
|
||||||
|
@ -252,9 +253,9 @@ func (h *ActionHandler) UpdateUserLA(ctx context.Context, userRef string, la *ty
|
||||||
}
|
}
|
||||||
|
|
||||||
// RefreshLinkedAccount refreshed the linked account oauth2 access token and update linked account in the configstore
|
// RefreshLinkedAccount refreshed the linked account oauth2 access token and update linked account in the configstore
|
||||||
func (h *ActionHandler) RefreshLinkedAccount(ctx context.Context, rs *types.RemoteSource, userName string, la *types.LinkedAccount) (*types.LinkedAccount, error) {
|
func (h *ActionHandler) RefreshLinkedAccount(ctx context.Context, rs *cstypes.RemoteSource, userName string, la *cstypes.LinkedAccount) (*cstypes.LinkedAccount, error) {
|
||||||
switch rs.AuthType {
|
switch rs.AuthType {
|
||||||
case types.RemoteSourceAuthTypeOauth2:
|
case cstypes.RemoteSourceAuthTypeOauth2:
|
||||||
// refresh access token if expired
|
// refresh access token if expired
|
||||||
if isAccessTokenExpired(la.Oauth2AccessTokenExpiresAt) {
|
if isAccessTokenExpired(la.Oauth2AccessTokenExpiresAt) {
|
||||||
userSource, err := common.GetOauth2Source(rs, "")
|
userSource, err := common.GetOauth2Source(rs, "")
|
||||||
|
@ -282,7 +283,7 @@ func (h *ActionHandler) RefreshLinkedAccount(ctx context.Context, rs *types.Remo
|
||||||
|
|
||||||
// GetGitSource is a wrapper around common.GetGitSource that will also refresh
|
// GetGitSource is a wrapper around common.GetGitSource that will also refresh
|
||||||
// the oauth2 access token and update the linked account when needed
|
// the oauth2 access token and update the linked account when needed
|
||||||
func (h *ActionHandler) GetGitSource(ctx context.Context, rs *types.RemoteSource, userName string, la *types.LinkedAccount) (gitsource.GitSource, error) {
|
func (h *ActionHandler) GetGitSource(ctx context.Context, rs *cstypes.RemoteSource, userName string, la *cstypes.LinkedAccount) (gitsource.GitSource, error) {
|
||||||
la, err := h.RefreshLinkedAccount(ctx, rs, userName, la)
|
la, err := h.RefreshLinkedAccount(ctx, rs, userName, la)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -299,7 +300,7 @@ type RegisterUserRequest struct {
|
||||||
Oauth2AccessTokenExpiresAt time.Time
|
Oauth2AccessTokenExpiresAt time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) RegisterUser(ctx context.Context, req *RegisterUserRequest) (*types.User, error) {
|
func (h *ActionHandler) RegisterUser(ctx context.Context, req *RegisterUserRequest) (*cstypes.User, error) {
|
||||||
if req.UserName == "" {
|
if req.UserName == "" {
|
||||||
return nil, util.NewErrBadRequest(errors.Errorf("user name required"))
|
return nil, util.NewErrBadRequest(errors.Errorf("user name required"))
|
||||||
}
|
}
|
||||||
|
@ -365,7 +366,7 @@ type LoginUserRequest struct {
|
||||||
|
|
||||||
type LoginUserResponse struct {
|
type LoginUserResponse struct {
|
||||||
Token string
|
Token string
|
||||||
User *types.User
|
User *cstypes.User
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) LoginUser(ctx context.Context, req *LoginUserRequest) (*LoginUserResponse, error) {
|
func (h *ActionHandler) LoginUser(ctx context.Context, req *LoginUserRequest) (*LoginUserResponse, error) {
|
||||||
|
@ -399,7 +400,7 @@ func (h *ActionHandler) LoginUser(ctx context.Context, req *LoginUserRequest) (*
|
||||||
return nil, errors.Errorf("failed to get user for remote user id %q and remote source %q: %w", remoteUserInfo.ID, rs.ID, ErrFromRemote(resp, err))
|
return nil, errors.Errorf("failed to get user for remote user id %q and remote source %q: %w", remoteUserInfo.ID, rs.ID, ErrFromRemote(resp, err))
|
||||||
}
|
}
|
||||||
|
|
||||||
var la *types.LinkedAccount
|
var la *cstypes.LinkedAccount
|
||||||
for _, v := range user.LinkedAccounts {
|
for _, v := range user.LinkedAccounts {
|
||||||
if v.RemoteSourceID == rs.ID {
|
if v.RemoteSourceID == rs.ID {
|
||||||
la = v
|
la = v
|
||||||
|
@ -517,7 +518,7 @@ func (h *ActionHandler) HandleRemoteSourceAuth(ctx context.Context, remoteSource
|
||||||
return nil, util.NewErrBadRequest(errors.Errorf("logged in user cannot create linked account for another user"))
|
return nil, util.NewErrBadRequest(errors.Errorf("logged in user cannot create linked account for another user"))
|
||||||
}
|
}
|
||||||
|
|
||||||
var la *types.LinkedAccount
|
var la *cstypes.LinkedAccount
|
||||||
for _, v := range user.LinkedAccounts {
|
for _, v := range user.LinkedAccounts {
|
||||||
if v.RemoteSourceID == rs.ID {
|
if v.RemoteSourceID == rs.ID {
|
||||||
la = v
|
la = v
|
||||||
|
@ -539,7 +540,7 @@ func (h *ActionHandler) HandleRemoteSourceAuth(ctx context.Context, remoteSource
|
||||||
}
|
}
|
||||||
|
|
||||||
switch rs.AuthType {
|
switch rs.AuthType {
|
||||||
case types.RemoteSourceAuthTypeOauth2:
|
case cstypes.RemoteSourceAuthTypeOauth2:
|
||||||
oauth2Source, err := common.GetOauth2Source(rs, "")
|
oauth2Source, err := common.GetOauth2Source(rs, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Errorf("failed to create git source: %w", err)
|
return nil, errors.Errorf("failed to create git source: %w", err)
|
||||||
|
@ -557,7 +558,7 @@ func (h *ActionHandler) HandleRemoteSourceAuth(ctx context.Context, remoteSource
|
||||||
Oauth2Redirect: redirect,
|
Oauth2Redirect: redirect,
|
||||||
}, nil
|
}, nil
|
||||||
|
|
||||||
case types.RemoteSourceAuthTypePassword:
|
case cstypes.RemoteSourceAuthTypePassword:
|
||||||
passwordSource, err := common.GetPasswordSource(rs, "")
|
passwordSource, err := common.GetPasswordSource(rs, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Errorf("failed to create git source: %w", err)
|
return nil, errors.Errorf("failed to create git source: %w", err)
|
||||||
|
@ -602,7 +603,7 @@ type RemoteSourceAuthResult struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type CreateUserLAResponse struct {
|
type CreateUserLAResponse struct {
|
||||||
LinkedAccount *types.LinkedAccount
|
LinkedAccount *cstypes.LinkedAccount
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) HandleRemoteSourceAuthRequest(ctx context.Context, requestType RemoteSourceRequestType, requestString string, userAccessToken, oauth2AccessToken, oauth2RefreshToken string, oauth2AccessTokenExpiresAt time.Time) (*RemoteSourceAuthResult, error) {
|
func (h *ActionHandler) HandleRemoteSourceAuthRequest(ctx context.Context, requestType RemoteSourceRequestType, requestString string, userAccessToken, oauth2AccessToken, oauth2RefreshToken string, oauth2AccessTokenExpiresAt time.Time) (*RemoteSourceAuthResult, error) {
|
||||||
|
|
|
@ -20,13 +20,13 @@ import (
|
||||||
|
|
||||||
"agola.io/agola/internal/services/common"
|
"agola.io/agola/internal/services/common"
|
||||||
csapi "agola.io/agola/internal/services/configstore/api"
|
csapi "agola.io/agola/internal/services/configstore/api"
|
||||||
"agola.io/agola/internal/services/types"
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
)
|
)
|
||||||
|
|
||||||
type GetVariablesRequest struct {
|
type GetVariablesRequest struct {
|
||||||
ParentType types.ConfigType
|
ParentType cstypes.ConfigType
|
||||||
ParentRef string
|
ParentRef string
|
||||||
|
|
||||||
Tree bool
|
Tree bool
|
||||||
|
@ -38,7 +38,7 @@ func (h *ActionHandler) GetVariables(ctx context.Context, req *GetVariablesReque
|
||||||
var cssecrets []*csapi.Secret
|
var cssecrets []*csapi.Secret
|
||||||
|
|
||||||
switch req.ParentType {
|
switch req.ParentType {
|
||||||
case types.ConfigTypeProjectGroup:
|
case cstypes.ConfigTypeProjectGroup:
|
||||||
var err error
|
var err error
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
csvars, resp, err = h.configstoreClient.GetProjectGroupVariables(ctx, req.ParentRef, req.Tree)
|
csvars, resp, err = h.configstoreClient.GetProjectGroupVariables(ctx, req.ParentRef, req.Tree)
|
||||||
|
@ -49,7 +49,7 @@ func (h *ActionHandler) GetVariables(ctx context.Context, req *GetVariablesReque
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, ErrFromRemote(resp, err)
|
return nil, nil, ErrFromRemote(resp, err)
|
||||||
}
|
}
|
||||||
case types.ConfigTypeProject:
|
case cstypes.ConfigTypeProject:
|
||||||
var err error
|
var err error
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
csvars, resp, err = h.configstoreClient.GetProjectVariables(ctx, req.ParentRef, req.Tree)
|
csvars, resp, err = h.configstoreClient.GetProjectVariables(ctx, req.ParentRef, req.Tree)
|
||||||
|
@ -73,10 +73,10 @@ func (h *ActionHandler) GetVariables(ctx context.Context, req *GetVariablesReque
|
||||||
type CreateVariableRequest struct {
|
type CreateVariableRequest struct {
|
||||||
Name string
|
Name string
|
||||||
|
|
||||||
ParentType types.ConfigType
|
ParentType cstypes.ConfigType
|
||||||
ParentRef string
|
ParentRef string
|
||||||
|
|
||||||
Values []types.VariableValue
|
Values []cstypes.VariableValue
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) CreateVariable(ctx context.Context, req *CreateVariableRequest) (*csapi.Variable, []*csapi.Secret, error) {
|
func (h *ActionHandler) CreateVariable(ctx context.Context, req *CreateVariableRequest) (*csapi.Variable, []*csapi.Secret, error) {
|
||||||
|
@ -96,9 +96,9 @@ func (h *ActionHandler) CreateVariable(ctx context.Context, req *CreateVariableR
|
||||||
return nil, nil, util.NewErrBadRequest(errors.Errorf("empty variable values"))
|
return nil, nil, util.NewErrBadRequest(errors.Errorf("empty variable values"))
|
||||||
}
|
}
|
||||||
|
|
||||||
v := &types.Variable{
|
v := &cstypes.Variable{
|
||||||
Name: req.Name,
|
Name: req.Name,
|
||||||
Parent: types.Parent{
|
Parent: cstypes.Parent{
|
||||||
Type: req.ParentType,
|
Type: req.ParentType,
|
||||||
ID: req.ParentRef,
|
ID: req.ParentRef,
|
||||||
},
|
},
|
||||||
|
@ -109,7 +109,7 @@ func (h *ActionHandler) CreateVariable(ctx context.Context, req *CreateVariableR
|
||||||
var rv *csapi.Variable
|
var rv *csapi.Variable
|
||||||
|
|
||||||
switch req.ParentType {
|
switch req.ParentType {
|
||||||
case types.ConfigTypeProjectGroup:
|
case cstypes.ConfigTypeProjectGroup:
|
||||||
var err error
|
var err error
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
cssecrets, resp, err = h.configstoreClient.GetProjectGroupSecrets(ctx, req.ParentRef, true)
|
cssecrets, resp, err = h.configstoreClient.GetProjectGroupSecrets(ctx, req.ParentRef, true)
|
||||||
|
@ -122,7 +122,7 @@ func (h *ActionHandler) CreateVariable(ctx context.Context, req *CreateVariableR
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, errors.Errorf("failed to create variable: %w", ErrFromRemote(resp, err))
|
return nil, nil, errors.Errorf("failed to create variable: %w", ErrFromRemote(resp, err))
|
||||||
}
|
}
|
||||||
case types.ConfigTypeProject:
|
case cstypes.ConfigTypeProject:
|
||||||
var err error
|
var err error
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
cssecrets, resp, err = h.configstoreClient.GetProjectSecrets(ctx, req.ParentRef, true)
|
cssecrets, resp, err = h.configstoreClient.GetProjectSecrets(ctx, req.ParentRef, true)
|
||||||
|
@ -146,10 +146,10 @@ type UpdateVariableRequest struct {
|
||||||
|
|
||||||
Name string
|
Name string
|
||||||
|
|
||||||
ParentType types.ConfigType
|
ParentType cstypes.ConfigType
|
||||||
ParentRef string
|
ParentRef string
|
||||||
|
|
||||||
Values []types.VariableValue
|
Values []cstypes.VariableValue
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) UpdateVariable(ctx context.Context, req *UpdateVariableRequest) (*csapi.Variable, []*csapi.Secret, error) {
|
func (h *ActionHandler) UpdateVariable(ctx context.Context, req *UpdateVariableRequest) (*csapi.Variable, []*csapi.Secret, error) {
|
||||||
|
@ -169,9 +169,9 @@ func (h *ActionHandler) UpdateVariable(ctx context.Context, req *UpdateVariableR
|
||||||
return nil, nil, util.NewErrBadRequest(errors.Errorf("empty variable values"))
|
return nil, nil, util.NewErrBadRequest(errors.Errorf("empty variable values"))
|
||||||
}
|
}
|
||||||
|
|
||||||
v := &types.Variable{
|
v := &cstypes.Variable{
|
||||||
Name: req.Name,
|
Name: req.Name,
|
||||||
Parent: types.Parent{
|
Parent: cstypes.Parent{
|
||||||
Type: req.ParentType,
|
Type: req.ParentType,
|
||||||
ID: req.ParentRef,
|
ID: req.ParentRef,
|
||||||
},
|
},
|
||||||
|
@ -182,7 +182,7 @@ func (h *ActionHandler) UpdateVariable(ctx context.Context, req *UpdateVariableR
|
||||||
var rv *csapi.Variable
|
var rv *csapi.Variable
|
||||||
|
|
||||||
switch req.ParentType {
|
switch req.ParentType {
|
||||||
case types.ConfigTypeProjectGroup:
|
case cstypes.ConfigTypeProjectGroup:
|
||||||
var err error
|
var err error
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
cssecrets, resp, err = h.configstoreClient.GetProjectGroupSecrets(ctx, req.ParentRef, true)
|
cssecrets, resp, err = h.configstoreClient.GetProjectGroupSecrets(ctx, req.ParentRef, true)
|
||||||
|
@ -195,7 +195,7 @@ func (h *ActionHandler) UpdateVariable(ctx context.Context, req *UpdateVariableR
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, errors.Errorf("failed to create variable: %w", ErrFromRemote(resp, err))
|
return nil, nil, errors.Errorf("failed to create variable: %w", ErrFromRemote(resp, err))
|
||||||
}
|
}
|
||||||
case types.ConfigTypeProject:
|
case cstypes.ConfigTypeProject:
|
||||||
var err error
|
var err error
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
cssecrets, resp, err = h.configstoreClient.GetProjectSecrets(ctx, req.ParentRef, true)
|
cssecrets, resp, err = h.configstoreClient.GetProjectSecrets(ctx, req.ParentRef, true)
|
||||||
|
@ -214,7 +214,7 @@ func (h *ActionHandler) UpdateVariable(ctx context.Context, req *UpdateVariableR
|
||||||
return rv, cssecrets, nil
|
return rv, cssecrets, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *ActionHandler) DeleteVariable(ctx context.Context, parentType types.ConfigType, parentRef, name string) error {
|
func (h *ActionHandler) DeleteVariable(ctx context.Context, parentType cstypes.ConfigType, parentRef, name string) error {
|
||||||
isVariableOwner, err := h.IsVariableOwner(ctx, parentType, parentRef)
|
isVariableOwner, err := h.IsVariableOwner(ctx, parentType, parentRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Errorf("failed to determine ownership: %w", err)
|
return errors.Errorf("failed to determine ownership: %w", err)
|
||||||
|
@ -225,10 +225,10 @@ func (h *ActionHandler) DeleteVariable(ctx context.Context, parentType types.Con
|
||||||
|
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
switch parentType {
|
switch parentType {
|
||||||
case types.ConfigTypeProjectGroup:
|
case cstypes.ConfigTypeProjectGroup:
|
||||||
h.log.Infof("deleting project group variable")
|
h.log.Infof("deleting project group variable")
|
||||||
resp, err = h.configstoreClient.DeleteProjectGroupVariable(ctx, parentRef, name)
|
resp, err = h.configstoreClient.DeleteProjectGroupVariable(ctx, parentRef, name)
|
||||||
case types.ConfigTypeProject:
|
case cstypes.ConfigTypeProject:
|
||||||
h.log.Infof("deleting project variable")
|
h.log.Infof("deleting project variable")
|
||||||
resp, err = h.configstoreClient.DeleteProjectVariable(ctx, parentRef, name)
|
resp, err = h.configstoreClient.DeleteProjectVariable(ctx, parentRef, name)
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
"agola.io/agola/internal/services/types"
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
@ -139,14 +139,14 @@ func httpErrorFromRemote(w http.ResponseWriter, resp *http.Response, err error)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetConfigTypeRef(r *http.Request) (types.ConfigType, string, error) {
|
func GetConfigTypeRef(r *http.Request) (cstypes.ConfigType, string, error) {
|
||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
projectRef, err := url.PathUnescape(vars["projectref"])
|
projectRef, err := url.PathUnescape(vars["projectref"])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", util.NewErrBadRequest(errors.Errorf("wrong projectref %q: %w", vars["projectref"], err))
|
return "", "", util.NewErrBadRequest(errors.Errorf("wrong projectref %q: %w", vars["projectref"], err))
|
||||||
}
|
}
|
||||||
if projectRef != "" {
|
if projectRef != "" {
|
||||||
return types.ConfigTypeProject, projectRef, nil
|
return cstypes.ConfigTypeProject, projectRef, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
projectGroupRef, err := url.PathUnescape(vars["projectgroupref"])
|
projectGroupRef, err := url.PathUnescape(vars["projectgroupref"])
|
||||||
|
@ -154,7 +154,7 @@ func GetConfigTypeRef(r *http.Request) (types.ConfigType, string, error) {
|
||||||
return "", "", util.NewErrBadRequest(errors.Errorf("wrong projectgroupref %q: %w", vars["projectgroupref"], err))
|
return "", "", util.NewErrBadRequest(errors.Errorf("wrong projectgroupref %q: %w", vars["projectgroupref"], err))
|
||||||
}
|
}
|
||||||
if projectGroupRef != "" {
|
if projectGroupRef != "" {
|
||||||
return types.ConfigTypeProjectGroup, projectGroupRef, nil
|
return cstypes.ConfigTypeProjectGroup, projectGroupRef, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return "", "", util.NewErrBadRequest(errors.Errorf("cannot get project or projectgroup ref"))
|
return "", "", util.NewErrBadRequest(errors.Errorf("cannot get project or projectgroup ref"))
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"agola.io/agola/internal/services/types"
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
|
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
)
|
)
|
||||||
|
@ -475,7 +475,7 @@ func (c *Client) DeleteOrg(ctx context.Context, orgRef string) (*http.Response,
|
||||||
return c.getResponse(ctx, "DELETE", fmt.Sprintf("/orgs/%s", orgRef), nil, jsonContent, nil)
|
return c.getResponse(ctx, "DELETE", fmt.Sprintf("/orgs/%s", orgRef), nil, jsonContent, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) AddOrgMember(ctx context.Context, orgRef, userRef string, role types.MemberRole) (*AddOrgMemberResponse, *http.Response, error) {
|
func (c *Client) AddOrgMember(ctx context.Context, orgRef, userRef string, role cstypes.MemberRole) (*AddOrgMemberResponse, *http.Response, error) {
|
||||||
req := &AddOrgMemberRequest{
|
req := &AddOrgMemberRequest{
|
||||||
Role: role,
|
Role: role,
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,8 +19,8 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/action"
|
"agola.io/agola/internal/services/gateway/action"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
|
@ -29,8 +29,8 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateOrgRequest struct {
|
type CreateOrgRequest struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Visibility types.Visibility `json:"visibility"`
|
Visibility cstypes.Visibility `json:"visibility"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CreateOrgHandler struct {
|
type CreateOrgHandler struct {
|
||||||
|
@ -128,12 +128,12 @@ func (h *OrgHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type OrgResponse struct {
|
type OrgResponse struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Visibility types.Visibility `json:"visibility,omitempty"`
|
Visibility cstypes.Visibility `json:"visibility,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func createOrgResponse(o *types.Organization) *OrgResponse {
|
func createOrgResponse(o *cstypes.Organization) *OrgResponse {
|
||||||
org := &OrgResponse{
|
org := &OrgResponse{
|
||||||
ID: o.ID,
|
ID: o.ID,
|
||||||
Name: o.Name,
|
Name: o.Name,
|
||||||
|
@ -205,11 +205,11 @@ type OrgMembersResponse struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type OrgMemberResponse struct {
|
type OrgMemberResponse struct {
|
||||||
User *UserResponse `json:"user"`
|
User *UserResponse `json:"user"`
|
||||||
Role types.MemberRole `json:"role"`
|
Role cstypes.MemberRole `json:"role"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func createOrgMemberResponse(user *types.User, role types.MemberRole) *OrgMemberResponse {
|
func createOrgMemberResponse(user *cstypes.User, role cstypes.MemberRole) *OrgMemberResponse {
|
||||||
return &OrgMemberResponse{
|
return &OrgMemberResponse{
|
||||||
User: createUserResponse(user),
|
User: createUserResponse(user),
|
||||||
Role: role,
|
Role: role,
|
||||||
|
@ -254,7 +254,7 @@ type AddOrgMemberResponse struct {
|
||||||
OrgMemberResponse
|
OrgMemberResponse
|
||||||
}
|
}
|
||||||
|
|
||||||
func createAddOrgMemberResponse(org *types.Organization, user *types.User, role types.MemberRole) *AddOrgMemberResponse {
|
func createAddOrgMemberResponse(org *cstypes.Organization, user *cstypes.User, role cstypes.MemberRole) *AddOrgMemberResponse {
|
||||||
return &AddOrgMemberResponse{
|
return &AddOrgMemberResponse{
|
||||||
Organization: createOrgResponse(org),
|
Organization: createOrgResponse(org),
|
||||||
OrgMemberResponse: OrgMemberResponse{
|
OrgMemberResponse: OrgMemberResponse{
|
||||||
|
@ -265,7 +265,7 @@ func createAddOrgMemberResponse(org *types.Organization, user *types.User, role
|
||||||
}
|
}
|
||||||
|
|
||||||
type AddOrgMemberRequest struct {
|
type AddOrgMemberRequest struct {
|
||||||
Role types.MemberRole `json:"role"`
|
Role cstypes.MemberRole `json:"role"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type AddOrgMemberHandler struct {
|
type AddOrgMemberHandler struct {
|
||||||
|
|
|
@ -20,8 +20,8 @@ import (
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
csapi "agola.io/agola/internal/services/configstore/api"
|
csapi "agola.io/agola/internal/services/configstore/api"
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/action"
|
"agola.io/agola/internal/services/gateway/action"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
@ -29,12 +29,12 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateProjectRequest struct {
|
type CreateProjectRequest struct {
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
ParentRef string `json:"parent_ref,omitempty"`
|
ParentRef string `json:"parent_ref,omitempty"`
|
||||||
Visibility types.Visibility `json:"visibility,omitempty"`
|
Visibility cstypes.Visibility `json:"visibility,omitempty"`
|
||||||
RepoPath string `json:"repo_path,omitempty"`
|
RepoPath string `json:"repo_path,omitempty"`
|
||||||
RemoteSourceName string `json:"remote_source_name,omitempty"`
|
RemoteSourceName string `json:"remote_source_name,omitempty"`
|
||||||
SkipSSHHostKeyCheck bool `json:"skip_ssh_host_key_check,omitempty"`
|
SkipSSHHostKeyCheck bool `json:"skip_ssh_host_key_check,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CreateProjectHandler struct {
|
type CreateProjectHandler struct {
|
||||||
|
@ -78,8 +78,8 @@ func (h *CreateProjectHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
||||||
}
|
}
|
||||||
|
|
||||||
type UpdateProjectRequest struct {
|
type UpdateProjectRequest struct {
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
Visibility types.Visibility `json:"visibility,omitempty"`
|
Visibility cstypes.Visibility `json:"visibility,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type UpdateProjectHandler struct {
|
type UpdateProjectHandler struct {
|
||||||
|
@ -240,12 +240,12 @@ func (h *ProjectHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProjectResponse struct {
|
type ProjectResponse struct {
|
||||||
ID string `json:"id,omitempty"`
|
ID string `json:"id,omitempty"`
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
Path string `json:"path,omitempty"`
|
Path string `json:"path,omitempty"`
|
||||||
ParentPath string `json:"parent_path,omitempty"`
|
ParentPath string `json:"parent_path,omitempty"`
|
||||||
Visibility types.Visibility `json:"visibility,omitempty"`
|
Visibility cstypes.Visibility `json:"visibility,omitempty"`
|
||||||
GlobalVisibility string `json:"global_visibility,omitempty"`
|
GlobalVisibility string `json:"global_visibility,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func createProjectResponse(r *csapi.Project) *ProjectResponse {
|
func createProjectResponse(r *csapi.Project) *ProjectResponse {
|
||||||
|
|
|
@ -20,8 +20,8 @@ import (
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
csapi "agola.io/agola/internal/services/configstore/api"
|
csapi "agola.io/agola/internal/services/configstore/api"
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/action"
|
"agola.io/agola/internal/services/gateway/action"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
|
|
||||||
|
@ -30,9 +30,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateProjectGroupRequest struct {
|
type CreateProjectGroupRequest struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
ParentRef string `json:"parent_ref"`
|
ParentRef string `json:"parent_ref"`
|
||||||
Visibility types.Visibility `json:"visibility"`
|
Visibility cstypes.Visibility `json:"visibility"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CreateProjectGroupHandler struct {
|
type CreateProjectGroupHandler struct {
|
||||||
|
@ -81,8 +81,8 @@ func (h *CreateProjectGroupHandler) ServeHTTP(w http.ResponseWriter, r *http.Req
|
||||||
}
|
}
|
||||||
|
|
||||||
type UpdateProjectGroupRequest struct {
|
type UpdateProjectGroupRequest struct {
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
Visibility types.Visibility `json:"visibility,omitempty"`
|
Visibility cstypes.Visibility `json:"visibility,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type UpdateProjectGroupHandler struct {
|
type UpdateProjectGroupHandler struct {
|
||||||
|
@ -254,12 +254,12 @@ func (h *ProjectGroupSubgroupsHandler) ServeHTTP(w http.ResponseWriter, r *http.
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProjectGroupResponse struct {
|
type ProjectGroupResponse struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Path string `json:"path"`
|
Path string `json:"path"`
|
||||||
ParentPath string `json:"parent_path"`
|
ParentPath string `json:"parent_path"`
|
||||||
Visibility types.Visibility `json:"visibility"`
|
Visibility cstypes.Visibility `json:"visibility"`
|
||||||
GlobalVisibility string `json:"global_visibility"`
|
GlobalVisibility string `json:"global_visibility"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func createProjectGroupResponse(r *csapi.ProjectGroup) *ProjectGroupResponse {
|
func createProjectGroupResponse(r *csapi.ProjectGroup) *ProjectGroupResponse {
|
||||||
|
|
|
@ -19,8 +19,8 @@ import (
|
||||||
|
|
||||||
gitsource "agola.io/agola/internal/gitsources"
|
gitsource "agola.io/agola/internal/gitsources"
|
||||||
csapi "agola.io/agola/internal/services/configstore/api"
|
csapi "agola.io/agola/internal/services/configstore/api"
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/action"
|
"agola.io/agola/internal/services/gateway/action"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
@ -76,7 +76,7 @@ func (h *UserRemoteReposHandler) ServeHTTP(w http.ResponseWriter, r *http.Reques
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var la *types.LinkedAccount
|
var la *cstypes.LinkedAccount
|
||||||
for _, v := range user.LinkedAccounts {
|
for _, v := range user.LinkedAccounts {
|
||||||
if v.RemoteSourceID == rs.ID {
|
if v.RemoteSourceID == rs.ID {
|
||||||
la = v
|
la = v
|
||||||
|
|
|
@ -19,13 +19,13 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/action"
|
"agola.io/agola/internal/services/gateway/action"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
errors "golang.org/x/xerrors"
|
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
errors "golang.org/x/xerrors"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CreateRemoteSourceRequest struct {
|
type CreateRemoteSourceRequest struct {
|
||||||
|
@ -152,7 +152,7 @@ type RemoteSourceResponse struct {
|
||||||
LoginEnabled bool `json:"login_enabled"`
|
LoginEnabled bool `json:"login_enabled"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func createRemoteSourceResponse(r *types.RemoteSource) *RemoteSourceResponse {
|
func createRemoteSourceResponse(r *cstypes.RemoteSource) *RemoteSourceResponse {
|
||||||
rs := &RemoteSourceResponse{
|
rs := &RemoteSourceResponse{
|
||||||
ID: r.ID,
|
ID: r.ID,
|
||||||
Name: r.Name,
|
Name: r.Name,
|
||||||
|
|
|
@ -19,12 +19,12 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
csapi "agola.io/agola/internal/services/configstore/api"
|
csapi "agola.io/agola/internal/services/configstore/api"
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/action"
|
"agola.io/agola/internal/services/gateway/action"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
"go.uber.org/zap"
|
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
type SecretResponse struct {
|
type SecretResponse struct {
|
||||||
|
@ -85,7 +85,7 @@ func (h *SecretHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
type CreateSecretRequest struct {
|
type CreateSecretRequest struct {
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
|
|
||||||
Type types.SecretType `json:"type,omitempty"`
|
Type cstypes.SecretType `json:"type,omitempty"`
|
||||||
|
|
||||||
// internal secret
|
// internal secret
|
||||||
Data map[string]string `json:"data,omitempty"`
|
Data map[string]string `json:"data,omitempty"`
|
||||||
|
@ -142,7 +142,7 @@ func (h *CreateSecretHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
||||||
type UpdateSecretRequest struct {
|
type UpdateSecretRequest struct {
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
|
|
||||||
Type types.SecretType `json:"type,omitempty"`
|
Type cstypes.SecretType `json:"type,omitempty"`
|
||||||
|
|
||||||
// internal secret
|
// internal secret
|
||||||
Data map[string]string `json:"data,omitempty"`
|
Data map[string]string `json:"data,omitempty"`
|
||||||
|
|
|
@ -22,8 +22,8 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
gitsource "agola.io/agola/internal/gitsources"
|
gitsource "agola.io/agola/internal/gitsources"
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/action"
|
"agola.io/agola/internal/services/gateway/action"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
@ -166,7 +166,7 @@ type LinkedAccountResponse struct {
|
||||||
RemoteUserAvatarURL string `json:"remote_user_avatar_url"`
|
RemoteUserAvatarURL string `json:"remote_user_avatar_url"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func createUserResponse(u *types.User) *UserResponse {
|
func createUserResponse(u *cstypes.User) *UserResponse {
|
||||||
user := &UserResponse{
|
user := &UserResponse{
|
||||||
ID: u.ID,
|
ID: u.ID,
|
||||||
UserName: u.Name,
|
UserName: u.Name,
|
||||||
|
@ -256,8 +256,8 @@ type CreateUserLARequest struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type CreateUserLAResponse struct {
|
type CreateUserLAResponse struct {
|
||||||
LinkedAccount *types.LinkedAccount `json:"linked_account"`
|
LinkedAccount *cstypes.LinkedAccount `json:"linked_account"`
|
||||||
Oauth2Redirect string `json:"oauth2_redirect"`
|
Oauth2Redirect string `json:"oauth2_redirect"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CreateUserLAHandler struct {
|
type CreateUserLAHandler struct {
|
||||||
|
|
|
@ -20,8 +20,8 @@ import (
|
||||||
|
|
||||||
"agola.io/agola/internal/services/common"
|
"agola.io/agola/internal/services/common"
|
||||||
csapi "agola.io/agola/internal/services/configstore/api"
|
csapi "agola.io/agola/internal/services/configstore/api"
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/gateway/action"
|
"agola.io/agola/internal/services/gateway/action"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ type VariableValue struct {
|
||||||
SecretVar string `json:"secret_var"`
|
SecretVar string `json:"secret_var"`
|
||||||
MatchingSecretParentPath string `json:"matching_secret_parent_path"`
|
MatchingSecretParentPath string `json:"matching_secret_parent_path"`
|
||||||
|
|
||||||
When *types.When `json:"when"`
|
When *cstypes.When `json:"when"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type VariableResponse struct {
|
type VariableResponse struct {
|
||||||
|
@ -113,7 +113,7 @@ func (h *VariableHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
type CreateVariableRequest struct {
|
type CreateVariableRequest struct {
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
|
|
||||||
Values []types.VariableValue `json:"values,omitempty"`
|
Values []cstypes.VariableValue `json:"values,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CreateVariableHandler struct {
|
type CreateVariableHandler struct {
|
||||||
|
@ -160,7 +160,7 @@ func (h *CreateVariableHandler) ServeHTTP(w http.ResponseWriter, r *http.Request
|
||||||
type UpdateVariableRequest struct {
|
type UpdateVariableRequest struct {
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
|
|
||||||
Values []types.VariableValue `json:"values,omitempty"`
|
Values []cstypes.VariableValue `json:"values,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type UpdateVariableHandler struct {
|
type UpdateVariableHandler struct {
|
||||||
|
|
|
@ -88,7 +88,7 @@ type Backoff struct {
|
||||||
//
|
//
|
||||||
// If the condition never returns true, ErrWaitTimeout is returned. All other
|
// If the condition never returns true, ErrWaitTimeout is returned. All other
|
||||||
// errors terminate immediately.
|
// errors terminate immediately.
|
||||||
func ExponentialBackoff(ctx context.Context,backoff Backoff, condition ConditionFunc) error {
|
func ExponentialBackoff(ctx context.Context, backoff Backoff, condition ConditionFunc) error {
|
||||||
duration := backoff.Duration
|
duration := backoff.Duration
|
||||||
for i := 0; i < backoff.Steps; i++ {
|
for i := 0; i < backoff.Steps; i++ {
|
||||||
if i != 0 {
|
if i != 0 {
|
||||||
|
|
|
@ -28,6 +28,7 @@ import (
|
||||||
slog "agola.io/agola/internal/log"
|
slog "agola.io/agola/internal/log"
|
||||||
"agola.io/agola/internal/services/config"
|
"agola.io/agola/internal/services/config"
|
||||||
"agola.io/agola/internal/services/configstore"
|
"agola.io/agola/internal/services/configstore"
|
||||||
|
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||||
"agola.io/agola/internal/services/executor"
|
"agola.io/agola/internal/services/executor"
|
||||||
"agola.io/agola/internal/services/gateway"
|
"agola.io/agola/internal/services/gateway"
|
||||||
gwapi "agola.io/agola/internal/services/gateway/api"
|
gwapi "agola.io/agola/internal/services/gateway/api"
|
||||||
|
@ -36,7 +37,6 @@ import (
|
||||||
rsscheduler "agola.io/agola/internal/services/runservice"
|
rsscheduler "agola.io/agola/internal/services/runservice"
|
||||||
rstypes "agola.io/agola/internal/services/runservice/types"
|
rstypes "agola.io/agola/internal/services/runservice/types"
|
||||||
"agola.io/agola/internal/services/scheduler"
|
"agola.io/agola/internal/services/scheduler"
|
||||||
"agola.io/agola/internal/services/types"
|
|
||||||
"agola.io/agola/internal/testutil"
|
"agola.io/agola/internal/testutil"
|
||||||
"agola.io/agola/internal/util"
|
"agola.io/agola/internal/util"
|
||||||
|
|
||||||
|
@ -427,7 +427,7 @@ func createProject(ctx context.Context, t *testing.T, giteaClient *gitea.Client,
|
||||||
ParentRef: path.Join("user", agolaUser01),
|
ParentRef: path.Join("user", agolaUser01),
|
||||||
RemoteSourceName: "gitea",
|
RemoteSourceName: "gitea",
|
||||||
RepoPath: path.Join(giteaUser01, "repo01"),
|
RepoPath: path.Join(giteaUser01, "repo01"),
|
||||||
Visibility: types.VisibilityPublic,
|
Visibility: cstypes.VisibilityPublic,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected err: %v", err)
|
t.Fatalf("unexpected err: %v", err)
|
||||||
|
|
Loading…
Reference in New Issue