Merge pull request #77 from sgotti/export_api_client_types
*: export clients and related types
This commit is contained in:
commit
b333b6f423
|
@ -36,7 +36,7 @@ local task_build_go(version, arch) = {
|
|||
{ type: 'run', command: 'golangci-lint run --deadline 5m' },
|
||||
{ type: 'run', name: 'build docker/k8s drivers tests binary', command: 'CGO_ENABLED=0 go test -c ./internal/services/executor/driver -o ./bin/docker-tests' },
|
||||
{ type: 'run', name: 'build integration tests binary', command: 'go test -tags "sqlite_unlock_notify" -c ./tests -o ./bin/integration-tests' },
|
||||
{ type: 'run', name: 'run tests', command: 'SKIP_DOCKER_TESTS=1 SKIP_K8S_TESTS=1 go test -v -count 1 ./cmd/... ./internal/...' },
|
||||
{ type: 'run', name: 'run tests', command: 'SKIP_DOCKER_TESTS=1 SKIP_K8S_TESTS=1 go test -v -count 1 $(go list ./... | grep -v /tests)' },
|
||||
{ type: 'run', name: 'fetch gitea binary for integration tests', command: 'curl -L https://github.com/go-gitea/gitea/releases/download/v1.8.3/gitea-1.8.3-linux-amd64 -o ./bin/gitea && chmod +x ./bin/gitea' },
|
||||
{ type: 'save_to_workspace', contents: [{ source_dir: './bin', dest_dir: '/bin/', paths: ['*'] }] },
|
||||
],
|
||||
|
|
|
@ -20,8 +20,9 @@ import (
|
|||
"path"
|
||||
|
||||
gitsave "agola.io/agola/internal/git-save"
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
"agola.io/agola/internal/util"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
uuid "github.com/satori/go.uuid"
|
||||
"github.com/spf13/cobra"
|
||||
|
@ -62,7 +63,7 @@ func init() {
|
|||
}
|
||||
|
||||
func directRunStart(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
user, _, err := gwclient.GetCurrentUser(context.TODO())
|
||||
if err != nil {
|
||||
|
@ -102,7 +103,7 @@ func directRunStart(cmd *cobra.Command, args []string) error {
|
|||
}
|
||||
|
||||
log.Infof("starting direct run")
|
||||
req := &api.UserCreateRunRequest{
|
||||
req := &gwapitypes.UserCreateRunRequest{
|
||||
RepoUUID: repoUUID,
|
||||
RepoPath: repoPath,
|
||||
Branch: branch,
|
||||
|
|
|
@ -17,8 +17,8 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -55,16 +55,16 @@ func init() {
|
|||
}
|
||||
|
||||
func orgCreate(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
// TODO(sgotti) make this a custom pflag Value?
|
||||
if !cstypes.IsValidVisibility(cstypes.Visibility(orgCreateOpts.visibility)) {
|
||||
if !IsValidVisibility(orgCreateOpts.visibility) {
|
||||
return errors.Errorf("invalid visibility %q", orgCreateOpts.visibility)
|
||||
}
|
||||
|
||||
req := &api.CreateOrgRequest{
|
||||
req := &gwapitypes.CreateOrgRequest{
|
||||
Name: orgCreateOpts.name,
|
||||
Visibility: cstypes.Visibility(orgCreateOpts.visibility),
|
||||
Visibility: gwapitypes.Visibility(orgCreateOpts.visibility),
|
||||
}
|
||||
|
||||
log.Infof("creating org")
|
||||
|
|
|
@ -17,7 +17,7 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -52,7 +52,7 @@ func init() {
|
|||
}
|
||||
|
||||
func orgDelete(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
log.Infof("deleting organization %q", orgDeleteOpts.name)
|
||||
if _, err := gwclient.DeleteOrg(context.TODO(), orgDeleteOpts.name); err != nil {
|
||||
|
|
|
@ -17,8 +17,8 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -60,10 +60,10 @@ func init() {
|
|||
}
|
||||
|
||||
func orgMemberAdd(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
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, cstypes.MemberRole(orgMemberAddOpts.role))
|
||||
_, _, err := gwclient.AddOrgMember(context.TODO(), orgMemberAddOpts.orgname, orgMemberAddOpts.username, gwapitypes.MemberRole(orgMemberAddOpts.role))
|
||||
if err != nil {
|
||||
return errors.Errorf("failed to add/update organization member: %w", err)
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ import (
|
|||
"encoding/json"
|
||||
"os"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -54,7 +54,7 @@ func init() {
|
|||
}
|
||||
|
||||
func orgMemberList(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
orgMembers, _, err := gwclient.GetOrgMembers(context.TODO(), orgMemberListOpts.orgname)
|
||||
if err != nil {
|
||||
|
|
|
@ -17,7 +17,7 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -57,7 +57,7 @@ func init() {
|
|||
}
|
||||
|
||||
func orgMemberRemove(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
log.Infof("removing member %q from organization %q", orgMemberRemoveOpts.username, orgMemberRemoveOpts.orgname)
|
||||
_, err := gwclient.RemoveOrgMember(context.TODO(), orgMemberRemoveOpts.orgname, orgMemberRemoveOpts.username)
|
||||
|
|
|
@ -17,8 +17,8 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -71,18 +71,28 @@ func init() {
|
|||
cmdProject.AddCommand(cmdProjectCreate)
|
||||
}
|
||||
|
||||
func IsValidVisibility(v string) bool {
|
||||
switch gwapitypes.Visibility(v) {
|
||||
case gwapitypes.VisibilityPublic:
|
||||
case gwapitypes.VisibilityPrivate:
|
||||
default:
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func projectCreate(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
// TODO(sgotti) make this a custom pflag Value?
|
||||
if !cstypes.IsValidVisibility(cstypes.Visibility(projectCreateOpts.visibility)) {
|
||||
if !IsValidVisibility(projectCreateOpts.visibility) {
|
||||
return errors.Errorf("invalid visibility %q", projectCreateOpts.visibility)
|
||||
}
|
||||
|
||||
req := &api.CreateProjectRequest{
|
||||
req := &gwapitypes.CreateProjectRequest{
|
||||
Name: projectCreateOpts.name,
|
||||
ParentRef: projectCreateOpts.parentPath,
|
||||
Visibility: cstypes.Visibility(projectCreateOpts.visibility),
|
||||
Visibility: gwapitypes.Visibility(projectCreateOpts.visibility),
|
||||
RepoPath: projectCreateOpts.repoPath,
|
||||
RemoteSourceName: projectCreateOpts.remoteSourceName,
|
||||
SkipSSHHostKeyCheck: projectCreateOpts.skipSSHHostKeyCheck,
|
||||
|
|
|
@ -17,7 +17,7 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -52,7 +52,7 @@ func init() {
|
|||
}
|
||||
|
||||
func projectDelete(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
log.Infof("deleting project")
|
||||
|
||||
|
|
|
@ -17,8 +17,8 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -60,17 +60,17 @@ func init() {
|
|||
}
|
||||
|
||||
func projectGroupCreate(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
// TODO(sgotti) make this a custom pflag Value?
|
||||
if !cstypes.IsValidVisibility(cstypes.Visibility(projectCreateOpts.visibility)) {
|
||||
return errors.Errorf("invalid visibility %q", projectCreateOpts.visibility)
|
||||
if !IsValidVisibility(projectGroupCreateOpts.visibility) {
|
||||
return errors.Errorf("invalid visibility %q", projectGroupCreateOpts.visibility)
|
||||
}
|
||||
|
||||
req := &api.CreateProjectGroupRequest{
|
||||
req := &gwapitypes.CreateProjectGroupRequest{
|
||||
Name: projectGroupCreateOpts.name,
|
||||
ParentRef: projectGroupCreateOpts.parentPath,
|
||||
Visibility: cstypes.Visibility(projectCreateOpts.visibility),
|
||||
Visibility: gwapitypes.Visibility(projectGroupCreateOpts.visibility),
|
||||
}
|
||||
|
||||
log.Infof("creating project group")
|
||||
|
|
|
@ -18,7 +18,9 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
@ -50,14 +52,14 @@ func init() {
|
|||
cmdProject.AddCommand(cmdProjectList)
|
||||
}
|
||||
|
||||
func printProjects(projects []*api.ProjectResponse) {
|
||||
func printProjects(projects []*gwapitypes.ProjectResponse) {
|
||||
for _, project := range projects {
|
||||
fmt.Printf("%s: Name: %s\n", project.ID, project.Name)
|
||||
}
|
||||
}
|
||||
|
||||
func projectList(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
projects, _, err := gwclient.GetProjectGroupProjects(context.TODO(), projectListOpts.parentPath)
|
||||
if err != nil {
|
||||
|
|
|
@ -17,7 +17,7 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -52,7 +52,7 @@ func init() {
|
|||
}
|
||||
|
||||
func projectReconfig(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
log.Infof("reconfiguring remote project")
|
||||
if _, err := gwclient.ReconfigProject(context.TODO(), projectReconfigOpts.name); err != nil {
|
||||
|
|
|
@ -19,8 +19,8 @@ import (
|
|||
"io/ioutil"
|
||||
"os"
|
||||
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/ghodss/yaml"
|
||||
"github.com/spf13/cobra"
|
||||
|
@ -73,7 +73,7 @@ func init() {
|
|||
}
|
||||
|
||||
func secretCreate(cmd *cobra.Command, ownertype string, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
// "github.com/ghodss/yaml" doesn't provide a streaming decoder
|
||||
var data []byte
|
||||
|
@ -94,9 +94,9 @@ func secretCreate(cmd *cobra.Command, ownertype string, args []string) error {
|
|||
if err := yaml.Unmarshal(data, &secretData); err != nil {
|
||||
log.Fatalf("failed to unmarshal secret: %v", err)
|
||||
}
|
||||
req := &api.CreateSecretRequest{
|
||||
req := &gwapitypes.CreateSecretRequest{
|
||||
Name: secretCreateOpts.name,
|
||||
Type: cstypes.SecretTypeInternal,
|
||||
Type: gwapitypes.SecretTypeInternal,
|
||||
Data: secretData,
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -57,7 +57,7 @@ func init() {
|
|||
}
|
||||
|
||||
func secretDelete(cmd *cobra.Command, ownertype string, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
switch ownertype {
|
||||
case "project":
|
||||
|
|
|
@ -19,8 +19,8 @@ import (
|
|||
"io/ioutil"
|
||||
"os"
|
||||
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/ghodss/yaml"
|
||||
"github.com/spf13/cobra"
|
||||
|
@ -75,7 +75,7 @@ func init() {
|
|||
}
|
||||
|
||||
func secretUpdate(cmd *cobra.Command, ownertype string, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
// "github.com/ghodss/yaml" doesn't provide a streaming decoder
|
||||
var data []byte
|
||||
|
@ -96,9 +96,9 @@ func secretUpdate(cmd *cobra.Command, ownertype string, args []string) error {
|
|||
if err := yaml.Unmarshal(data, &secretData); err != nil {
|
||||
log.Fatalf("failed to unmarshal secret: %v", err)
|
||||
}
|
||||
req := &api.UpdateSecretRequest{
|
||||
req := &gwapitypes.UpdateSecretRequest{
|
||||
Name: secretUpdateOpts.name,
|
||||
Type: cstypes.SecretTypeInternal,
|
||||
Type: gwapitypes.SecretTypeInternal,
|
||||
Data: secretData,
|
||||
}
|
||||
|
||||
|
|
|
@ -19,9 +19,8 @@ import (
|
|||
"io/ioutil"
|
||||
"os"
|
||||
|
||||
"agola.io/agola/internal/config"
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/ghodss/yaml"
|
||||
"github.com/spf13/cobra"
|
||||
|
@ -92,11 +91,11 @@ type VariableValue struct {
|
|||
SecretName string `json:"secret_name,omitempty"`
|
||||
SecretVar string `json:"secret_var,omitempty"`
|
||||
|
||||
When *config.When `json:"when,omitempty"`
|
||||
When *gwapitypes.When `json:"when,omitempty"`
|
||||
}
|
||||
|
||||
func variableCreate(cmd *cobra.Command, ownertype string, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
// "github.com/ghodss/yaml" doesn't provide a streaming decoder
|
||||
var data []byte
|
||||
|
@ -117,15 +116,15 @@ func variableCreate(cmd *cobra.Command, ownertype string, args []string) error {
|
|||
if err := yaml.Unmarshal(data, &values); err != nil {
|
||||
log.Fatalf("failed to unmarshal values: %v", err)
|
||||
}
|
||||
rvalues := []cstypes.VariableValue{}
|
||||
rvalues := []gwapitypes.VariableValueRequest{}
|
||||
for _, value := range values {
|
||||
rvalues = append(rvalues, cstypes.VariableValue{
|
||||
rvalues = append(rvalues, gwapitypes.VariableValueRequest{
|
||||
SecretName: value.SecretName,
|
||||
SecretVar: value.SecretVar,
|
||||
When: (*cstypes.When)(value.When),
|
||||
When: value.When,
|
||||
})
|
||||
}
|
||||
req := &api.CreateVariableRequest{
|
||||
req := &gwapitypes.CreateVariableRequest{
|
||||
Name: variableCreateOpts.name,
|
||||
Values: rvalues,
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -57,7 +57,7 @@ func init() {
|
|||
}
|
||||
|
||||
func variableDelete(cmd *cobra.Command, ownertype string, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
switch ownertype {
|
||||
case "project":
|
||||
|
|
|
@ -19,8 +19,8 @@ import (
|
|||
"io/ioutil"
|
||||
"os"
|
||||
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/ghodss/yaml"
|
||||
"github.com/spf13/cobra"
|
||||
|
@ -68,7 +68,7 @@ func init() {
|
|||
}
|
||||
|
||||
func variableUpdate(cmd *cobra.Command, ownertype string, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
// "github.com/ghodss/yaml" doesn't provide a streaming decoder
|
||||
var data []byte
|
||||
|
@ -89,15 +89,15 @@ func variableUpdate(cmd *cobra.Command, ownertype string, args []string) error {
|
|||
if err := yaml.Unmarshal(data, &values); err != nil {
|
||||
log.Fatalf("failed to unmarshall values: %v", err)
|
||||
}
|
||||
rvalues := []cstypes.VariableValue{}
|
||||
rvalues := []gwapitypes.VariableValueRequest{}
|
||||
for _, value := range values {
|
||||
rvalues = append(rvalues, cstypes.VariableValue{
|
||||
rvalues = append(rvalues, gwapitypes.VariableValueRequest{
|
||||
SecretName: value.SecretName,
|
||||
SecretVar: value.SecretVar,
|
||||
When: (*cstypes.When)(value.When),
|
||||
When: value.When,
|
||||
})
|
||||
}
|
||||
req := &api.UpdateVariableRequest{
|
||||
req := &gwapitypes.UpdateVariableRequest{
|
||||
Name: variableUpdateOpts.name,
|
||||
Values: rvalues,
|
||||
}
|
||||
|
|
|
@ -18,9 +18,9 @@ import (
|
|||
"context"
|
||||
|
||||
"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/util"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
"agola.io/agola/util"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -81,10 +81,10 @@ func init() {
|
|||
}
|
||||
|
||||
func remoteSourceCreate(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
// for github remote source type, set defaults for github.com
|
||||
if remoteSourceCreateOpts.rsType == string(cstypes.RemoteSourceTypeGithub) {
|
||||
if remoteSourceCreateOpts.rsType == "github" {
|
||||
remoteSourceCreateOpts.apiURL = github.GitHubAPIURL
|
||||
remoteSourceCreateOpts.sshHostKey = github.GitHubSSHHostKey
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ func remoteSourceCreate(cmd *cobra.Command, args []string) error {
|
|||
return errors.Errorf(`required flag "api-url" not set`)
|
||||
}
|
||||
|
||||
req := &api.CreateRemoteSourceRequest{
|
||||
req := &gwapitypes.CreateRemoteSourceRequest{
|
||||
Name: remoteSourceCreateOpts.name,
|
||||
Type: remoteSourceCreateOpts.rsType,
|
||||
AuthType: remoteSourceCreateOpts.authType,
|
||||
|
|
|
@ -18,7 +18,9 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
@ -48,14 +50,14 @@ func init() {
|
|||
cmdRemoteSource.AddCommand(cmdRemoteSourceList)
|
||||
}
|
||||
|
||||
func printRemoteSources(remoteSources []*api.RemoteSourceResponse) {
|
||||
func printRemoteSources(remoteSources []*gwapitypes.RemoteSourceResponse) {
|
||||
for _, rs := range remoteSources {
|
||||
fmt.Printf("%s: Name: %s\n", rs.ID, rs.Name)
|
||||
}
|
||||
}
|
||||
|
||||
func remoteSourceList(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
remouteSources, _, err := gwclient.GetRemoteSources(context.TODO(), remoteSourceListOpts.start, remoteSourceListOpts.limit, false)
|
||||
if err != nil {
|
||||
|
|
|
@ -17,7 +17,8 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -71,9 +72,9 @@ func init() {
|
|||
}
|
||||
|
||||
func remoteSourceUpdate(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
req := &api.UpdateRemoteSourceRequest{}
|
||||
req := &gwapitypes.UpdateRemoteSourceRequest{}
|
||||
|
||||
flags := cmd.Flags()
|
||||
if flags.Changed("new-name") {
|
||||
|
|
|
@ -19,7 +19,8 @@ import (
|
|||
"fmt"
|
||||
"path"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
|
@ -59,7 +60,7 @@ func init() {
|
|||
cmdRun.AddCommand(cmdRunList)
|
||||
}
|
||||
|
||||
func printRuns(runs []*api.RunResponse) {
|
||||
func printRuns(runs []*gwapitypes.RunResponse) {
|
||||
for _, run := range runs {
|
||||
fmt.Printf("%s: Phase: %s, Result: %s\n", run.ID, run.Phase, run.Result)
|
||||
for _, task := range run.Tasks {
|
||||
|
@ -69,7 +70,7 @@ func printRuns(runs []*api.RunResponse) {
|
|||
}
|
||||
|
||||
func runList(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
project, _, err := gwclient.GetProject(context.TODO(), runListOpts.projectRef)
|
||||
if err != nil {
|
||||
|
@ -81,7 +82,7 @@ func runList(cmd *cobra.Command, args []string) error {
|
|||
return err
|
||||
}
|
||||
|
||||
runs := make([]*api.RunResponse, len(runsResp))
|
||||
runs := make([]*gwapitypes.RunResponse, len(runsResp))
|
||||
for i, runResponse := range runsResp {
|
||||
run, _, err := gwclient.GetRun(context.TODO(), runResponse.ID)
|
||||
if err != nil {
|
||||
|
|
|
@ -17,7 +17,8 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -52,9 +53,9 @@ func init() {
|
|||
}
|
||||
|
||||
func userCreate(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
req := &api.CreateUserRequest{
|
||||
req := &gwapitypes.CreateUserRequest{
|
||||
UserName: userCreateOpts.username,
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -52,7 +52,7 @@ func init() {
|
|||
}
|
||||
|
||||
func userDelete(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
log.Infof("deleting user %q", userDeleteOpts.username)
|
||||
if _, err := gwclient.DeleteUser(context.TODO(), userDeleteOpts.username); err != nil {
|
||||
|
|
|
@ -17,7 +17,8 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -61,9 +62,9 @@ func init() {
|
|||
}
|
||||
|
||||
func userLACreate(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
req := &api.CreateUserLARequest{
|
||||
req := &gwapitypes.CreateUserLARequest{
|
||||
RemoteSourceName: userLACreateOpts.remoteSourceName,
|
||||
RemoteSourceLoginName: userLACreateOpts.remoteSourceLoginName,
|
||||
RemoteSourceLoginPassword: userLACreateOpts.remoteSourceLoginPassword,
|
||||
|
|
|
@ -17,7 +17,7 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -57,7 +57,7 @@ func init() {
|
|||
}
|
||||
|
||||
func userLADelete(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
userName := userLADeleteOpts.userName
|
||||
laID := userLADeleteOpts.laID
|
||||
|
|
|
@ -18,7 +18,9 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
@ -48,14 +50,14 @@ func init() {
|
|||
cmdUser.AddCommand(cmdUserList)
|
||||
}
|
||||
|
||||
func printUsers(users []*api.UserResponse) {
|
||||
func printUsers(users []*gwapitypes.UserResponse) {
|
||||
for _, user := range users {
|
||||
fmt.Printf("%s: Name: %s\n", user.ID, user.UserName)
|
||||
}
|
||||
}
|
||||
|
||||
func userList(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
users, _, err := gwclient.GetUsers(context.TODO(), userListOpts.start, userListOpts.limit, false)
|
||||
if err != nil {
|
||||
|
|
|
@ -18,7 +18,8 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -58,9 +59,9 @@ func init() {
|
|||
}
|
||||
|
||||
func userTokenCreate(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
req := &api.CreateUserTokenRequest{
|
||||
req := &gwapitypes.CreateUserTokenRequest{
|
||||
TokenName: userTokenCreateOpts.tokenName,
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
gwclient "agola.io/agola/services/gateway/client"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -57,7 +57,7 @@ func init() {
|
|||
}
|
||||
|
||||
func userTokenDelete(cmd *cobra.Command, args []string) error {
|
||||
gwclient := api.NewClient(gatewayURL, token)
|
||||
gwclient := gwclient.NewClient(gatewayURL, token)
|
||||
|
||||
userName := userTokenDeleteOpts.userName
|
||||
tokenName := userTokenDeleteOpts.tokenName
|
||||
|
|
|
@ -20,9 +20,9 @@ import (
|
|||
"regexp"
|
||||
"strings"
|
||||
|
||||
"agola.io/agola/internal/common"
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
"agola.io/agola/services/types"
|
||||
|
||||
"github.com/ghodss/yaml"
|
||||
"github.com/google/go-jsonnet"
|
||||
|
@ -83,7 +83,7 @@ type DockerRegistryAuth struct {
|
|||
|
||||
type Runtime struct {
|
||||
Type RuntimeType `json:"type,omitempty"`
|
||||
Arch common.Arch `json:"arch,omitempty"`
|
||||
Arch types.Arch `json:"arch,omitempty"`
|
||||
Containers []*Container `json:"containers,omitempty"`
|
||||
}
|
||||
|
||||
|
@ -702,7 +702,7 @@ func checkConfig(config *Config) error {
|
|||
return errors.Errorf("task %q runtime: at least one container must be defined", task.Name)
|
||||
}
|
||||
if r.Arch != "" {
|
||||
if !common.IsValidArch(r.Arch) {
|
||||
if !types.IsValidArch(r.Arch) {
|
||||
return errors.Errorf("task %q runtime: invalid arch %q", task.Name, r.Arch)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,8 +18,8 @@ import (
|
|||
"fmt"
|
||||
"testing"
|
||||
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -35,7 +35,6 @@ var (
|
|||
tagRefPrefix = "refs/tags/"
|
||||
)
|
||||
|
||||
// Client represents a Gogs API client.
|
||||
type Client struct {
|
||||
url string
|
||||
client *http.Client
|
||||
|
|
|
@ -19,9 +19,9 @@ import (
|
|||
"strings"
|
||||
|
||||
"agola.io/agola/internal/config"
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
rstypes "agola.io/agola/internal/services/runservice/types"
|
||||
"agola.io/agola/internal/util"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
rstypes "agola.io/agola/services/runservice/types"
|
||||
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
|
|
@ -20,9 +20,9 @@ import (
|
|||
"testing"
|
||||
|
||||
"agola.io/agola/internal/config"
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
rstypes "agola.io/agola/internal/services/runservice/types"
|
||||
"agola.io/agola/internal/util"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
rstypes "agola.io/agola/services/runservice/types"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -19,7 +19,7 @@ import (
|
|||
"agola.io/agola/internal/gitsources/gitea"
|
||||
"agola.io/agola/internal/gitsources/github"
|
||||
"agola.io/agola/internal/gitsources/gitlab"
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
|
|
@ -15,20 +15,20 @@
|
|||
package common
|
||||
|
||||
import (
|
||||
csapi "agola.io/agola/internal/services/configstore/api"
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
)
|
||||
|
||||
func FilterOverriddenVariables(variables []*csapi.Variable) []*csapi.Variable {
|
||||
variablesMap := map[string]*csapi.Variable{}
|
||||
func FilterOverriddenVariables(variables []*csapitypes.Variable) []*csapitypes.Variable {
|
||||
variablesMap := map[string]*csapitypes.Variable{}
|
||||
for _, v := range variables {
|
||||
if _, ok := variablesMap[v.Name]; !ok {
|
||||
variablesMap[v.Name] = v
|
||||
}
|
||||
}
|
||||
|
||||
filteredVariables := make([]*csapi.Variable, len(variablesMap))
|
||||
filteredVariables := make([]*csapitypes.Variable, len(variablesMap))
|
||||
i := 0
|
||||
// keep the original order
|
||||
for _, v := range variables {
|
||||
|
@ -43,9 +43,9 @@ func FilterOverriddenVariables(variables []*csapi.Variable) []*csapi.Variable {
|
|||
return filteredVariables
|
||||
}
|
||||
|
||||
func GetVarValueMatchingSecret(varval cstypes.VariableValue, varParentPath string, secrets []*csapi.Secret) *csapi.Secret {
|
||||
func GetVarValueMatchingSecret(varval cstypes.VariableValue, varParentPath string, secrets []*csapitypes.Secret) *csapitypes.Secret {
|
||||
// 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 *csapitypes.Secret
|
||||
for _, s := range secrets {
|
||||
// we assume the root path will be the same
|
||||
if s.Name != varval.SecretName {
|
||||
|
|
|
@ -17,84 +17,85 @@ package common
|
|||
import (
|
||||
"testing"
|
||||
|
||||
csapi "agola.io/agola/internal/services/configstore/api"
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
)
|
||||
|
||||
func TestFilterOverriddenVariables(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
variables []*csapi.Variable
|
||||
out []*csapi.Variable
|
||||
variables []*csapitypes.Variable
|
||||
out []*csapitypes.Variable
|
||||
}{
|
||||
{
|
||||
name: "test empty variables",
|
||||
variables: []*csapi.Variable{},
|
||||
out: []*csapi.Variable{},
|
||||
variables: []*csapitypes.Variable{},
|
||||
out: []*csapitypes.Variable{},
|
||||
},
|
||||
{
|
||||
name: "test variable overrides",
|
||||
variables: []*csapi.Variable{
|
||||
variables: []*csapitypes.Variable{
|
||||
// variables must be in depth (from leaves to root) order as returned by the
|
||||
// configstore apis
|
||||
&csapi.Variable{
|
||||
&csapitypes.Variable{
|
||||
Variable: &cstypes.Variable{
|
||||
Name: "var04",
|
||||
},
|
||||
ParentPath: "org/org01/projectgroup02/projectgroup03/project02",
|
||||
},
|
||||
&csapi.Variable{
|
||||
&csapitypes.Variable{
|
||||
Variable: &cstypes.Variable{
|
||||
Name: "var03",
|
||||
},
|
||||
ParentPath: "org/org01/projectgroup01/project01",
|
||||
},
|
||||
&csapi.Variable{
|
||||
&csapitypes.Variable{
|
||||
Variable: &cstypes.Variable{
|
||||
Name: "var02",
|
||||
},
|
||||
ParentPath: "org/org01/projectgroup01/project01",
|
||||
},
|
||||
&csapi.Variable{
|
||||
&csapitypes.Variable{
|
||||
Variable: &cstypes.Variable{
|
||||
Name: "var02",
|
||||
},
|
||||
ParentPath: "org/org01/projectgroup01",
|
||||
},
|
||||
&csapi.Variable{
|
||||
&csapitypes.Variable{
|
||||
Variable: &cstypes.Variable{
|
||||
Name: "var01",
|
||||
},
|
||||
ParentPath: "org/org01/projectgroup01",
|
||||
},
|
||||
&csapi.Variable{
|
||||
&csapitypes.Variable{
|
||||
Variable: &cstypes.Variable{
|
||||
Name: "var01",
|
||||
},
|
||||
ParentPath: "org/org01",
|
||||
},
|
||||
},
|
||||
out: []*csapi.Variable{
|
||||
&csapi.Variable{
|
||||
out: []*csapitypes.Variable{
|
||||
&csapitypes.Variable{
|
||||
Variable: &cstypes.Variable{
|
||||
Name: "var04",
|
||||
},
|
||||
ParentPath: "org/org01/projectgroup02/projectgroup03/project02",
|
||||
},
|
||||
&csapi.Variable{
|
||||
&csapitypes.Variable{
|
||||
Variable: &cstypes.Variable{
|
||||
Name: "var03",
|
||||
},
|
||||
ParentPath: "org/org01/projectgroup01/project01",
|
||||
},
|
||||
&csapi.Variable{
|
||||
&csapitypes.Variable{
|
||||
Variable: &cstypes.Variable{
|
||||
Name: "var02",
|
||||
},
|
||||
ParentPath: "org/org01/projectgroup01/project01",
|
||||
},
|
||||
&csapi.Variable{
|
||||
&csapitypes.Variable{
|
||||
Variable: &cstypes.Variable{
|
||||
Name: "var01",
|
||||
},
|
||||
|
@ -120,8 +121,8 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
|||
name string
|
||||
varValue cstypes.VariableValue
|
||||
varParentPath string
|
||||
secrets []*csapi.Secret
|
||||
out *csapi.Secret
|
||||
secrets []*csapitypes.Secret
|
||||
out *csapitypes.Secret
|
||||
}{
|
||||
{
|
||||
name: "test empty secrets",
|
||||
|
@ -130,7 +131,7 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
|||
SecretVar: "secretvar01",
|
||||
},
|
||||
varParentPath: "org/org01/projectgroup01/project01",
|
||||
secrets: []*csapi.Secret{},
|
||||
secrets: []*csapitypes.Secret{},
|
||||
out: nil,
|
||||
},
|
||||
{
|
||||
|
@ -140,8 +141,8 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
|||
SecretVar: "secretvar01",
|
||||
},
|
||||
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||
secrets: []*csapi.Secret{
|
||||
&csapi.Secret{
|
||||
secrets: []*csapitypes.Secret{
|
||||
&csapitypes.Secret{
|
||||
Secret: &cstypes.Secret{
|
||||
Name: "secret02",
|
||||
},
|
||||
|
@ -157,8 +158,8 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
|||
SecretVar: "secretvar01",
|
||||
},
|
||||
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||
secrets: []*csapi.Secret{
|
||||
&csapi.Secret{
|
||||
secrets: []*csapitypes.Secret{
|
||||
&csapitypes.Secret{
|
||||
Secret: &cstypes.Secret{
|
||||
Name: "secret02",
|
||||
},
|
||||
|
@ -174,8 +175,8 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
|||
SecretVar: "secretvar01",
|
||||
},
|
||||
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||
secrets: []*csapi.Secret{
|
||||
&csapi.Secret{
|
||||
secrets: []*csapitypes.Secret{
|
||||
&csapitypes.Secret{
|
||||
Secret: &cstypes.Secret{
|
||||
Name: "secret01",
|
||||
},
|
||||
|
@ -191,21 +192,21 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
|||
SecretVar: "secretvar01",
|
||||
},
|
||||
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||
secrets: []*csapi.Secret{
|
||||
&csapi.Secret{
|
||||
secrets: []*csapitypes.Secret{
|
||||
&csapitypes.Secret{
|
||||
Secret: &cstypes.Secret{
|
||||
Name: "secret01",
|
||||
},
|
||||
ParentPath: "org/org01/projectgroup01/projectgroup02/project01",
|
||||
},
|
||||
&csapi.Secret{
|
||||
&csapitypes.Secret{
|
||||
Secret: &cstypes.Secret{
|
||||
Name: "secret01",
|
||||
},
|
||||
ParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||
},
|
||||
},
|
||||
out: &csapi.Secret{
|
||||
out: &csapitypes.Secret{
|
||||
Secret: &cstypes.Secret{
|
||||
Name: "secret01",
|
||||
},
|
||||
|
@ -219,15 +220,15 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
|||
SecretVar: "secretvar01",
|
||||
},
|
||||
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||
secrets: []*csapi.Secret{
|
||||
&csapi.Secret{
|
||||
secrets: []*csapitypes.Secret{
|
||||
&csapitypes.Secret{
|
||||
Secret: &cstypes.Secret{
|
||||
Name: "secret01",
|
||||
},
|
||||
ParentPath: "org/org01/projectgroup01",
|
||||
},
|
||||
},
|
||||
out: &csapi.Secret{
|
||||
out: &csapitypes.Secret{
|
||||
Secret: &cstypes.Secret{
|
||||
Name: "secret01",
|
||||
},
|
||||
|
@ -241,29 +242,29 @@ func TestGetVarValueMatchingSecret(t *testing.T) {
|
|||
SecretVar: "secretvar01",
|
||||
},
|
||||
varParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||
secrets: []*csapi.Secret{
|
||||
secrets: []*csapitypes.Secret{
|
||||
// secrets must be in depth (from leaves to root) order as returned by the
|
||||
// configstore apis
|
||||
&csapi.Secret{
|
||||
&csapitypes.Secret{
|
||||
Secret: &cstypes.Secret{
|
||||
Name: "secret01",
|
||||
},
|
||||
ParentPath: "org/org01/projectgroup01/projectgroup02/project01",
|
||||
},
|
||||
&csapi.Secret{
|
||||
&csapitypes.Secret{
|
||||
Secret: &cstypes.Secret{
|
||||
Name: "secret01",
|
||||
},
|
||||
ParentPath: "org/org01/projectgroup01/projectgroup02",
|
||||
},
|
||||
&csapi.Secret{
|
||||
&csapitypes.Secret{
|
||||
Secret: &cstypes.Secret{
|
||||
Name: "secret01",
|
||||
},
|
||||
ParentPath: "org/org01/projectgroup01",
|
||||
},
|
||||
},
|
||||
out: &csapi.Secret{
|
||||
out: &csapitypes.Secret{
|
||||
Secret: &cstypes.Secret{
|
||||
Name: "secret01",
|
||||
},
|
||||
|
|
|
@ -23,8 +23,8 @@ import (
|
|||
"agola.io/agola/internal/datamanager"
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/readdb"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
uuid "github.com/satori/go.uuid"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -21,8 +21,8 @@ import (
|
|||
|
||||
"agola.io/agola/internal/datamanager"
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
uuid "github.com/satori/go.uuid"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -21,8 +21,8 @@ import (
|
|||
|
||||
"agola.io/agola/internal/datamanager"
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
uuid "github.com/satori/go.uuid"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -20,8 +20,8 @@ import (
|
|||
|
||||
"agola.io/agola/internal/datamanager"
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
uuid "github.com/satori/go.uuid"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -20,8 +20,8 @@ import (
|
|||
|
||||
"agola.io/agola/internal/datamanager"
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
uuid "github.com/satori/go.uuid"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -22,8 +22,8 @@ import (
|
|||
"agola.io/agola/internal/datamanager"
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/readdb"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
uuid "github.com/satori/go.uuid"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -20,8 +20,8 @@ import (
|
|||
|
||||
"agola.io/agola/internal/datamanager"
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
uuid "github.com/satori/go.uuid"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -19,8 +19,9 @@ import (
|
|||
"net/http"
|
||||
"net/url"
|
||||
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
|
|
@ -22,12 +22,13 @@ import (
|
|||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/action"
|
||||
"agola.io/agola/internal/services/configstore/readdb"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
errors "golang.org/x/xerrors"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"go.uber.org/zap"
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
type OrgHandler struct {
|
||||
|
@ -180,10 +181,6 @@ func (h *OrgsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
type AddOrgMemberRequest struct {
|
||||
Role types.MemberRole
|
||||
}
|
||||
|
||||
type AddOrgMemberHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -200,7 +197,7 @@ func (h *AddOrgMemberHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
orgRef := vars["orgref"]
|
||||
userRef := vars["userref"]
|
||||
|
||||
var req AddOrgMemberRequest
|
||||
var req csapitypes.AddOrgMemberRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -245,13 +242,8 @@ func (h *RemoveOrgMemberHandler) ServeHTTP(w http.ResponseWriter, r *http.Reques
|
|||
}
|
||||
}
|
||||
|
||||
type OrgMemberResponse struct {
|
||||
User *types.User
|
||||
Role types.MemberRole
|
||||
}
|
||||
|
||||
func orgMemberResponse(orgUser *action.OrgMemberResponse) *OrgMemberResponse {
|
||||
return &OrgMemberResponse{
|
||||
func orgMemberResponse(orgUser *action.OrgMemberResponse) *csapitypes.OrgMemberResponse {
|
||||
return &csapitypes.OrgMemberResponse{
|
||||
User: orgUser.User,
|
||||
Role: orgUser.Role,
|
||||
}
|
||||
|
@ -277,7 +269,7 @@ func (h *OrgMembersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
res := make([]*OrgMemberResponse, len(orgUsers))
|
||||
res := make([]*csapitypes.OrgMemberResponse, len(orgUsers))
|
||||
for i, orgUser := range orgUsers {
|
||||
res[i] = orgMemberResponse(orgUser)
|
||||
}
|
||||
|
|
|
@ -24,27 +24,16 @@ import (
|
|||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/action"
|
||||
"agola.io/agola/internal/services/configstore/readdb"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
errors "golang.org/x/xerrors"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"go.uber.org/zap"
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
// Project augments types.Project with dynamic data
|
||||
type Project struct {
|
||||
*types.Project
|
||||
|
||||
// dynamic data
|
||||
OwnerType types.ConfigType
|
||||
OwnerID string
|
||||
Path string
|
||||
ParentPath string
|
||||
GlobalVisibility types.Visibility
|
||||
}
|
||||
|
||||
func projectResponse(ctx context.Context, readDB *readdb.ReadDB, project *types.Project) (*Project, error) {
|
||||
func projectResponse(ctx context.Context, readDB *readdb.ReadDB, project *types.Project) (*csapitypes.Project, error) {
|
||||
r, err := projectsResponse(ctx, readDB, []*types.Project{project})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -52,8 +41,8 @@ func projectResponse(ctx context.Context, readDB *readdb.ReadDB, project *types.
|
|||
return r[0], nil
|
||||
}
|
||||
|
||||
func projectsResponse(ctx context.Context, readDB *readdb.ReadDB, projects []*types.Project) ([]*Project, error) {
|
||||
resProjects := make([]*Project, len(projects))
|
||||
func projectsResponse(ctx context.Context, readDB *readdb.ReadDB, projects []*types.Project) ([]*csapitypes.Project, error) {
|
||||
resProjects := make([]*csapitypes.Project, len(projects))
|
||||
|
||||
err := readDB.Do(ctx, func(tx *db.Tx) error {
|
||||
for i, project := range projects {
|
||||
|
@ -75,7 +64,7 @@ func projectsResponse(ctx context.Context, readDB *readdb.ReadDB, projects []*ty
|
|||
|
||||
// we calculate the path here from parent path since the db could not yet be
|
||||
// updated on create
|
||||
resProjects[i] = &Project{
|
||||
resProjects[i] = &csapitypes.Project{
|
||||
Project: project,
|
||||
OwnerType: ownerType,
|
||||
OwnerID: ownerID,
|
||||
|
|
|
@ -24,27 +24,16 @@ import (
|
|||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/action"
|
||||
"agola.io/agola/internal/services/configstore/readdb"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
errors "golang.org/x/xerrors"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"go.uber.org/zap"
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
// ProjectGroup augments types.ProjectGroup with dynamic data
|
||||
type ProjectGroup struct {
|
||||
*types.ProjectGroup
|
||||
|
||||
// dynamic data
|
||||
OwnerType types.ConfigType
|
||||
OwnerID string
|
||||
Path string
|
||||
ParentPath string
|
||||
GlobalVisibility types.Visibility
|
||||
}
|
||||
|
||||
func projectGroupResponse(ctx context.Context, readDB *readdb.ReadDB, projectGroup *types.ProjectGroup) (*ProjectGroup, error) {
|
||||
func projectGroupResponse(ctx context.Context, readDB *readdb.ReadDB, projectGroup *types.ProjectGroup) (*csapitypes.ProjectGroup, error) {
|
||||
r, err := projectGroupsResponse(ctx, readDB, []*types.ProjectGroup{projectGroup})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -52,8 +41,8 @@ func projectGroupResponse(ctx context.Context, readDB *readdb.ReadDB, projectGro
|
|||
return r[0], nil
|
||||
}
|
||||
|
||||
func projectGroupsResponse(ctx context.Context, readDB *readdb.ReadDB, projectGroups []*types.ProjectGroup) ([]*ProjectGroup, error) {
|
||||
resProjectGroups := make([]*ProjectGroup, len(projectGroups))
|
||||
func projectGroupsResponse(ctx context.Context, readDB *readdb.ReadDB, projectGroups []*types.ProjectGroup) ([]*csapitypes.ProjectGroup, error) {
|
||||
resProjectGroups := make([]*csapitypes.ProjectGroup, len(projectGroups))
|
||||
|
||||
err := readDB.Do(ctx, func(tx *db.Tx) error {
|
||||
for i, projectGroup := range projectGroups {
|
||||
|
@ -75,7 +64,7 @@ func projectGroupsResponse(ctx context.Context, readDB *readdb.ReadDB, projectGr
|
|||
|
||||
// we calculate the path here from parent path since the db could not yet be
|
||||
// updated on create
|
||||
resProjectGroups[i] = &ProjectGroup{
|
||||
resProjectGroups[i] = &csapitypes.ProjectGroup{
|
||||
ProjectGroup: projectGroup,
|
||||
OwnerType: ownerType,
|
||||
OwnerID: ownerID,
|
||||
|
|
|
@ -22,12 +22,12 @@ import (
|
|||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/action"
|
||||
"agola.io/agola/internal/services/configstore/readdb"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
errors "golang.org/x/xerrors"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"go.uber.org/zap"
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
type RemoteSourceHandler struct {
|
||||
|
|
|
@ -21,21 +21,14 @@ import (
|
|||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/action"
|
||||
"agola.io/agola/internal/services/configstore/readdb"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// Secret augments types.Secret with dynamic data
|
||||
type Secret struct {
|
||||
*types.Secret
|
||||
|
||||
// dynamic data
|
||||
ParentPath string
|
||||
}
|
||||
|
||||
type SecretHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -89,9 +82,9 @@ func (h *SecretsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
resSecrets := make([]*Secret, len(secrets))
|
||||
resSecrets := make([]*csapitypes.Secret, len(secrets))
|
||||
for i, s := range secrets {
|
||||
resSecrets[i] = &Secret{Secret: s}
|
||||
resSecrets[i] = &csapitypes.Secret{Secret: s}
|
||||
}
|
||||
|
||||
err = h.readDB.Do(ctx, func(tx *db.Tx) error {
|
||||
|
|
|
@ -18,17 +18,17 @@ import (
|
|||
"encoding/json"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"agola.io/agola/internal/db"
|
||||
action "agola.io/agola/internal/services/configstore/action"
|
||||
"agola.io/agola/internal/services/configstore/readdb"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
errors "golang.org/x/xerrors"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"go.uber.org/zap"
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
type UserHandler struct {
|
||||
|
@ -67,12 +67,6 @@ func (h *UserHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
type CreateUserRequest struct {
|
||||
UserName string `json:"user_name"`
|
||||
|
||||
CreateUserLARequest *CreateUserLARequest `json:"create_user_la_request"`
|
||||
}
|
||||
|
||||
type CreateUserHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -85,7 +79,7 @@ func NewCreateUserHandler(logger *zap.Logger, ah *action.ActionHandler) *CreateU
|
|||
func (h *CreateUserHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
|
||||
var req *CreateUserRequest
|
||||
var req *csapitypes.CreateUserRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -118,10 +112,6 @@ func (h *CreateUserHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
type UpdateUserRequest struct {
|
||||
UserName string `json:"user_name"`
|
||||
}
|
||||
|
||||
type UpdateUserHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -137,7 +127,7 @@ func (h *UpdateUserHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
vars := mux.Vars(r)
|
||||
userRef := vars["userref"]
|
||||
|
||||
var req *UpdateUserRequest
|
||||
var req *csapitypes.UpdateUserRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -305,16 +295,6 @@ func (h *UsersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
type CreateUserLARequest struct {
|
||||
RemoteSourceName string `json:"remote_source_name"`
|
||||
RemoteUserID string `json:"remote_user_id"`
|
||||
RemoteUserName string `json:"remote_user_name"`
|
||||
UserAccessToken string `json:"user_access_token"`
|
||||
Oauth2AccessToken string `json:"oauth2_access_token"`
|
||||
Oauth2RefreshToken string `json:"oauth2_refresh_token"`
|
||||
Oauth2AccessTokenExpiresAt time.Time `json:"oauth_2_access_token_expires_at"`
|
||||
}
|
||||
|
||||
type CreateUserLAHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -329,7 +309,7 @@ func (h *CreateUserLAHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
vars := mux.Vars(r)
|
||||
userRef := vars["userref"]
|
||||
|
||||
var req CreateUserLARequest
|
||||
var req csapitypes.CreateUserLARequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -381,15 +361,6 @@ func (h *DeleteUserLAHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
}
|
||||
}
|
||||
|
||||
type UpdateUserLARequest struct {
|
||||
RemoteUserID string `json:"remote_user_id"`
|
||||
RemoteUserName string `json:"remote_user_name"`
|
||||
UserAccessToken string `json:"user_access_token"`
|
||||
Oauth2AccessToken string `json:"oauth2_access_token"`
|
||||
Oauth2RefreshToken string `json:"oauth2_refresh_token"`
|
||||
Oauth2AccessTokenExpiresAt time.Time `json:"oauth_2_access_token_expires_at"`
|
||||
}
|
||||
|
||||
type UpdateUserLAHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -405,7 +376,7 @@ func (h *UpdateUserLAHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
userRef := vars["userref"]
|
||||
linkedAccountID := vars["laid"]
|
||||
|
||||
var req UpdateUserLARequest
|
||||
var req csapitypes.UpdateUserLARequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -433,14 +404,6 @@ func (h *UpdateUserLAHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
}
|
||||
}
|
||||
|
||||
type CreateUserTokenRequest struct {
|
||||
TokenName string `json:"token_name"`
|
||||
}
|
||||
|
||||
type CreateUserTokenResponse struct {
|
||||
Token string `json:"token"`
|
||||
}
|
||||
|
||||
type CreateUserTokenHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -455,7 +418,7 @@ func (h *CreateUserTokenHandler) ServeHTTP(w http.ResponseWriter, r *http.Reques
|
|||
vars := mux.Vars(r)
|
||||
userRef := vars["userref"]
|
||||
|
||||
var req CreateUserTokenRequest
|
||||
var req csapitypes.CreateUserTokenRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -468,7 +431,7 @@ func (h *CreateUserTokenHandler) ServeHTTP(w http.ResponseWriter, r *http.Reques
|
|||
return
|
||||
}
|
||||
|
||||
resp := &CreateUserTokenResponse{
|
||||
resp := &csapitypes.CreateUserTokenResponse{
|
||||
Token: token,
|
||||
}
|
||||
if err := httpResponse(w, http.StatusCreated, resp); err != nil {
|
||||
|
@ -501,13 +464,8 @@ func (h *DeleteUserTokenHandler) ServeHTTP(w http.ResponseWriter, r *http.Reques
|
|||
}
|
||||
}
|
||||
|
||||
type UserOrgsResponse struct {
|
||||
Organization *types.Organization
|
||||
Role types.MemberRole
|
||||
}
|
||||
|
||||
func userOrgsResponse(userOrg *action.UserOrgsResponse) *UserOrgsResponse {
|
||||
return &UserOrgsResponse{
|
||||
func userOrgsResponse(userOrg *action.UserOrgsResponse) *csapitypes.UserOrgsResponse {
|
||||
return &csapitypes.UserOrgsResponse{
|
||||
Organization: userOrg.Organization,
|
||||
Role: userOrg.Role,
|
||||
}
|
||||
|
@ -533,7 +491,7 @@ func (h *UserOrgsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
res := make([]*UserOrgsResponse, len(userOrgs))
|
||||
res := make([]*csapitypes.UserOrgsResponse, len(userOrgs))
|
||||
for i, userOrg := range userOrgs {
|
||||
res[i] = userOrgsResponse(userOrg)
|
||||
}
|
||||
|
|
|
@ -21,21 +21,14 @@ import (
|
|||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/action"
|
||||
"agola.io/agola/internal/services/configstore/readdb"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// Variable augments types.Variable with dynamic data
|
||||
type Variable struct {
|
||||
*types.Variable
|
||||
|
||||
// dynamic data
|
||||
ParentPath string
|
||||
}
|
||||
|
||||
type VariablesHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -63,9 +56,9 @@ func (h *VariablesHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
resVariables := make([]*Variable, len(variables))
|
||||
resVariables := make([]*csapitypes.Variable, len(variables))
|
||||
for i, v := range variables {
|
||||
resVariables[i] = &Variable{Variable: v}
|
||||
resVariables[i] = &csapitypes.Variable{Variable: v}
|
||||
}
|
||||
err = h.readDB.Do(ctx, func(tx *db.Tx) error {
|
||||
// populate parent path
|
||||
|
|
|
@ -32,8 +32,8 @@ import (
|
|||
"agola.io/agola/internal/services/configstore/api"
|
||||
"agola.io/agola/internal/services/configstore/common"
|
||||
"agola.io/agola/internal/services/configstore/readdb"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
etcdclientv3 "go.etcd.io/etcd/clientv3"
|
||||
|
|
|
@ -30,9 +30,9 @@ import (
|
|||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/config"
|
||||
action "agola.io/agola/internal/services/configstore/action"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/testutil"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
)
|
||||
|
|
|
@ -20,8 +20,8 @@ import (
|
|||
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/common"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -22,8 +22,8 @@ import (
|
|||
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/common"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -22,8 +22,8 @@ import (
|
|||
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/common"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -30,8 +30,8 @@ import (
|
|||
"agola.io/agola/internal/objectstorage"
|
||||
ostypes "agola.io/agola/internal/objectstorage/types"
|
||||
"agola.io/agola/internal/sequence"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
"go.uber.org/zap"
|
||||
|
|
|
@ -21,8 +21,8 @@ import (
|
|||
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/common"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -18,8 +18,8 @@ import (
|
|||
"path"
|
||||
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
|
|
|
@ -19,8 +19,8 @@ import (
|
|||
"encoding/json"
|
||||
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -20,8 +20,8 @@ import (
|
|||
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/common"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -19,8 +19,8 @@ import (
|
|||
"encoding/json"
|
||||
|
||||
"agola.io/agola/internal/db"
|
||||
"agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/configstore/types"
|
||||
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -23,7 +23,7 @@ import (
|
|||
"strconv"
|
||||
"time"
|
||||
|
||||
"agola.io/agola/internal/services/runservice/types"
|
||||
"agola.io/agola/services/runservice/types"
|
||||
"go.uber.org/zap"
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
|
|
@ -28,11 +28,11 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"agola.io/agola/internal/common"
|
||||
"agola.io/agola/internal/services/executor/registry"
|
||||
"agola.io/agola/services/types"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
||||
"github.com/docker/docker/api/types"
|
||||
dockertypes "github.com/docker/docker/api/types"
|
||||
"github.com/docker/docker/api/types/container"
|
||||
"github.com/docker/docker/api/types/filters"
|
||||
"github.com/docker/docker/client"
|
||||
|
@ -47,7 +47,7 @@ type DockerDriver struct {
|
|||
initVolumeHostDir string
|
||||
toolboxPath string
|
||||
executorID string
|
||||
arch common.Arch
|
||||
arch types.Arch
|
||||
}
|
||||
|
||||
func NewDockerDriver(logger *zap.Logger, executorID, initVolumeHostDir, toolboxPath string) (*DockerDriver, error) {
|
||||
|
@ -62,7 +62,7 @@ func NewDockerDriver(logger *zap.Logger, executorID, initVolumeHostDir, toolboxP
|
|||
initVolumeHostDir: initVolumeHostDir,
|
||||
toolboxPath: toolboxPath,
|
||||
executorID: executorID,
|
||||
arch: common.ArchFromString(runtime.GOARCH),
|
||||
arch: types.ArchFromString(runtime.GOARCH),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
@ -76,7 +76,7 @@ func (d *DockerDriver) Setup(ctx context.Context) error {
|
|||
func (d *DockerDriver) CopyToolbox(ctx context.Context) error {
|
||||
// by default always try to pull the image so we are sure only authorized users can fetch them
|
||||
// see https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#alwayspullimages
|
||||
reader, err := d.client.ImagePull(ctx, "busybox", types.ImagePullOptions{})
|
||||
reader, err := d.client.ImagePull(ctx, "busybox", dockertypes.ImagePullOptions{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -97,7 +97,7 @@ func (d *DockerDriver) CopyToolbox(ctx context.Context) error {
|
|||
|
||||
containerID := resp.ID
|
||||
|
||||
if err := d.client.ContainerStart(ctx, containerID, types.ContainerStartOptions{}); err != nil {
|
||||
if err := d.client.ContainerStart(ctx, containerID, dockertypes.ContainerStartOptions{}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -117,7 +117,7 @@ func (d *DockerDriver) CopyToolbox(ctx context.Context) error {
|
|||
}
|
||||
defer srcArchive.Close()
|
||||
|
||||
options := types.CopyToContainerOptions{
|
||||
options := dockertypes.CopyToContainerOptions{
|
||||
AllowOverwriteDirWithFile: false,
|
||||
CopyUIDGID: false,
|
||||
}
|
||||
|
@ -127,14 +127,14 @@ func (d *DockerDriver) CopyToolbox(ctx context.Context) error {
|
|||
}
|
||||
|
||||
// ignore remove error
|
||||
_ = d.client.ContainerRemove(ctx, containerID, types.ContainerRemoveOptions{Force: true})
|
||||
_ = d.client.ContainerRemove(ctx, containerID, dockertypes.ContainerRemoveOptions{Force: true})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *DockerDriver) Archs(ctx context.Context) ([]common.Arch, error) {
|
||||
func (d *DockerDriver) Archs(ctx context.Context) ([]types.Arch, error) {
|
||||
// since we are using the local docker driver we can return our go arch information
|
||||
return []common.Arch{d.arch}, nil
|
||||
return []types.Arch{d.arch}, nil
|
||||
}
|
||||
|
||||
func (d *DockerDriver) NewPod(ctx context.Context, podConfig *PodConfig, out io.Writer) (Pod, error) {
|
||||
|
@ -155,7 +155,7 @@ func (d *DockerDriver) NewPod(ctx context.Context, podConfig *PodConfig, out io.
|
|||
mainContainerID = containerID
|
||||
}
|
||||
|
||||
if err := d.client.ContainerStart(ctx, containerID, types.ContainerStartOptions{}); err != nil {
|
||||
if err := d.client.ContainerStart(ctx, containerID, dockertypes.ContainerStartOptions{}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
@ -171,7 +171,7 @@ func (d *DockerDriver) NewPod(ctx context.Context, podConfig *PodConfig, out io.
|
|||
}
|
||||
|
||||
containers, err := d.client.ContainerList(ctx,
|
||||
types.ContainerListOptions{
|
||||
dockertypes.ContainerListOptions{
|
||||
Filters: args,
|
||||
})
|
||||
if err != nil {
|
||||
|
@ -241,7 +241,7 @@ func (d *DockerDriver) fetchImage(ctx context.Context, image string, registryCon
|
|||
|
||||
// by default always try to pull the image so we are sure only authorized users can fetch them
|
||||
// see https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#alwayspullimages
|
||||
reader, err := d.client.ImagePull(ctx, image, types.ImagePullOptions{RegistryAuth: registryAuthEnc})
|
||||
reader, err := d.client.ImagePull(ctx, image, dockertypes.ImagePullOptions{RegistryAuth: registryAuthEnc})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -307,7 +307,7 @@ func (d *DockerDriver) GetPods(ctx context.Context, all bool) ([]Pod, error) {
|
|||
args := filters.NewArgs()
|
||||
|
||||
containers, err := d.client.ContainerList(ctx,
|
||||
types.ContainerListOptions{
|
||||
dockertypes.ContainerListOptions{
|
||||
Filters: args,
|
||||
All: all,
|
||||
})
|
||||
|
@ -401,7 +401,7 @@ type DockerPod struct {
|
|||
|
||||
type DockerContainer struct {
|
||||
Index int
|
||||
types.Container
|
||||
dockertypes.Container
|
||||
}
|
||||
|
||||
type ContainerSlice []*DockerContainer
|
||||
|
@ -439,7 +439,7 @@ func (dp *DockerPod) Stop(ctx context.Context) error {
|
|||
func (dp *DockerPod) Remove(ctx context.Context) error {
|
||||
errs := []error{}
|
||||
for _, container := range dp.containers {
|
||||
if err := dp.client.ContainerRemove(ctx, container.ID, types.ContainerRemoveOptions{Force: true}); err != nil {
|
||||
if err := dp.client.ContainerRemove(ctx, container.ID, dockertypes.ContainerRemoveOptions{Force: true}); err != nil {
|
||||
errs = append(errs, err)
|
||||
}
|
||||
}
|
||||
|
@ -451,7 +451,7 @@ func (dp *DockerPod) Remove(ctx context.Context) error {
|
|||
|
||||
type DockerContainerExec struct {
|
||||
execID string
|
||||
hresp *types.HijackedResponse
|
||||
hresp *dockertypes.HijackedResponse
|
||||
client *client.Client
|
||||
endCh chan error
|
||||
|
||||
|
@ -461,7 +461,7 @@ type DockerContainerExec struct {
|
|||
// Stdin is a wrapped HikackedResponse implementing io.WriteCloser so users can
|
||||
// easily close stdin. Internally it will close only the write side of the conn.
|
||||
type Stdin struct {
|
||||
hresp *types.HijackedResponse
|
||||
hresp *dockertypes.HijackedResponse
|
||||
}
|
||||
|
||||
func (s *Stdin) Write(p []byte) (int, error) {
|
||||
|
@ -475,7 +475,7 @@ func (s *Stdin) Close() error {
|
|||
func (dp *DockerPod) Exec(ctx context.Context, execConfig *ExecConfig) (ContainerExec, error) {
|
||||
endCh := make(chan error)
|
||||
|
||||
dockerExecConfig := types.ExecConfig{
|
||||
dockerExecConfig := dockertypes.ExecConfig{
|
||||
Cmd: execConfig.Cmd,
|
||||
Env: makeEnvSlice(execConfig.Env),
|
||||
Tty: execConfig.Tty,
|
||||
|
@ -490,7 +490,7 @@ func (dp *DockerPod) Exec(ctx context.Context, execConfig *ExecConfig) (Containe
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
execStartCheck := types.ExecStartCheck{
|
||||
execStartCheck := dockertypes.ExecStartCheck{
|
||||
Detach: dockerExecConfig.Detach,
|
||||
Tty: dockerExecConfig.Tty,
|
||||
}
|
||||
|
|
|
@ -21,8 +21,8 @@ import (
|
|||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"agola.io/agola/internal/common"
|
||||
"agola.io/agola/internal/services/executor/registry"
|
||||
"agola.io/agola/services/types"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -53,7 +53,7 @@ type Driver interface {
|
|||
GetPods(ctx context.Context, all bool) ([]Pod, error)
|
||||
ExecutorGroup(ctx context.Context) (string, error)
|
||||
GetExecutors(ctx context.Context) ([]string, error)
|
||||
Archs(ctx context.Context) ([]common.Arch, error)
|
||||
Archs(ctx context.Context) ([]types.Arch, error)
|
||||
}
|
||||
|
||||
type Pod interface {
|
||||
|
@ -80,7 +80,7 @@ type PodConfig struct {
|
|||
ID string
|
||||
TaskID string
|
||||
Containers []*ContainerConfig
|
||||
Arch common.Arch
|
||||
Arch types.Arch
|
||||
// The container dir where the init volume will be mounted
|
||||
InitVolumeDir string
|
||||
DockerConfig *registry.DockerConfig
|
||||
|
@ -106,7 +106,7 @@ type ExecConfig struct {
|
|||
Tty bool
|
||||
}
|
||||
|
||||
func toolboxExecPath(toolboxDir string, arch common.Arch) (string, error) {
|
||||
func toolboxExecPath(toolboxDir string, arch types.Arch) (string, error) {
|
||||
toolboxPath := filepath.Join(toolboxDir, fmt.Sprintf("%s-linux-%s", toolboxPrefix, arch))
|
||||
_, err := os.Stat(toolboxPath)
|
||||
if err != nil {
|
||||
|
|
|
@ -26,8 +26,8 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"agola.io/agola/internal/common"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/types"
|
||||
|
||||
"github.com/docker/docker/pkg/archive"
|
||||
uuid "github.com/satori/go.uuid"
|
||||
|
@ -248,16 +248,16 @@ func (d *K8sDriver) Setup(ctx context.Context) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (d *K8sDriver) Archs(ctx context.Context) ([]common.Arch, error) {
|
||||
func (d *K8sDriver) Archs(ctx context.Context) ([]types.Arch, error) {
|
||||
// TODO(sgotti) use go client listers instead of querying every time
|
||||
nodes, err := d.nodeLister.List(apilabels.SelectorFromSet(nil))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
archsMap := map[common.Arch]struct{}{}
|
||||
archs := []common.Arch{}
|
||||
archsMap := map[types.Arch]struct{}{}
|
||||
archs := []types.Arch{}
|
||||
for _, node := range nodes {
|
||||
archsMap[common.ArchFromString(node.Status.NodeInfo.Architecture)] = struct{}{}
|
||||
archsMap[types.ArchFromString(node.Status.NodeInfo.Architecture)] = struct{}{}
|
||||
}
|
||||
for arch := range archsMap {
|
||||
archs = append(archs, arch)
|
||||
|
@ -489,12 +489,12 @@ func (d *K8sDriver) NewPod(ctx context.Context, podConfig *PodConfig, out io.Wri
|
|||
}
|
||||
osArch := strings.TrimSpace(stdout.String())
|
||||
|
||||
var arch common.Arch
|
||||
var arch types.Arch
|
||||
switch osArch {
|
||||
case "x86_64":
|
||||
arch = common.ArchAMD64
|
||||
arch = types.ArchAMD64
|
||||
case "aarch64":
|
||||
arch = common.ArchARM64
|
||||
arch = types.ArchARM64
|
||||
default:
|
||||
return nil, errors.Errorf("unsupported pod arch %q", osArch)
|
||||
}
|
||||
|
|
|
@ -35,9 +35,9 @@ import (
|
|||
"agola.io/agola/internal/services/config"
|
||||
"agola.io/agola/internal/services/executor/driver"
|
||||
"agola.io/agola/internal/services/executor/registry"
|
||||
rsapi "agola.io/agola/internal/services/runservice/api"
|
||||
"agola.io/agola/internal/services/runservice/types"
|
||||
"agola.io/agola/internal/util"
|
||||
rsclient "agola.io/agola/services/runservice/client"
|
||||
"agola.io/agola/services/runservice/types"
|
||||
uuid "github.com/satori/go.uuid"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
|
@ -1304,7 +1304,7 @@ func (e *Executor) saveExecutorID(id string) error {
|
|||
|
||||
type Executor struct {
|
||||
c *config.Executor
|
||||
runserviceClient *rsapi.Client
|
||||
runserviceClient *rsclient.Client
|
||||
id string
|
||||
runningTasks *runningTasks
|
||||
driver driver.Driver
|
||||
|
@ -1325,7 +1325,7 @@ func NewExecutor(c *config.Executor) (*Executor, error) {
|
|||
|
||||
e := &Executor{
|
||||
c: c,
|
||||
runserviceClient: rsapi.NewClient(c.RunserviceURL),
|
||||
runserviceClient: rsclient.NewClient(c.RunserviceURL),
|
||||
runningTasks: &runningTasks{
|
||||
tasks: make(map[string]*runningTask),
|
||||
},
|
||||
|
|
|
@ -19,7 +19,7 @@ import (
|
|||
"fmt"
|
||||
"strings"
|
||||
|
||||
"agola.io/agola/internal/services/runservice/types"
|
||||
"agola.io/agola/services/runservice/types"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
||||
"github.com/google/go-containerregistry/pkg/name"
|
||||
|
|
|
@ -18,9 +18,9 @@ import (
|
|||
"net/http"
|
||||
|
||||
"agola.io/agola/internal/services/common"
|
||||
csapi "agola.io/agola/internal/services/configstore/api"
|
||||
rsapi "agola.io/agola/internal/services/runservice/api"
|
||||
"agola.io/agola/internal/util"
|
||||
csclient "agola.io/agola/services/configstore/client"
|
||||
rsclient "agola.io/agola/services/runservice/client"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
@ -28,14 +28,14 @@ import (
|
|||
type ActionHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
sd *common.TokenSigningData
|
||||
configstoreClient *csapi.Client
|
||||
runserviceClient *rsapi.Client
|
||||
configstoreClient *csclient.Client
|
||||
runserviceClient *rsclient.Client
|
||||
agolaID string
|
||||
apiExposedURL string
|
||||
webExposedURL string
|
||||
}
|
||||
|
||||
func NewActionHandler(logger *zap.Logger, sd *common.TokenSigningData, configstoreClient *csapi.Client, runserviceClient *rsapi.Client, agolaID, apiExposedURL, webExposedURL string) *ActionHandler {
|
||||
func NewActionHandler(logger *zap.Logger, sd *common.TokenSigningData, configstoreClient *csclient.Client, runserviceClient *rsclient.Client, agolaID, apiExposedURL, webExposedURL string) *ActionHandler {
|
||||
return &ActionHandler{
|
||||
log: logger.Sugar(),
|
||||
sd: sd,
|
||||
|
|
|
@ -18,7 +18,7 @@ import (
|
|||
"context"
|
||||
|
||||
"agola.io/agola/internal/services/common"
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
|
|
@ -20,7 +20,7 @@ import (
|
|||
"path"
|
||||
|
||||
"agola.io/agola/internal/services/common"
|
||||
rstypes "agola.io/agola/internal/services/runservice/types"
|
||||
rstypes "agola.io/agola/services/runservice/types"
|
||||
)
|
||||
|
||||
// GetBadge return a badge for a project branch
|
||||
|
|
|
@ -17,8 +17,8 @@ package action
|
|||
import (
|
||||
"context"
|
||||
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
|
|
@ -22,15 +22,15 @@ import (
|
|||
"path"
|
||||
|
||||
gitsource "agola.io/agola/internal/gitsources"
|
||||
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/util"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
func (h *ActionHandler) GetProject(ctx context.Context, projectRef string) (*csapi.Project, error) {
|
||||
func (h *ActionHandler) GetProject(ctx context.Context, projectRef string) (*csapitypes.Project, error) {
|
||||
project, resp, err := h.configstoreClient.GetProject(ctx, projectRef)
|
||||
if err != nil {
|
||||
return nil, ErrFromRemote(resp, err)
|
||||
|
@ -59,7 +59,7 @@ type CreateProjectRequest struct {
|
|||
SkipSSHHostKeyCheck bool
|
||||
}
|
||||
|
||||
func (h *ActionHandler) CreateProject(ctx context.Context, req *CreateProjectRequest) (*csapi.Project, error) {
|
||||
func (h *ActionHandler) CreateProject(ctx context.Context, req *CreateProjectRequest) (*csapitypes.Project, error) {
|
||||
curUserID := h.CurrentUserID(ctx)
|
||||
|
||||
user, resp, err := h.configstoreClient.GetUser(ctx, curUserID)
|
||||
|
@ -184,7 +184,7 @@ type UpdateProjectRequest struct {
|
|||
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) (*csapitypes.Project, error) {
|
||||
p, resp, err := h.configstoreClient.GetProject(ctx, projectRef)
|
||||
if err != nil {
|
||||
return nil, errors.Errorf("failed to get project %q: %w", projectRef, ErrFromRemote(resp, err))
|
||||
|
@ -211,7 +211,7 @@ func (h *ActionHandler) UpdateProject(ctx context.Context, projectRef string, re
|
|||
return rp, nil
|
||||
}
|
||||
|
||||
func (h *ActionHandler) ProjectUpdateRepoLinkedAccount(ctx context.Context, projectRef string) (*csapi.Project, error) {
|
||||
func (h *ActionHandler) ProjectUpdateRepoLinkedAccount(ctx context.Context, projectRef string) (*csapitypes.Project, error) {
|
||||
curUserID := h.CurrentUserID(ctx)
|
||||
|
||||
user, resp, err := h.configstoreClient.GetUser(ctx, curUserID)
|
||||
|
@ -270,7 +270,7 @@ func (h *ActionHandler) ProjectUpdateRepoLinkedAccount(ctx context.Context, proj
|
|||
return rp, nil
|
||||
}
|
||||
|
||||
func (h *ActionHandler) setupGitSourceRepo(ctx context.Context, rs *cstypes.RemoteSource, user *cstypes.User, la *cstypes.LinkedAccount, project *csapi.Project) error {
|
||||
func (h *ActionHandler) setupGitSourceRepo(ctx context.Context, rs *cstypes.RemoteSource, user *cstypes.User, la *cstypes.LinkedAccount, project *csapitypes.Project) error {
|
||||
gitsource, err := h.GetGitSource(ctx, rs, user.Name, la)
|
||||
if err != nil {
|
||||
return errors.Errorf("failed to create gitsource client: %w", err)
|
||||
|
@ -306,7 +306,7 @@ func (h *ActionHandler) setupGitSourceRepo(ctx context.Context, rs *cstypes.Remo
|
|||
return nil
|
||||
}
|
||||
|
||||
func (h *ActionHandler) cleanupGitSourceRepo(ctx context.Context, rs *cstypes.RemoteSource, user *cstypes.User, la *cstypes.LinkedAccount, project *csapi.Project) error {
|
||||
func (h *ActionHandler) cleanupGitSourceRepo(ctx context.Context, rs *cstypes.RemoteSource, user *cstypes.User, la *cstypes.LinkedAccount, project *csapitypes.Project) error {
|
||||
gitsource, err := h.GetGitSource(ctx, rs, user.Name, la)
|
||||
if err != nil {
|
||||
return errors.Errorf("failed to create gitsource client: %w", err)
|
||||
|
@ -333,7 +333,7 @@ func (h *ActionHandler) cleanupGitSourceRepo(ctx context.Context, rs *cstypes.Re
|
|||
return nil
|
||||
}
|
||||
|
||||
func (h *ActionHandler) genWebhookURL(project *csapi.Project) (string, error) {
|
||||
func (h *ActionHandler) genWebhookURL(project *csapitypes.Project) (string, error) {
|
||||
baseWebhookURL := fmt.Sprintf("%s/webhooks", h.apiExposedURL)
|
||||
webhookURL, err := url.Parse(baseWebhookURL)
|
||||
if err != nil {
|
||||
|
|
|
@ -18,14 +18,14 @@ import (
|
|||
"context"
|
||||
"path"
|
||||
|
||||
csapi "agola.io/agola/internal/services/configstore/api"
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
func (h *ActionHandler) GetProjectGroup(ctx context.Context, projectGroupRef string) (*csapi.ProjectGroup, error) {
|
||||
func (h *ActionHandler) GetProjectGroup(ctx context.Context, projectGroupRef string) (*csapitypes.ProjectGroup, error) {
|
||||
projectGroup, resp, err := h.configstoreClient.GetProjectGroup(ctx, projectGroupRef)
|
||||
if err != nil {
|
||||
return nil, ErrFromRemote(resp, err)
|
||||
|
@ -33,7 +33,7 @@ func (h *ActionHandler) GetProjectGroup(ctx context.Context, projectGroupRef str
|
|||
return projectGroup, nil
|
||||
}
|
||||
|
||||
func (h *ActionHandler) GetProjectGroupSubgroups(ctx context.Context, projectGroupRef string) ([]*csapi.ProjectGroup, error) {
|
||||
func (h *ActionHandler) GetProjectGroupSubgroups(ctx context.Context, projectGroupRef string) ([]*csapitypes.ProjectGroup, error) {
|
||||
projectGroups, resp, err := h.configstoreClient.GetProjectGroupSubgroups(ctx, projectGroupRef)
|
||||
if err != nil {
|
||||
return nil, ErrFromRemote(resp, err)
|
||||
|
@ -41,7 +41,7 @@ func (h *ActionHandler) GetProjectGroupSubgroups(ctx context.Context, projectGro
|
|||
return projectGroups, nil
|
||||
}
|
||||
|
||||
func (h *ActionHandler) GetProjectGroupProjects(ctx context.Context, projectGroupRef string) ([]*csapi.Project, error) {
|
||||
func (h *ActionHandler) GetProjectGroupProjects(ctx context.Context, projectGroupRef string) ([]*csapitypes.Project, error) {
|
||||
projects, resp, err := h.configstoreClient.GetProjectGroupProjects(ctx, projectGroupRef)
|
||||
if err != nil {
|
||||
return nil, ErrFromRemote(resp, err)
|
||||
|
@ -56,7 +56,7 @@ type CreateProjectGroupRequest struct {
|
|||
Visibility cstypes.Visibility
|
||||
}
|
||||
|
||||
func (h *ActionHandler) CreateProjectGroup(ctx context.Context, req *CreateProjectGroupRequest) (*csapi.ProjectGroup, error) {
|
||||
func (h *ActionHandler) CreateProjectGroup(ctx context.Context, req *CreateProjectGroupRequest) (*csapitypes.ProjectGroup, error) {
|
||||
if !util.ValidateName(req.Name) {
|
||||
return nil, util.NewErrBadRequest(errors.Errorf("invalid projectGroup name %q", req.Name))
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ type UpdateProjectGroupRequest struct {
|
|||
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) (*csapitypes.ProjectGroup, error) {
|
||||
pg, resp, err := h.configstoreClient.GetProjectGroup(ctx, projectGroupRef)
|
||||
if err != nil {
|
||||
return nil, errors.Errorf("failed to get project group %q: %w", projectGroupRef, ErrFromRemote(resp, err))
|
||||
|
|
|
@ -17,8 +17,8 @@ package action
|
|||
import (
|
||||
"context"
|
||||
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
|
|
@ -24,11 +24,11 @@ import (
|
|||
gitsource "agola.io/agola/internal/gitsources"
|
||||
"agola.io/agola/internal/runconfig"
|
||||
"agola.io/agola/internal/services/common"
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
rsapi "agola.io/agola/internal/services/runservice/api"
|
||||
rstypes "agola.io/agola/internal/services/runservice/types"
|
||||
"agola.io/agola/internal/services/types"
|
||||
"agola.io/agola/internal/util"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
rsapitypes "agola.io/agola/services/runservice/api/types"
|
||||
rstypes "agola.io/agola/services/runservice/types"
|
||||
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
@ -65,7 +65,7 @@ const (
|
|||
AnnotationPullRequestLink = "pull_request_link"
|
||||
)
|
||||
|
||||
func (h *ActionHandler) GetRun(ctx context.Context, runID string) (*rsapi.RunResponse, error) {
|
||||
func (h *ActionHandler) GetRun(ctx context.Context, runID string) (*rsapitypes.RunResponse, error) {
|
||||
runResp, resp, err := h.runserviceClient.GetRun(ctx, runID, nil)
|
||||
if err != nil {
|
||||
return nil, ErrFromRemote(resp, err)
|
||||
|
@ -92,7 +92,7 @@ type GetRunsRequest struct {
|
|||
Asc bool
|
||||
}
|
||||
|
||||
func (h *ActionHandler) GetRuns(ctx context.Context, req *GetRunsRequest) (*rsapi.GetRunsResponse, error) {
|
||||
func (h *ActionHandler) GetRuns(ctx context.Context, req *GetRunsRequest) (*rsapitypes.GetRunsResponse, error) {
|
||||
canGetRun, err := h.CanGetRun(ctx, req.Group)
|
||||
if err != nil {
|
||||
return nil, errors.Errorf("failed to determine permissions: %w", err)
|
||||
|
@ -155,7 +155,7 @@ type RunActionsRequest struct {
|
|||
FromStart bool
|
||||
}
|
||||
|
||||
func (h *ActionHandler) RunAction(ctx context.Context, req *RunActionsRequest) (*rsapi.RunResponse, error) {
|
||||
func (h *ActionHandler) RunAction(ctx context.Context, req *RunActionsRequest) (*rsapitypes.RunResponse, error) {
|
||||
runResp, resp, err := h.runserviceClient.GetRun(ctx, req.RunID, nil)
|
||||
if err != nil {
|
||||
return nil, ErrFromRemote(resp, err)
|
||||
|
@ -170,7 +170,7 @@ func (h *ActionHandler) RunAction(ctx context.Context, req *RunActionsRequest) (
|
|||
|
||||
switch req.ActionType {
|
||||
case RunActionTypeRestart:
|
||||
rsreq := &rsapi.RunCreateRequest{
|
||||
rsreq := &rsapitypes.RunCreateRequest{
|
||||
RunID: req.RunID,
|
||||
FromStart: req.FromStart,
|
||||
}
|
||||
|
@ -181,8 +181,8 @@ func (h *ActionHandler) RunAction(ctx context.Context, req *RunActionsRequest) (
|
|||
}
|
||||
|
||||
case RunActionTypeCancel:
|
||||
rsreq := &rsapi.RunActionsRequest{
|
||||
ActionType: rsapi.RunActionTypeChangePhase,
|
||||
rsreq := &rsapitypes.RunActionsRequest{
|
||||
ActionType: rsapitypes.RunActionTypeChangePhase,
|
||||
Phase: rstypes.RunPhaseCancelled,
|
||||
}
|
||||
|
||||
|
@ -192,8 +192,8 @@ func (h *ActionHandler) RunAction(ctx context.Context, req *RunActionsRequest) (
|
|||
}
|
||||
|
||||
case RunActionTypeStop:
|
||||
rsreq := &rsapi.RunActionsRequest{
|
||||
ActionType: rsapi.RunActionTypeStop,
|
||||
rsreq := &rsapitypes.RunActionsRequest{
|
||||
ActionType: rsapitypes.RunActionTypeStop,
|
||||
}
|
||||
|
||||
resp, err = h.runserviceClient.RunActions(ctx, req.RunID, rsreq)
|
||||
|
@ -271,8 +271,8 @@ func (h *ActionHandler) RunTaskAction(ctx context.Context, req *RunTaskActionsRe
|
|||
|
||||
annotations[common.ApproversAnnotation] = string(approversj)
|
||||
|
||||
rsreq := &rsapi.RunTaskActionsRequest{
|
||||
ActionType: rsapi.RunTaskActionTypeSetAnnotations,
|
||||
rsreq := &rsapitypes.RunTaskActionsRequest{
|
||||
ActionType: rsapitypes.RunTaskActionTypeSetAnnotations,
|
||||
Annotations: annotations,
|
||||
ChangeGroupsUpdateToken: runResp.ChangeGroupsUpdateToken,
|
||||
}
|
||||
|
@ -461,7 +461,7 @@ func (h *ActionHandler) CreateRuns(ctx context.Context, req *CreateRunRequest) e
|
|||
// create a run (per config file) with a generic error since we cannot parse
|
||||
// it and know how many runs are defined
|
||||
setupErrors = append(setupErrors, err.Error())
|
||||
createRunReq := &rsapi.RunCreateRequest{
|
||||
createRunReq := &rsapitypes.RunCreateRequest{
|
||||
RunConfigTasks: nil,
|
||||
Group: runGroup,
|
||||
SetupErrors: setupErrors,
|
||||
|
@ -480,7 +480,7 @@ func (h *ActionHandler) CreateRuns(ctx context.Context, req *CreateRunRequest) e
|
|||
for _, run := range config.Runs {
|
||||
rcts := runconfig.GenRunConfigTasks(util.DefaultUUIDGenerator{}, config, run.Name, variables, req.Branch, req.Tag, req.Ref)
|
||||
|
||||
createRunReq := &rsapi.RunCreateRequest{
|
||||
createRunReq := &rsapitypes.RunCreateRequest{
|
||||
RunConfigTasks: rcts,
|
||||
Group: runGroup,
|
||||
SetupErrors: setupErrors,
|
||||
|
|
|
@ -18,9 +18,9 @@ import (
|
|||
"context"
|
||||
"net/http"
|
||||
|
||||
csapi "agola.io/agola/internal/services/configstore/api"
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
@ -32,8 +32,8 @@ type GetSecretsRequest struct {
|
|||
Tree bool
|
||||
}
|
||||
|
||||
func (h *ActionHandler) GetSecrets(ctx context.Context, req *GetSecretsRequest) ([]*csapi.Secret, error) {
|
||||
var cssecrets []*csapi.Secret
|
||||
func (h *ActionHandler) GetSecrets(ctx context.Context, req *GetSecretsRequest) ([]*csapitypes.Secret, error) {
|
||||
var cssecrets []*csapitypes.Secret
|
||||
var resp *http.Response
|
||||
var err error
|
||||
switch req.ParentType {
|
||||
|
@ -65,7 +65,7 @@ type CreateSecretRequest struct {
|
|||
Path string
|
||||
}
|
||||
|
||||
func (h *ActionHandler) CreateSecret(ctx context.Context, req *CreateSecretRequest) (*csapi.Secret, error) {
|
||||
func (h *ActionHandler) CreateSecret(ctx context.Context, req *CreateSecretRequest) (*csapitypes.Secret, error) {
|
||||
isVariableOwner, err := h.IsVariableOwner(ctx, req.ParentType, req.ParentRef)
|
||||
if err != nil {
|
||||
return nil, errors.Errorf("failed to determine ownership: %w", err)
|
||||
|
@ -85,7 +85,7 @@ func (h *ActionHandler) CreateSecret(ctx context.Context, req *CreateSecretReque
|
|||
}
|
||||
|
||||
var resp *http.Response
|
||||
var rs *csapi.Secret
|
||||
var rs *csapitypes.Secret
|
||||
switch req.ParentType {
|
||||
case cstypes.ConfigTypeProjectGroup:
|
||||
h.log.Infof("creating project group secret")
|
||||
|
@ -120,7 +120,7 @@ type UpdateSecretRequest struct {
|
|||
Path string
|
||||
}
|
||||
|
||||
func (h *ActionHandler) UpdateSecret(ctx context.Context, req *UpdateSecretRequest) (*csapi.Secret, error) {
|
||||
func (h *ActionHandler) UpdateSecret(ctx context.Context, req *UpdateSecretRequest) (*csapitypes.Secret, error) {
|
||||
isVariableOwner, err := h.IsVariableOwner(ctx, req.ParentType, req.ParentRef)
|
||||
if err != nil {
|
||||
return nil, errors.Errorf("failed to determine ownership: %w", err)
|
||||
|
@ -140,7 +140,7 @@ func (h *ActionHandler) UpdateSecret(ctx context.Context, req *UpdateSecretReque
|
|||
}
|
||||
|
||||
var resp *http.Response
|
||||
var rs *csapi.Secret
|
||||
var rs *csapitypes.Secret
|
||||
switch req.ParentType {
|
||||
case cstypes.ConfigTypeProjectGroup:
|
||||
h.log.Infof("updating project group secret")
|
||||
|
|
|
@ -24,10 +24,10 @@ import (
|
|||
gitsource "agola.io/agola/internal/gitsources"
|
||||
"agola.io/agola/internal/gitsources/agolagit"
|
||||
"agola.io/agola/internal/services/common"
|
||||
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/util"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
|
||||
jwt "github.com/dgrijalva/jwt-go"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -90,7 +90,7 @@ func (h *ActionHandler) CreateUser(ctx context.Context, req *CreateUserRequest)
|
|||
return nil, util.NewErrBadRequest(errors.Errorf("invalid user name %q", req.UserName))
|
||||
}
|
||||
|
||||
creq := &csapi.CreateUserRequest{
|
||||
creq := &csapitypes.CreateUserRequest{
|
||||
UserName: req.UserName,
|
||||
}
|
||||
|
||||
|
@ -137,7 +137,7 @@ func (h *ActionHandler) CreateUserToken(ctx context.Context, req *CreateUserToke
|
|||
}
|
||||
|
||||
h.log.Infof("creating user token")
|
||||
creq := &csapi.CreateUserTokenRequest{
|
||||
creq := &csapitypes.CreateUserTokenRequest{
|
||||
TokenName: req.TokenName,
|
||||
}
|
||||
res, resp, err := h.configstoreClient.CreateUserToken(ctx, userRef, creq)
|
||||
|
@ -197,7 +197,7 @@ func (h *ActionHandler) CreateUserLA(ctx context.Context, req *CreateUserLAReque
|
|||
return nil, errors.Errorf("empty remote user id for remote source %q", rs.ID)
|
||||
}
|
||||
|
||||
creq := &csapi.CreateUserLARequest{
|
||||
creq := &csapitypes.CreateUserLARequest{
|
||||
RemoteSourceName: req.RemoteSourceName,
|
||||
RemoteUserID: remoteUserInfo.ID,
|
||||
RemoteUserName: remoteUserInfo.LoginName,
|
||||
|
@ -233,7 +233,7 @@ func (h *ActionHandler) UpdateUserLA(ctx context.Context, userRef string, la *cs
|
|||
return util.NewErrBadRequest(errors.Errorf("user %q doesn't have a linked account with id %q", userRef, la.ID))
|
||||
}
|
||||
|
||||
creq := &csapi.UpdateUserLARequest{
|
||||
creq := &csapitypes.UpdateUserLARequest{
|
||||
RemoteUserID: la.RemoteUserID,
|
||||
RemoteUserName: la.RemoteUserName,
|
||||
UserAccessToken: la.UserAccessToken,
|
||||
|
@ -333,9 +333,9 @@ func (h *ActionHandler) RegisterUser(ctx context.Context, req *RegisterUserReque
|
|||
return nil, errors.Errorf("empty remote user id for remote source %q", rs.ID)
|
||||
}
|
||||
|
||||
creq := &csapi.CreateUserRequest{
|
||||
creq := &csapitypes.CreateUserRequest{
|
||||
UserName: req.UserName,
|
||||
CreateUserLARequest: &csapi.CreateUserLARequest{
|
||||
CreateUserLARequest: &csapitypes.CreateUserLARequest{
|
||||
RemoteSourceName: req.RemoteSourceName,
|
||||
RemoteUserID: remoteUserInfo.ID,
|
||||
RemoteUserName: remoteUserInfo.LoginName,
|
||||
|
@ -420,7 +420,7 @@ func (h *ActionHandler) LoginUser(ctx context.Context, req *LoginUserRequest) (*
|
|||
la.Oauth2RefreshToken = req.Oauth2RefreshToken
|
||||
la.UserAccessToken = req.UserAccessToken
|
||||
|
||||
creq := &csapi.UpdateUserLARequest{
|
||||
creq := &csapitypes.UpdateUserLARequest{
|
||||
RemoteUserID: la.RemoteUserID,
|
||||
RemoteUserName: la.RemoteUserName,
|
||||
UserAccessToken: la.UserAccessToken,
|
||||
|
|
|
@ -19,9 +19,9 @@ import (
|
|||
"net/http"
|
||||
|
||||
"agola.io/agola/internal/services/common"
|
||||
csapi "agola.io/agola/internal/services/configstore/api"
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
|
@ -33,9 +33,9 @@ type GetVariablesRequest struct {
|
|||
RemoveOverridden bool
|
||||
}
|
||||
|
||||
func (h *ActionHandler) GetVariables(ctx context.Context, req *GetVariablesRequest) ([]*csapi.Variable, []*csapi.Secret, error) {
|
||||
var csvars []*csapi.Variable
|
||||
var cssecrets []*csapi.Secret
|
||||
func (h *ActionHandler) GetVariables(ctx context.Context, req *GetVariablesRequest) ([]*csapitypes.Variable, []*csapitypes.Secret, error) {
|
||||
var csvars []*csapitypes.Variable
|
||||
var cssecrets []*csapitypes.Secret
|
||||
|
||||
switch req.ParentType {
|
||||
case cstypes.ConfigTypeProjectGroup:
|
||||
|
@ -79,7 +79,7 @@ type CreateVariableRequest struct {
|
|||
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) (*csapitypes.Variable, []*csapitypes.Secret, error) {
|
||||
isVariableOwner, err := h.IsVariableOwner(ctx, req.ParentType, req.ParentRef)
|
||||
if err != nil {
|
||||
return nil, nil, errors.Errorf("failed to determine ownership: %w", err)
|
||||
|
@ -105,8 +105,8 @@ func (h *ActionHandler) CreateVariable(ctx context.Context, req *CreateVariableR
|
|||
Values: req.Values,
|
||||
}
|
||||
|
||||
var cssecrets []*csapi.Secret
|
||||
var rv *csapi.Variable
|
||||
var cssecrets []*csapitypes.Secret
|
||||
var rv *csapitypes.Variable
|
||||
|
||||
switch req.ParentType {
|
||||
case cstypes.ConfigTypeProjectGroup:
|
||||
|
@ -152,7 +152,7 @@ type UpdateVariableRequest struct {
|
|||
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) (*csapitypes.Variable, []*csapitypes.Secret, error) {
|
||||
isVariableOwner, err := h.IsVariableOwner(ctx, req.ParentType, req.ParentRef)
|
||||
if err != nil {
|
||||
return nil, nil, errors.Errorf("failed to determine ownership: %w", err)
|
||||
|
@ -178,8 +178,8 @@ func (h *ActionHandler) UpdateVariable(ctx context.Context, req *UpdateVariableR
|
|||
Values: req.Values,
|
||||
}
|
||||
|
||||
var cssecrets []*csapi.Secret
|
||||
var rv *csapi.Variable
|
||||
var cssecrets []*csapitypes.Secret
|
||||
var rv *csapitypes.Variable
|
||||
|
||||
switch req.ParentType {
|
||||
case cstypes.ConfigTypeProjectGroup:
|
||||
|
|
|
@ -19,8 +19,8 @@ import (
|
|||
"net/http"
|
||||
"net/url"
|
||||
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/util"
|
||||
util "agola.io/agola/internal/util"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -24,10 +24,6 @@ import (
|
|||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type BadgeRequest struct {
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
type BadgeHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
|
|
@ -19,6 +19,7 @@ import (
|
|||
|
||||
"agola.io/agola/internal/services/gateway/action"
|
||||
"agola.io/agola/internal/util"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
@ -28,11 +29,6 @@ type OAuth2CallbackHandler struct {
|
|||
ah *action.ActionHandler
|
||||
}
|
||||
|
||||
type RemoteSourceAuthResult struct {
|
||||
RequestType string `json:"request_type,omitempty"`
|
||||
Response interface{} `json:"response,omitempty"`
|
||||
}
|
||||
|
||||
func NewOAuth2CallbackHandler(logger *zap.Logger, ah *action.ActionHandler) *OAuth2CallbackHandler {
|
||||
return &OAuth2CallbackHandler{log: logger.Sugar(), ah: ah}
|
||||
}
|
||||
|
@ -54,29 +50,39 @@ func (h *OAuth2CallbackHandler) ServeHTTP(w http.ResponseWriter, r *http.Request
|
|||
switch cresp.RequestType {
|
||||
case action.RemoteSourceRequestTypeCreateUserLA:
|
||||
authresp := cresp.Response.(*action.CreateUserLAResponse)
|
||||
response = &CreateUserLAResponse{
|
||||
LinkedAccount: authresp.LinkedAccount,
|
||||
response = &gwapitypes.CreateUserLAResponse{
|
||||
LinkedAccount: &gwapitypes.LinkedAccount{
|
||||
ID: authresp.LinkedAccount.ID,
|
||||
RemoteUserID: authresp.LinkedAccount.RemoteUserID,
|
||||
RemoteUserName: authresp.LinkedAccount.RemoteUserName,
|
||||
RemoteUserAvatarURL: authresp.LinkedAccount.RemoteUserAvatarURL,
|
||||
RemoteSourceID: authresp.LinkedAccount.RemoteUserID,
|
||||
},
|
||||
}
|
||||
|
||||
case action.RemoteSourceRequestTypeLoginUser:
|
||||
authresp := cresp.Response.(*action.LoginUserResponse)
|
||||
response = &LoginUserResponse{
|
||||
response = &gwapitypes.LoginUserResponse{
|
||||
Token: authresp.Token,
|
||||
User: createUserResponse(authresp.User),
|
||||
}
|
||||
|
||||
case action.RemoteSourceRequestTypeAuthorize:
|
||||
authresp := cresp.Response.(*action.AuthorizeResponse)
|
||||
response = &AuthorizeResponse{
|
||||
RemoteUserInfo: authresp.RemoteUserInfo,
|
||||
response = &gwapitypes.AuthorizeResponse{
|
||||
RemoteUserInfo: &gwapitypes.UserInfo{
|
||||
ID: authresp.RemoteUserInfo.ID,
|
||||
LoginName: authresp.RemoteUserInfo.LoginName,
|
||||
Email: authresp.RemoteUserInfo.Email,
|
||||
},
|
||||
RemoteSourceName: authresp.RemoteSourceName,
|
||||
}
|
||||
|
||||
case action.RemoteSourceRequestTypeRegisterUser:
|
||||
response = &RegisterUserResponse{}
|
||||
response = &gwapitypes.RegisterUserResponse{}
|
||||
}
|
||||
|
||||
res := RemoteSourceAuthResult{
|
||||
res := gwapitypes.RemoteSourceAuthResult{
|
||||
RequestType: string(cresp.RequestType),
|
||||
Response: response,
|
||||
}
|
||||
|
|
|
@ -19,20 +19,16 @@ import (
|
|||
"net/http"
|
||||
"strconv"
|
||||
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/services/gateway/action"
|
||||
"agola.io/agola/internal/util"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
"go.uber.org/zap"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
)
|
||||
|
||||
type CreateOrgRequest struct {
|
||||
Name string `json:"name"`
|
||||
Visibility cstypes.Visibility `json:"visibility"`
|
||||
}
|
||||
|
||||
type CreateOrgHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -51,7 +47,7 @@ func (h *CreateOrgHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
userID = userIDVal.(string)
|
||||
}
|
||||
|
||||
var req CreateOrgRequest
|
||||
var req gwapitypes.CreateOrgRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -60,7 +56,7 @@ func (h *CreateOrgHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
creq := &action.CreateOrgRequest{
|
||||
Name: req.Name,
|
||||
Visibility: req.Visibility,
|
||||
Visibility: cstypes.Visibility(req.Visibility),
|
||||
CreatorUserID: userID,
|
||||
}
|
||||
|
||||
|
@ -127,17 +123,11 @@ func (h *OrgHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
type OrgResponse struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Visibility cstypes.Visibility `json:"visibility,omitempty"`
|
||||
}
|
||||
|
||||
func createOrgResponse(o *cstypes.Organization) *OrgResponse {
|
||||
org := &OrgResponse{
|
||||
func createOrgResponse(o *cstypes.Organization) *gwapitypes.OrgResponse {
|
||||
org := &gwapitypes.OrgResponse{
|
||||
ID: o.ID,
|
||||
Name: o.Name,
|
||||
Visibility: o.Visibility,
|
||||
Visibility: gwapitypes.Visibility(o.Visibility),
|
||||
}
|
||||
return org
|
||||
}
|
||||
|
@ -190,7 +180,7 @@ func (h *OrgsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
orgs := make([]*OrgResponse, len(csorgs))
|
||||
orgs := make([]*gwapitypes.OrgResponse, len(csorgs))
|
||||
for i, p := range csorgs {
|
||||
orgs[i] = createOrgResponse(p)
|
||||
}
|
||||
|
@ -199,20 +189,10 @@ func (h *OrgsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
type OrgMembersResponse struct {
|
||||
Organization *OrgResponse `json:"organization"`
|
||||
Members []*OrgMemberResponse `json:"members"`
|
||||
}
|
||||
|
||||
type OrgMemberResponse struct {
|
||||
User *UserResponse `json:"user"`
|
||||
Role cstypes.MemberRole `json:"role"`
|
||||
}
|
||||
|
||||
func createOrgMemberResponse(user *cstypes.User, role cstypes.MemberRole) *OrgMemberResponse {
|
||||
return &OrgMemberResponse{
|
||||
func createOrgMemberResponse(user *cstypes.User, role cstypes.MemberRole) *gwapitypes.OrgMemberResponse {
|
||||
return &gwapitypes.OrgMemberResponse{
|
||||
User: createUserResponse(user),
|
||||
Role: role,
|
||||
Role: gwapitypes.MemberRole(role),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -237,9 +217,9 @@ func (h *OrgMembersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
res := &OrgMembersResponse{
|
||||
res := &gwapitypes.OrgMembersResponse{
|
||||
Organization: createOrgResponse(ares.Organization),
|
||||
Members: make([]*OrgMemberResponse, len(ares.Members)),
|
||||
Members: make([]*gwapitypes.OrgMemberResponse, len(ares.Members)),
|
||||
}
|
||||
for i, m := range ares.Members {
|
||||
res.Members[i] = createOrgMemberResponse(m.User, m.Role)
|
||||
|
@ -249,25 +229,16 @@ func (h *OrgMembersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
type AddOrgMemberResponse struct {
|
||||
Organization *OrgResponse `json:"organization"`
|
||||
OrgMemberResponse
|
||||
}
|
||||
|
||||
func createAddOrgMemberResponse(org *cstypes.Organization, user *cstypes.User, role cstypes.MemberRole) *AddOrgMemberResponse {
|
||||
return &AddOrgMemberResponse{
|
||||
func createAddOrgMemberResponse(org *cstypes.Organization, user *cstypes.User, role cstypes.MemberRole) *gwapitypes.AddOrgMemberResponse {
|
||||
return &gwapitypes.AddOrgMemberResponse{
|
||||
Organization: createOrgResponse(org),
|
||||
OrgMemberResponse: OrgMemberResponse{
|
||||
OrgMemberResponse: gwapitypes.OrgMemberResponse{
|
||||
User: createUserResponse(user),
|
||||
Role: role,
|
||||
Role: gwapitypes.MemberRole(role),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
type AddOrgMemberRequest struct {
|
||||
Role cstypes.MemberRole `json:"role"`
|
||||
}
|
||||
|
||||
type AddOrgMemberHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -284,14 +255,14 @@ func (h *AddOrgMemberHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
orgRef := vars["orgref"]
|
||||
userRef := vars["userref"]
|
||||
|
||||
var req AddOrgMemberRequest
|
||||
var req gwapitypes.AddOrgMemberRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
return
|
||||
}
|
||||
|
||||
ares, err := h.ah.AddOrgMember(ctx, orgRef, userRef, req.Role)
|
||||
ares, err := h.ah.AddOrgMember(ctx, orgRef, userRef, cstypes.MemberRole(req.Role))
|
||||
if httpError(w, err) {
|
||||
h.log.Errorf("err: %+v", err)
|
||||
return
|
||||
|
|
|
@ -19,24 +19,16 @@ import (
|
|||
"net/http"
|
||||
"net/url"
|
||||
|
||||
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/util"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type CreateProjectRequest struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
ParentRef string `json:"parent_ref,omitempty"`
|
||||
Visibility cstypes.Visibility `json:"visibility,omitempty"`
|
||||
RepoPath string `json:"repo_path,omitempty"`
|
||||
RemoteSourceName string `json:"remote_source_name,omitempty"`
|
||||
SkipSSHHostKeyCheck bool `json:"skip_ssh_host_key_check,omitempty"`
|
||||
}
|
||||
|
||||
type CreateProjectHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -49,7 +41,7 @@ func NewCreateProjectHandler(logger *zap.Logger, ah *action.ActionHandler) *Crea
|
|||
func (h *CreateProjectHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
|
||||
var req CreateProjectRequest
|
||||
var req gwapitypes.CreateProjectRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -59,7 +51,7 @@ func (h *CreateProjectHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
areq := &action.CreateProjectRequest{
|
||||
Name: req.Name,
|
||||
ParentRef: req.ParentRef,
|
||||
Visibility: req.Visibility,
|
||||
Visibility: cstypes.Visibility(req.Visibility),
|
||||
RepoPath: req.RepoPath,
|
||||
RemoteSourceName: req.RemoteSourceName,
|
||||
SkipSSHHostKeyCheck: req.SkipSSHHostKeyCheck,
|
||||
|
@ -77,11 +69,6 @@ func (h *CreateProjectHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
}
|
||||
}
|
||||
|
||||
type UpdateProjectRequest struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
Visibility cstypes.Visibility `json:"visibility,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateProjectHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -100,7 +87,7 @@ func (h *UpdateProjectHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
return
|
||||
}
|
||||
|
||||
var req UpdateProjectRequest
|
||||
var req gwapitypes.UpdateProjectRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -109,7 +96,7 @@ func (h *UpdateProjectHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
|
||||
areq := &action.UpdateProjectRequest{
|
||||
Name: req.Name,
|
||||
Visibility: req.Visibility,
|
||||
Visibility: cstypes.Visibility(req.Visibility),
|
||||
}
|
||||
project, err := h.ah.UpdateProject(ctx, projectRef, areq)
|
||||
if httpError(w, err) {
|
||||
|
@ -239,35 +226,19 @@ func (h *ProjectHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
type ProjectResponse struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
ParentPath string `json:"parent_path,omitempty"`
|
||||
Visibility cstypes.Visibility `json:"visibility,omitempty"`
|
||||
GlobalVisibility string `json:"global_visibility,omitempty"`
|
||||
}
|
||||
|
||||
func createProjectResponse(r *csapi.Project) *ProjectResponse {
|
||||
res := &ProjectResponse{
|
||||
func createProjectResponse(r *csapitypes.Project) *gwapitypes.ProjectResponse {
|
||||
res := &gwapitypes.ProjectResponse{
|
||||
ID: r.ID,
|
||||
Name: r.Name,
|
||||
Path: r.Path,
|
||||
ParentPath: r.ParentPath,
|
||||
Visibility: r.Visibility,
|
||||
Visibility: gwapitypes.Visibility(r.Visibility),
|
||||
GlobalVisibility: string(r.GlobalVisibility),
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
type ProjectCreateRunRequest struct {
|
||||
Branch string `json:"branch,omitempty"`
|
||||
Tag string `json:"tag,omitempty"`
|
||||
Ref string `json:"ref,omitempty"`
|
||||
CommitSHA string `json:"commit_sha,omitempty"`
|
||||
}
|
||||
|
||||
type ProjectCreateRunHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -286,7 +257,7 @@ func (h *ProjectCreateRunHandler) ServeHTTP(w http.ResponseWriter, r *http.Reque
|
|||
return
|
||||
}
|
||||
|
||||
var req ProjectCreateRunRequest
|
||||
var req gwapitypes.ProjectCreateRunRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
|
|
@ -19,22 +19,17 @@ import (
|
|||
"net/http"
|
||||
"net/url"
|
||||
|
||||
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/util"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type CreateProjectGroupRequest struct {
|
||||
Name string `json:"name"`
|
||||
ParentRef string `json:"parent_ref"`
|
||||
Visibility cstypes.Visibility `json:"visibility"`
|
||||
}
|
||||
|
||||
type CreateProjectGroupHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -47,7 +42,7 @@ func NewCreateProjectGroupHandler(logger *zap.Logger, ah *action.ActionHandler)
|
|||
func (h *CreateProjectGroupHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
|
||||
var req CreateProjectGroupRequest
|
||||
var req gwapitypes.CreateProjectGroupRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -64,7 +59,7 @@ func (h *CreateProjectGroupHandler) ServeHTTP(w http.ResponseWriter, r *http.Req
|
|||
creq := &action.CreateProjectGroupRequest{
|
||||
Name: req.Name,
|
||||
ParentRef: req.ParentRef,
|
||||
Visibility: req.Visibility,
|
||||
Visibility: cstypes.Visibility(req.Visibility),
|
||||
CurrentUserID: userID,
|
||||
}
|
||||
|
||||
|
@ -80,11 +75,6 @@ func (h *CreateProjectGroupHandler) ServeHTTP(w http.ResponseWriter, r *http.Req
|
|||
}
|
||||
}
|
||||
|
||||
type UpdateProjectGroupRequest struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
Visibility cstypes.Visibility `json:"visibility,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateProjectGroupHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -103,7 +93,7 @@ func (h *UpdateProjectGroupHandler) ServeHTTP(w http.ResponseWriter, r *http.Req
|
|||
return
|
||||
}
|
||||
|
||||
var req UpdateProjectGroupRequest
|
||||
var req gwapitypes.UpdateProjectGroupRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -112,7 +102,7 @@ func (h *UpdateProjectGroupHandler) ServeHTTP(w http.ResponseWriter, r *http.Req
|
|||
|
||||
areq := &action.UpdateProjectGroupRequest{
|
||||
Name: req.Name,
|
||||
Visibility: req.Visibility,
|
||||
Visibility: cstypes.Visibility(req.Visibility),
|
||||
}
|
||||
projectGroup, err := h.ah.UpdateProjectGroup(ctx, projectGroupRef, areq)
|
||||
if httpError(w, err) {
|
||||
|
@ -209,7 +199,7 @@ func (h *ProjectGroupProjectsHandler) ServeHTTP(w http.ResponseWriter, r *http.R
|
|||
return
|
||||
}
|
||||
|
||||
projects := make([]*ProjectResponse, len(csprojects))
|
||||
projects := make([]*gwapitypes.ProjectResponse, len(csprojects))
|
||||
for i, p := range csprojects {
|
||||
projects[i] = createProjectResponse(p)
|
||||
}
|
||||
|
@ -243,7 +233,7 @@ func (h *ProjectGroupSubgroupsHandler) ServeHTTP(w http.ResponseWriter, r *http.
|
|||
return
|
||||
}
|
||||
|
||||
subgroups := make([]*ProjectGroupResponse, len(cssubgroups))
|
||||
subgroups := make([]*gwapitypes.ProjectGroupResponse, len(cssubgroups))
|
||||
for i, g := range cssubgroups {
|
||||
subgroups[i] = createProjectGroupResponse(g)
|
||||
}
|
||||
|
@ -253,22 +243,13 @@ func (h *ProjectGroupSubgroupsHandler) ServeHTTP(w http.ResponseWriter, r *http.
|
|||
}
|
||||
}
|
||||
|
||||
type ProjectGroupResponse struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Path string `json:"path"`
|
||||
ParentPath string `json:"parent_path"`
|
||||
Visibility cstypes.Visibility `json:"visibility"`
|
||||
GlobalVisibility string `json:"global_visibility"`
|
||||
}
|
||||
|
||||
func createProjectGroupResponse(r *csapi.ProjectGroup) *ProjectGroupResponse {
|
||||
run := &ProjectGroupResponse{
|
||||
func createProjectGroupResponse(r *csapitypes.ProjectGroup) *gwapitypes.ProjectGroupResponse {
|
||||
run := &gwapitypes.ProjectGroupResponse{
|
||||
ID: r.ID,
|
||||
Name: r.Name,
|
||||
Path: r.Path,
|
||||
ParentPath: r.ParentPath,
|
||||
Visibility: r.Visibility,
|
||||
Visibility: gwapitypes.Visibility(r.Visibility),
|
||||
GlobalVisibility: string(r.GlobalVisibility),
|
||||
}
|
||||
|
||||
|
|
|
@ -18,23 +18,19 @@ import (
|
|||
"net/http"
|
||||
|
||||
gitsource "agola.io/agola/internal/gitsources"
|
||||
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/util"
|
||||
csclient "agola.io/agola/services/configstore/client"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"go.uber.org/zap"
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
type RemoteRepoResponse struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
}
|
||||
|
||||
func createRemoteRepoResponse(r *gitsource.RepoInfo) *RemoteRepoResponse {
|
||||
rr := &RemoteRepoResponse{
|
||||
func createRemoteRepoResponse(r *gitsource.RepoInfo) *gwapitypes.RemoteRepoResponse {
|
||||
rr := &gwapitypes.RemoteRepoResponse{
|
||||
ID: r.ID,
|
||||
Path: r.Path,
|
||||
}
|
||||
|
@ -45,10 +41,10 @@ func createRemoteRepoResponse(r *gitsource.RepoInfo) *RemoteRepoResponse {
|
|||
type UserRemoteReposHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
configstoreClient *csapi.Client
|
||||
configstoreClient *csclient.Client
|
||||
}
|
||||
|
||||
func NewUserRemoteReposHandler(logger *zap.Logger, ah *action.ActionHandler, configstoreClient *csapi.Client) *UserRemoteReposHandler {
|
||||
func NewUserRemoteReposHandler(logger *zap.Logger, ah *action.ActionHandler, configstoreClient *csclient.Client) *UserRemoteReposHandler {
|
||||
return &UserRemoteReposHandler{log: logger.Sugar(), ah: ah, configstoreClient: configstoreClient}
|
||||
}
|
||||
|
||||
|
@ -105,7 +101,7 @@ func (h *UserRemoteReposHandler) ServeHTTP(w http.ResponseWriter, r *http.Reques
|
|||
return
|
||||
}
|
||||
|
||||
repos := make([]*RemoteRepoResponse, len(remoteRepos))
|
||||
repos := make([]*gwapitypes.RemoteRepoResponse, len(remoteRepos))
|
||||
for i, r := range remoteRepos {
|
||||
repos[i] = createRemoteRepoResponse(r)
|
||||
}
|
||||
|
|
|
@ -19,29 +19,16 @@ import (
|
|||
"net/http"
|
||||
"strconv"
|
||||
|
||||
cstypes "agola.io/agola/internal/services/configstore/types"
|
||||
"agola.io/agola/internal/services/gateway/action"
|
||||
"agola.io/agola/internal/util"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
type CreateRemoteSourceRequest struct {
|
||||
Name string `json:"name"`
|
||||
APIURL string `json:"apiurl"`
|
||||
Type string `json:"type"`
|
||||
AuthType string `json:"auth_type"`
|
||||
SkipVerify bool `json:"skip_verify"`
|
||||
Oauth2ClientID string `json:"oauth_2_client_id"`
|
||||
Oauth2ClientSecret string `json:"oauth_2_client_secret"`
|
||||
SSHHostKey string `json:"ssh_host_key"`
|
||||
SkipSSHHostKeyCheck bool `json:"skip_ssh_host_key_check"`
|
||||
RegistrationEnabled *bool `json:"registration_enabled"`
|
||||
LoginEnabled *bool `json:"login_enabled"`
|
||||
}
|
||||
|
||||
type CreateRemoteSourceHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -54,7 +41,7 @@ func NewCreateRemoteSourceHandler(logger *zap.Logger, ah *action.ActionHandler)
|
|||
func (h *CreateRemoteSourceHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
|
||||
var req CreateRemoteSourceRequest
|
||||
var req gwapitypes.CreateRemoteSourceRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -86,18 +73,6 @@ func (h *CreateRemoteSourceHandler) ServeHTTP(w http.ResponseWriter, r *http.Req
|
|||
}
|
||||
}
|
||||
|
||||
type UpdateRemoteSourceRequest struct {
|
||||
Name *string `json:"name"`
|
||||
APIURL *string `json:"apiurl"`
|
||||
SkipVerify *bool `json:"skip_verify"`
|
||||
Oauth2ClientID *string `json:"oauth_2_client_id"`
|
||||
Oauth2ClientSecret *string `json:"oauth_2_client_secret"`
|
||||
SSHHostKey *string `json:"ssh_host_key"`
|
||||
SkipSSHHostKeyCheck *bool `json:"skip_ssh_host_key_check"`
|
||||
RegistrationEnabled *bool `json:"registration_enabled"`
|
||||
LoginEnabled *bool `json:"login_enabled"`
|
||||
}
|
||||
|
||||
type UpdateRemoteSourceHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -112,7 +87,7 @@ func (h *UpdateRemoteSourceHandler) ServeHTTP(w http.ResponseWriter, r *http.Req
|
|||
vars := mux.Vars(r)
|
||||
rsRef := vars["remotesourceref"]
|
||||
|
||||
var req UpdateRemoteSourceRequest
|
||||
var req gwapitypes.UpdateRemoteSourceRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -144,16 +119,8 @@ func (h *UpdateRemoteSourceHandler) ServeHTTP(w http.ResponseWriter, r *http.Req
|
|||
}
|
||||
}
|
||||
|
||||
type RemoteSourceResponse struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
AuthType string `json:"auth_type"`
|
||||
RegistrationEnabled bool `json:"registration_enabled"`
|
||||
LoginEnabled bool `json:"login_enabled"`
|
||||
}
|
||||
|
||||
func createRemoteSourceResponse(r *cstypes.RemoteSource) *RemoteSourceResponse {
|
||||
rs := &RemoteSourceResponse{
|
||||
func createRemoteSourceResponse(r *cstypes.RemoteSource) *gwapitypes.RemoteSourceResponse {
|
||||
rs := &gwapitypes.RemoteSourceResponse{
|
||||
ID: r.ID,
|
||||
Name: r.Name,
|
||||
AuthType: string(r.AuthType),
|
||||
|
@ -237,7 +204,7 @@ func (h *RemoteSourcesHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
return
|
||||
}
|
||||
|
||||
remoteSources := make([]*RemoteSourceResponse, len(csRemoteSources))
|
||||
remoteSources := make([]*gwapitypes.RemoteSourceResponse, len(csRemoteSources))
|
||||
for i, rs := range csRemoteSources {
|
||||
remoteSources[i] = createRemoteSourceResponse(rs)
|
||||
}
|
||||
|
|
|
@ -19,103 +19,19 @@ import (
|
|||
"io"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"agola.io/agola/internal/services/gateway/action"
|
||||
rstypes "agola.io/agola/internal/services/runservice/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"go.uber.org/zap"
|
||||
errors "golang.org/x/xerrors"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
rstypes "agola.io/agola/services/runservice/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"go.uber.org/zap"
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
type RunsResponse struct {
|
||||
ID string `json:"id"`
|
||||
Counter uint64 `json:"counter"`
|
||||
Name string `json:"name"`
|
||||
Annotations map[string]string `json:"annotations"`
|
||||
Phase rstypes.RunPhase `json:"phase"`
|
||||
Result rstypes.RunResult `json:"result"`
|
||||
|
||||
TasksWaitingApproval []string `json:"tasks_waiting_approval"`
|
||||
|
||||
EnqueueTime *time.Time `json:"enqueue_time"`
|
||||
StartTime *time.Time `json:"start_time"`
|
||||
EndTime *time.Time `json:"end_time"`
|
||||
}
|
||||
|
||||
type RunResponse struct {
|
||||
ID string `json:"id"`
|
||||
Counter uint64 `json:"counter"`
|
||||
Name string `json:"name"`
|
||||
Annotations map[string]string `json:"annotations"`
|
||||
Phase rstypes.RunPhase `json:"phase"`
|
||||
Result rstypes.RunResult `json:"result"`
|
||||
SetupErrors []string `json:"setup_errors"`
|
||||
Stopping bool `json:"stopping"`
|
||||
|
||||
Tasks map[string]*RunResponseTask `json:"tasks"`
|
||||
TasksWaitingApproval []string `json:"tasks_waiting_approval"`
|
||||
|
||||
EnqueueTime *time.Time `json:"enqueue_time"`
|
||||
StartTime *time.Time `json:"start_time"`
|
||||
EndTime *time.Time `json:"end_time"`
|
||||
|
||||
CanRestartFromScratch bool `json:"can_restart_from_scratch"`
|
||||
CanRestartFromFailedTasks bool `json:"can_restart_from_failed_tasks"`
|
||||
}
|
||||
|
||||
type RunResponseTask struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Status rstypes.RunTaskStatus `json:"status"`
|
||||
Level int `json:"level"`
|
||||
Depends map[string]*rstypes.RunConfigTaskDepend `json:"depends"`
|
||||
|
||||
WaitingApproval bool `json:"waiting_approval"`
|
||||
Approved bool `json:"approved"`
|
||||
ApprovalAnnotations map[string]string `json:"approval_annotations"`
|
||||
|
||||
StartTime *time.Time `json:"start_time"`
|
||||
EndTime *time.Time `json:"end_time"`
|
||||
}
|
||||
|
||||
type RunTaskResponse struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Status rstypes.RunTaskStatus `json:"status"`
|
||||
|
||||
WaitingApproval bool `json:"waiting_approval"`
|
||||
Approved bool `json:"approved"`
|
||||
ApprovalAnnotations map[string]string `json:"approval_annotations"`
|
||||
|
||||
SetupStep *RunTaskResponseSetupStep `json:"setup_step"`
|
||||
Steps []*RunTaskResponseStep `json:"steps"`
|
||||
|
||||
StartTime *time.Time `json:"start_time"`
|
||||
EndTime *time.Time `json:"end_time"`
|
||||
}
|
||||
|
||||
type RunTaskResponseSetupStep struct {
|
||||
Phase rstypes.ExecutorTaskPhase `json:"phase"`
|
||||
Name string `json:"name"`
|
||||
|
||||
StartTime *time.Time `json:"start_time"`
|
||||
EndTime *time.Time `json:"end_time"`
|
||||
}
|
||||
|
||||
type RunTaskResponseStep struct {
|
||||
Phase rstypes.ExecutorTaskPhase `json:"phase"`
|
||||
Name string `json:"name"`
|
||||
Command string `json:"command"`
|
||||
|
||||
StartTime *time.Time `json:"start_time"`
|
||||
EndTime *time.Time `json:"end_time"`
|
||||
}
|
||||
|
||||
func createRunResponse(r *rstypes.Run, rc *rstypes.RunConfig) *RunResponse {
|
||||
run := &RunResponse{
|
||||
func createRunResponse(r *rstypes.Run, rc *rstypes.RunConfig) *gwapitypes.RunResponse {
|
||||
run := &gwapitypes.RunResponse{
|
||||
ID: r.ID,
|
||||
Counter: r.Counter,
|
||||
Name: r.Name,
|
||||
|
@ -125,7 +41,7 @@ func createRunResponse(r *rstypes.Run, rc *rstypes.RunConfig) *RunResponse {
|
|||
Stopping: r.Stop,
|
||||
SetupErrors: rc.SetupErrors,
|
||||
|
||||
Tasks: make(map[string]*RunResponseTask),
|
||||
Tasks: make(map[string]*gwapitypes.RunResponseTask),
|
||||
TasksWaitingApproval: r.TasksWaitingApproval(),
|
||||
|
||||
EnqueueTime: r.EnqueueTime,
|
||||
|
@ -144,8 +60,8 @@ func createRunResponse(r *rstypes.Run, rc *rstypes.RunConfig) *RunResponse {
|
|||
return run
|
||||
}
|
||||
|
||||
func createRunResponseTask(r *rstypes.Run, rt *rstypes.RunTask, rct *rstypes.RunConfigTask) *RunResponseTask {
|
||||
t := &RunResponseTask{
|
||||
func createRunResponseTask(r *rstypes.Run, rt *rstypes.RunTask, rct *rstypes.RunConfigTask) *gwapitypes.RunResponseTask {
|
||||
t := &gwapitypes.RunResponseTask{
|
||||
ID: rt.ID,
|
||||
Name: rct.Name,
|
||||
Status: rt.Status,
|
||||
|
@ -164,8 +80,8 @@ func createRunResponseTask(r *rstypes.Run, rt *rstypes.RunTask, rct *rstypes.Run
|
|||
return t
|
||||
}
|
||||
|
||||
func createRunTaskResponse(rt *rstypes.RunTask, rct *rstypes.RunConfigTask) *RunTaskResponse {
|
||||
t := &RunTaskResponse{
|
||||
func createRunTaskResponse(rt *rstypes.RunTask, rct *rstypes.RunConfigTask) *gwapitypes.RunTaskResponse {
|
||||
t := &gwapitypes.RunTaskResponse{
|
||||
ID: rt.ID,
|
||||
Name: rct.Name,
|
||||
Status: rt.Status,
|
||||
|
@ -174,13 +90,13 @@ func createRunTaskResponse(rt *rstypes.RunTask, rct *rstypes.RunConfigTask) *Run
|
|||
Approved: rt.Approved,
|
||||
ApprovalAnnotations: rt.Annotations,
|
||||
|
||||
Steps: make([]*RunTaskResponseStep, len(rt.Steps)),
|
||||
Steps: make([]*gwapitypes.RunTaskResponseStep, len(rt.Steps)),
|
||||
|
||||
StartTime: rt.StartTime,
|
||||
EndTime: rt.EndTime,
|
||||
}
|
||||
|
||||
t.SetupStep = &RunTaskResponseSetupStep{
|
||||
t.SetupStep = &gwapitypes.RunTaskResponseSetupStep{
|
||||
Name: "Task setup",
|
||||
Phase: rt.SetupStep.Phase,
|
||||
StartTime: rt.SetupStep.StartTime,
|
||||
|
@ -188,7 +104,7 @@ func createRunTaskResponse(rt *rstypes.RunTask, rct *rstypes.RunConfigTask) *Run
|
|||
}
|
||||
|
||||
for i := 0; i < len(t.Steps); i++ {
|
||||
s := &RunTaskResponseStep{
|
||||
s := &gwapitypes.RunTaskResponseStep{
|
||||
Phase: rt.Steps[i].Phase,
|
||||
StartTime: rt.Steps[i].StartTime,
|
||||
EndTime: rt.Steps[i].EndTime,
|
||||
|
@ -282,8 +198,8 @@ const (
|
|||
MaxRunsLimit = 40
|
||||
)
|
||||
|
||||
func createRunsResponse(r *rstypes.Run) *RunsResponse {
|
||||
run := &RunsResponse{
|
||||
func createRunsResponse(r *rstypes.Run) *gwapitypes.RunsResponse {
|
||||
run := &gwapitypes.RunsResponse{
|
||||
ID: r.ID,
|
||||
Counter: r.Counter,
|
||||
Name: r.Name,
|
||||
|
@ -368,7 +284,7 @@ func (h *RunsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
runs := make([]*RunsResponse, len(runsResp.Runs))
|
||||
runs := make([]*gwapitypes.RunsResponse, len(runsResp.Runs))
|
||||
for i, r := range runsResp.Runs {
|
||||
runs[i] = createRunsResponse(r)
|
||||
}
|
||||
|
@ -377,13 +293,6 @@ func (h *RunsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
type RunActionsRequest struct {
|
||||
ActionType action.RunActionType `json:"action_type"`
|
||||
|
||||
// Restart
|
||||
FromStart bool `json:"from_start"`
|
||||
}
|
||||
|
||||
type RunActionsHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -398,7 +307,7 @@ func (h *RunActionsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
vars := mux.Vars(r)
|
||||
runID := vars["runid"]
|
||||
|
||||
var req RunActionsRequest
|
||||
var req gwapitypes.RunActionsRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -407,7 +316,7 @@ func (h *RunActionsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
areq := &action.RunActionsRequest{
|
||||
RunID: runID,
|
||||
ActionType: req.ActionType,
|
||||
ActionType: action.RunActionType(req.ActionType),
|
||||
FromStart: req.FromStart,
|
||||
}
|
||||
|
||||
|
@ -423,10 +332,6 @@ func (h *RunActionsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
type RunTaskActionsRequest struct {
|
||||
ActionType action.RunTaskActionType `json:"action_type"`
|
||||
}
|
||||
|
||||
type RunTaskActionsHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -442,7 +347,7 @@ func (h *RunTaskActionsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request
|
|||
runID := vars["runid"]
|
||||
taskID := vars["taskid"]
|
||||
|
||||
var req RunTaskActionsRequest
|
||||
var req gwapitypes.RunTaskActionsRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -452,7 +357,7 @@ func (h *RunTaskActionsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request
|
|||
areq := &action.RunTaskActionsRequest{
|
||||
RunID: runID,
|
||||
TaskID: taskID,
|
||||
ActionType: req.ActionType,
|
||||
ActionType: action.RunTaskActionType(req.ActionType),
|
||||
}
|
||||
|
||||
err := h.ah.RunTaskAction(ctx, areq)
|
||||
|
|
|
@ -18,23 +18,18 @@ import (
|
|||
"encoding/json"
|
||||
"net/http"
|
||||
|
||||
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/util"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type SecretResponse struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
ParentPath string `json:"parent_path"`
|
||||
}
|
||||
|
||||
func createSecretResponse(s *csapi.Secret) *SecretResponse {
|
||||
return &SecretResponse{
|
||||
func createSecretResponse(s *csapitypes.Secret) *gwapitypes.SecretResponse {
|
||||
return &gwapitypes.SecretResponse{
|
||||
ID: s.ID,
|
||||
Name: s.Name,
|
||||
ParentPath: s.ParentPath,
|
||||
|
@ -72,7 +67,7 @@ func (h *SecretHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
secrets := make([]*SecretResponse, len(cssecrets))
|
||||
secrets := make([]*gwapitypes.SecretResponse, len(cssecrets))
|
||||
for i, s := range cssecrets {
|
||||
secrets[i] = createSecretResponse(s)
|
||||
}
|
||||
|
@ -82,19 +77,6 @@ func (h *SecretHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
type CreateSecretRequest struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
|
||||
Type cstypes.SecretType `json:"type,omitempty"`
|
||||
|
||||
// internal secret
|
||||
Data map[string]string `json:"data,omitempty"`
|
||||
|
||||
// external secret
|
||||
SecretProviderID string `json:"secret_provider_id,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
}
|
||||
|
||||
type CreateSecretHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -111,7 +93,7 @@ func (h *CreateSecretHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
return
|
||||
}
|
||||
|
||||
var req CreateSecretRequest
|
||||
var req gwapitypes.CreateSecretRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -122,7 +104,7 @@ func (h *CreateSecretHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
Name: req.Name,
|
||||
ParentType: parentType,
|
||||
ParentRef: parentRef,
|
||||
Type: req.Type,
|
||||
Type: cstypes.SecretType(req.Type),
|
||||
Data: req.Data,
|
||||
SecretProviderID: req.SecretProviderID,
|
||||
Path: req.Path,
|
||||
|
@ -139,19 +121,6 @@ func (h *CreateSecretHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
}
|
||||
}
|
||||
|
||||
type UpdateSecretRequest struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
|
||||
Type cstypes.SecretType `json:"type,omitempty"`
|
||||
|
||||
// internal secret
|
||||
Data map[string]string `json:"data,omitempty"`
|
||||
|
||||
// external secret
|
||||
SecretProviderID string `json:"secret_provider_id,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateSecretHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -172,7 +141,7 @@ func (h *UpdateSecretHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
return
|
||||
}
|
||||
|
||||
var req UpdateSecretRequest
|
||||
var req gwapitypes.UpdateSecretRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -184,7 +153,7 @@ func (h *UpdateSecretHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
Name: req.Name,
|
||||
ParentType: parentType,
|
||||
ParentRef: parentRef,
|
||||
Type: req.Type,
|
||||
Type: cstypes.SecretType(req.Type),
|
||||
Data: req.Data,
|
||||
SecretProviderID: req.SecretProviderID,
|
||||
Path: req.Path,
|
||||
|
|
|
@ -21,20 +21,16 @@ import (
|
|||
"sort"
|
||||
"strconv"
|
||||
|
||||
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/util"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"go.uber.org/zap"
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
type CreateUserRequest struct {
|
||||
UserName string `json:"username"`
|
||||
}
|
||||
|
||||
type CreateUserHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -47,7 +43,7 @@ func NewCreateUserHandler(logger *zap.Logger, ah *action.ActionHandler) *CreateU
|
|||
func (h *CreateUserHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
|
||||
var req CreateUserRequest
|
||||
var req gwapitypes.CreateUserRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -152,26 +148,12 @@ func (h *UserHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
type UserResponse struct {
|
||||
ID string `json:"id"`
|
||||
UserName string `json:"username"`
|
||||
Tokens []string `json:"tokens"`
|
||||
LinkedAccounts []*LinkedAccountResponse `json:"linked_accounts"`
|
||||
}
|
||||
|
||||
type LinkedAccountResponse struct {
|
||||
ID string `json:"id"`
|
||||
RemoteSourceID string `json:"remote_source_id"`
|
||||
RemoteUserName string `json:"remote_user_name"`
|
||||
RemoteUserAvatarURL string `json:"remote_user_avatar_url"`
|
||||
}
|
||||
|
||||
func createUserResponse(u *cstypes.User) *UserResponse {
|
||||
user := &UserResponse{
|
||||
func createUserResponse(u *cstypes.User) *gwapitypes.UserResponse {
|
||||
user := &gwapitypes.UserResponse{
|
||||
ID: u.ID,
|
||||
UserName: u.Name,
|
||||
Tokens: make([]string, 0, len(u.Tokens)),
|
||||
LinkedAccounts: make([]*LinkedAccountResponse, 0, len(u.LinkedAccounts)),
|
||||
LinkedAccounts: make([]*gwapitypes.LinkedAccountResponse, 0, len(u.LinkedAccounts)),
|
||||
}
|
||||
for tokenName := range u.Tokens {
|
||||
user.Tokens = append(user.Tokens, tokenName)
|
||||
|
@ -179,7 +161,7 @@ func createUserResponse(u *cstypes.User) *UserResponse {
|
|||
sort.Strings(user.Tokens)
|
||||
|
||||
for _, la := range u.LinkedAccounts {
|
||||
user.LinkedAccounts = append(user.LinkedAccounts, &LinkedAccountResponse{
|
||||
user.LinkedAccounts = append(user.LinkedAccounts, &gwapitypes.LinkedAccountResponse{
|
||||
ID: la.ID,
|
||||
RemoteSourceID: la.RemoteSourceID,
|
||||
RemoteUserName: la.RemoteUserName,
|
||||
|
@ -239,7 +221,7 @@ func (h *UsersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
users := make([]*UserResponse, len(csusers))
|
||||
users := make([]*gwapitypes.UserResponse, len(csusers))
|
||||
for i, p := range csusers {
|
||||
users[i] = createUserResponse(p)
|
||||
}
|
||||
|
@ -249,17 +231,6 @@ func (h *UsersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
type CreateUserLARequest struct {
|
||||
RemoteSourceName string `json:"remote_source_name"`
|
||||
RemoteSourceLoginName string `json:"remote_source_login_name"`
|
||||
RemoteSourceLoginPassword string `json:"remote_source_login_password"`
|
||||
}
|
||||
|
||||
type CreateUserLAResponse struct {
|
||||
LinkedAccount *cstypes.LinkedAccount `json:"linked_account"`
|
||||
Oauth2Redirect string `json:"oauth2_redirect"`
|
||||
}
|
||||
|
||||
type CreateUserLAHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -274,7 +245,7 @@ func (h *CreateUserLAHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
vars := mux.Vars(r)
|
||||
userRef := vars["userref"]
|
||||
|
||||
var req *CreateUserLARequest
|
||||
var req *gwapitypes.CreateUserLARequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -292,7 +263,7 @@ func (h *CreateUserLAHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
}
|
||||
}
|
||||
|
||||
func (h *CreateUserLAHandler) createUserLA(ctx context.Context, userRef string, req *CreateUserLARequest) (*CreateUserLAResponse, error) {
|
||||
func (h *CreateUserLAHandler) createUserLA(ctx context.Context, userRef string, req *gwapitypes.CreateUserLARequest) (*gwapitypes.CreateUserLAResponse, error) {
|
||||
creq := &action.CreateUserLARequest{
|
||||
UserRef: userRef,
|
||||
RemoteSourceName: req.RemoteSourceName,
|
||||
|
@ -304,14 +275,20 @@ func (h *CreateUserLAHandler) createUserLA(ctx context.Context, userRef string,
|
|||
return nil, err
|
||||
}
|
||||
if cresp.Oauth2Redirect != "" {
|
||||
return &CreateUserLAResponse{
|
||||
return &gwapitypes.CreateUserLAResponse{
|
||||
Oauth2Redirect: cresp.Oauth2Redirect,
|
||||
}, nil
|
||||
}
|
||||
authresp := cresp.Response.(*action.CreateUserLAResponse)
|
||||
|
||||
resp := &CreateUserLAResponse{
|
||||
LinkedAccount: authresp.LinkedAccount,
|
||||
resp := &gwapitypes.CreateUserLAResponse{
|
||||
LinkedAccount: &gwapitypes.LinkedAccount{
|
||||
ID: authresp.LinkedAccount.ID,
|
||||
RemoteUserID: authresp.LinkedAccount.RemoteUserID,
|
||||
RemoteUserName: authresp.LinkedAccount.RemoteUserName,
|
||||
RemoteUserAvatarURL: authresp.LinkedAccount.RemoteUserAvatarURL,
|
||||
RemoteSourceID: authresp.LinkedAccount.RemoteUserID,
|
||||
},
|
||||
}
|
||||
h.log.Infof("linked account %q for user %q created", resp.LinkedAccount.ID, userRef)
|
||||
return resp, nil
|
||||
|
@ -343,14 +320,6 @@ func (h *DeleteUserLAHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
}
|
||||
}
|
||||
|
||||
type CreateUserTokenRequest struct {
|
||||
TokenName string `json:"token_name"`
|
||||
}
|
||||
|
||||
type CreateUserTokenResponse struct {
|
||||
Token string `json:"token"`
|
||||
}
|
||||
|
||||
type CreateUserTokenHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -365,7 +334,7 @@ func (h *CreateUserTokenHandler) ServeHTTP(w http.ResponseWriter, r *http.Reques
|
|||
vars := mux.Vars(r)
|
||||
userRef := vars["userref"]
|
||||
|
||||
var req CreateUserTokenRequest
|
||||
var req gwapitypes.CreateUserTokenRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -383,7 +352,7 @@ func (h *CreateUserTokenHandler) ServeHTTP(w http.ResponseWriter, r *http.Reques
|
|||
return
|
||||
}
|
||||
|
||||
res := &CreateUserTokenResponse{
|
||||
res := &gwapitypes.CreateUserTokenResponse{
|
||||
Token: token,
|
||||
}
|
||||
|
||||
|
@ -419,20 +388,11 @@ func (h *DeleteUserTokenHandler) ServeHTTP(w http.ResponseWriter, r *http.Reques
|
|||
}
|
||||
}
|
||||
|
||||
type RegisterUserRequest struct {
|
||||
CreateUserRequest
|
||||
CreateUserLARequest
|
||||
}
|
||||
|
||||
type RegisterUserHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
}
|
||||
|
||||
type RegisterUserResponse struct {
|
||||
Oauth2Redirect string `json:"oauth2_redirect"`
|
||||
}
|
||||
|
||||
func NewRegisterUserHandler(logger *zap.Logger, ah *action.ActionHandler) *RegisterUserHandler {
|
||||
return &RegisterUserHandler{log: logger.Sugar(), ah: ah}
|
||||
}
|
||||
|
@ -440,7 +400,7 @@ func NewRegisterUserHandler(logger *zap.Logger, ah *action.ActionHandler) *Regis
|
|||
func (h *RegisterUserHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
|
||||
var req *RegisterUserRequest
|
||||
var req *gwapitypes.RegisterUserRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -458,7 +418,7 @@ func (h *RegisterUserHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|||
}
|
||||
}
|
||||
|
||||
func (h *RegisterUserHandler) registerUser(ctx context.Context, req *RegisterUserRequest) (*RegisterUserResponse, error) {
|
||||
func (h *RegisterUserHandler) registerUser(ctx context.Context, req *gwapitypes.RegisterUserRequest) (*gwapitypes.RegisterUserResponse, error) {
|
||||
creq := &action.RegisterUserRequest{
|
||||
UserName: req.CreateUserRequest.UserName,
|
||||
RemoteSourceName: req.CreateUserLARequest.RemoteSourceName,
|
||||
|
@ -469,13 +429,13 @@ func (h *RegisterUserHandler) registerUser(ctx context.Context, req *RegisterUse
|
|||
return nil, err
|
||||
}
|
||||
if cresp.Oauth2Redirect != "" {
|
||||
return &RegisterUserResponse{
|
||||
return &gwapitypes.RegisterUserResponse{
|
||||
Oauth2Redirect: cresp.Oauth2Redirect,
|
||||
}, nil
|
||||
}
|
||||
//authresp := cresp.Response.(*action.RegisterUserResponse)
|
||||
|
||||
resp := &RegisterUserResponse{}
|
||||
resp := &gwapitypes.RegisterUserResponse{}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
|
@ -484,12 +444,6 @@ type AuthorizeHandler struct {
|
|||
ah *action.ActionHandler
|
||||
}
|
||||
|
||||
type AuthorizeResponse struct {
|
||||
Oauth2Redirect string `json:"oauth2_redirect"`
|
||||
RemoteUserInfo *gitsource.UserInfo `json:"remote_user_info"`
|
||||
RemoteSourceName string `json:"remote_source_name"`
|
||||
}
|
||||
|
||||
func NewAuthorizeHandler(logger *zap.Logger, ah *action.ActionHandler) *AuthorizeHandler {
|
||||
return &AuthorizeHandler{log: logger.Sugar(), ah: ah}
|
||||
}
|
||||
|
@ -497,7 +451,7 @@ func NewAuthorizeHandler(logger *zap.Logger, ah *action.ActionHandler) *Authoriz
|
|||
func (h *AuthorizeHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
|
||||
var req *LoginUserRequest
|
||||
var req *gwapitypes.LoginUserRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -515,7 +469,7 @@ func (h *AuthorizeHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
func (h *AuthorizeHandler) authorize(ctx context.Context, req *LoginUserRequest) (*AuthorizeResponse, error) {
|
||||
func (h *AuthorizeHandler) authorize(ctx context.Context, req *gwapitypes.LoginUserRequest) (*gwapitypes.AuthorizeResponse, error) {
|
||||
creq := &action.LoginUserRequest{
|
||||
RemoteSourceName: req.RemoteSourceName,
|
||||
}
|
||||
|
@ -525,31 +479,23 @@ func (h *AuthorizeHandler) authorize(ctx context.Context, req *LoginUserRequest)
|
|||
return nil, err
|
||||
}
|
||||
if cresp.Oauth2Redirect != "" {
|
||||
return &AuthorizeResponse{
|
||||
return &gwapitypes.AuthorizeResponse{
|
||||
Oauth2Redirect: cresp.Oauth2Redirect,
|
||||
}, nil
|
||||
}
|
||||
authresp := cresp.Response.(*action.AuthorizeResponse)
|
||||
|
||||
resp := &AuthorizeResponse{
|
||||
RemoteUserInfo: authresp.RemoteUserInfo,
|
||||
resp := &gwapitypes.AuthorizeResponse{
|
||||
RemoteUserInfo: &gwapitypes.UserInfo{
|
||||
ID: authresp.RemoteUserInfo.ID,
|
||||
LoginName: authresp.RemoteUserInfo.LoginName,
|
||||
Email: authresp.RemoteUserInfo.Email,
|
||||
},
|
||||
RemoteSourceName: authresp.RemoteSourceName,
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
type LoginUserRequest struct {
|
||||
RemoteSourceName string `json:"remote_source_name"`
|
||||
LoginName string `json:"login_name"`
|
||||
LoginPassword string `json:"password"`
|
||||
}
|
||||
|
||||
type LoginUserResponse struct {
|
||||
Oauth2Redirect string `json:"oauth2_redirect"`
|
||||
Token string `json:"token"`
|
||||
User *UserResponse `json:"user"`
|
||||
}
|
||||
|
||||
type LoginUserHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -562,7 +508,7 @@ func NewLoginUserHandler(logger *zap.Logger, ah *action.ActionHandler) *LoginUse
|
|||
func (h *LoginUserHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
|
||||
var req *LoginUserRequest
|
||||
var req *gwapitypes.LoginUserRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -580,7 +526,7 @@ func (h *LoginUserHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
func (h *LoginUserHandler) loginUser(ctx context.Context, req *LoginUserRequest) (*LoginUserResponse, error) {
|
||||
func (h *LoginUserHandler) loginUser(ctx context.Context, req *gwapitypes.LoginUserRequest) (*gwapitypes.LoginUserResponse, error) {
|
||||
creq := &action.LoginUserRequest{
|
||||
RemoteSourceName: req.RemoteSourceName,
|
||||
}
|
||||
|
@ -591,27 +537,19 @@ func (h *LoginUserHandler) loginUser(ctx context.Context, req *LoginUserRequest)
|
|||
return nil, err
|
||||
}
|
||||
if cresp.Oauth2Redirect != "" {
|
||||
return &LoginUserResponse{
|
||||
return &gwapitypes.LoginUserResponse{
|
||||
Oauth2Redirect: cresp.Oauth2Redirect,
|
||||
}, nil
|
||||
}
|
||||
authresp := cresp.Response.(*action.LoginUserResponse)
|
||||
|
||||
resp := &LoginUserResponse{
|
||||
resp := &gwapitypes.LoginUserResponse{
|
||||
Token: authresp.Token,
|
||||
User: createUserResponse(authresp.User),
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
type UserCreateRunRequest struct {
|
||||
RepoUUID string `json:"repo_uuid,omitempty"`
|
||||
RepoPath string `json:"repo_path,omitempty"`
|
||||
Branch string `json:"branch,omitempty"`
|
||||
CommitSHA string `json:"commit_sha,omitempty"`
|
||||
Message string `json:"message,omitempty"`
|
||||
}
|
||||
|
||||
type UserCreateRunHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -624,7 +562,7 @@ func NewUserCreateRunHandler(logger *zap.Logger, ah *action.ActionHandler) *User
|
|||
func (h *UserCreateRunHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
|
||||
var req UserCreateRunRequest
|
||||
var req gwapitypes.UserCreateRunRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
|
|
@ -19,43 +19,29 @@ import (
|
|||
"net/http"
|
||||
|
||||
"agola.io/agola/internal/services/common"
|
||||
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/util"
|
||||
"go.uber.org/zap"
|
||||
csapitypes "agola.io/agola/services/configstore/api/types"
|
||||
cstypes "agola.io/agola/services/configstore/types"
|
||||
gwapitypes "agola.io/agola/services/gateway/api/types"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type VariableValue struct {
|
||||
SecretName string `json:"secret_name"`
|
||||
SecretVar string `json:"secret_var"`
|
||||
MatchingSecretParentPath string `json:"matching_secret_parent_path"`
|
||||
|
||||
When *cstypes.When `json:"when"`
|
||||
}
|
||||
|
||||
type VariableResponse struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Values []VariableValue `json:"values"`
|
||||
ParentPath string `json:"parent_path"`
|
||||
}
|
||||
|
||||
func createVariableResponse(v *csapi.Variable, secrets []*csapi.Secret) *VariableResponse {
|
||||
nv := &VariableResponse{
|
||||
func createVariableResponse(v *csapitypes.Variable, secrets []*csapitypes.Secret) *gwapitypes.VariableResponse {
|
||||
nv := &gwapitypes.VariableResponse{
|
||||
ID: v.ID,
|
||||
Name: v.Name,
|
||||
Values: make([]VariableValue, len(v.Values)),
|
||||
Values: make([]gwapitypes.VariableValue, len(v.Values)),
|
||||
ParentPath: v.ParentPath,
|
||||
}
|
||||
|
||||
for i, varvalue := range v.Values {
|
||||
nv.Values[i] = VariableValue{
|
||||
nv.Values[i] = gwapitypes.VariableValue{
|
||||
SecretName: varvalue.SecretName,
|
||||
SecretVar: varvalue.SecretVar,
|
||||
When: varvalue.When,
|
||||
When: fromCsWhen(varvalue.When),
|
||||
}
|
||||
// get matching secret for var value
|
||||
secret := common.GetVarValueMatchingSecret(varvalue, v.ParentPath, secrets)
|
||||
|
@ -100,7 +86,7 @@ func (h *VariableHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
variables := make([]*VariableResponse, len(csvars))
|
||||
variables := make([]*gwapitypes.VariableResponse, len(csvars))
|
||||
for i, v := range csvars {
|
||||
variables[i] = createVariableResponse(v, cssecrets)
|
||||
}
|
||||
|
@ -110,12 +96,6 @@ func (h *VariableHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
type CreateVariableRequest struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
|
||||
Values []cstypes.VariableValue `json:"values,omitempty"`
|
||||
}
|
||||
|
||||
type CreateVariableHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -133,7 +113,7 @@ func (h *CreateVariableHandler) ServeHTTP(w http.ResponseWriter, r *http.Request
|
|||
return
|
||||
}
|
||||
|
||||
var req CreateVariableRequest
|
||||
var req gwapitypes.CreateVariableRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
|
@ -143,7 +123,7 @@ func (h *CreateVariableHandler) ServeHTTP(w http.ResponseWriter, r *http.Request
|
|||
Name: req.Name,
|
||||
ParentType: parentType,
|
||||
ParentRef: parentRef,
|
||||
Values: req.Values,
|
||||
Values: fromApiVariableValues(req.Values),
|
||||
}
|
||||
csvar, cssecrets, err := h.ah.CreateVariable(ctx, areq)
|
||||
if httpError(w, err) {
|
||||
|
@ -157,12 +137,6 @@ func (h *CreateVariableHandler) ServeHTTP(w http.ResponseWriter, r *http.Request
|
|||
}
|
||||
}
|
||||
|
||||
type UpdateVariableRequest struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
|
||||
Values []cstypes.VariableValue `json:"values,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateVariableHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
|
@ -183,19 +157,20 @@ func (h *UpdateVariableHandler) ServeHTTP(w http.ResponseWriter, r *http.Request
|
|||
return
|
||||
}
|
||||
|
||||
var req UpdateVariableRequest
|
||||
var req gwapitypes.UpdateVariableRequest
|
||||
d := json.NewDecoder(r.Body)
|
||||
if err := d.Decode(&req); err != nil {
|
||||
httpError(w, util.NewErrBadRequest(err))
|
||||
return
|
||||
}
|
||||
|
||||
areq := &action.UpdateVariableRequest{
|
||||
VariableName: variableName,
|
||||
|
||||
Name: req.Name,
|
||||
ParentType: parentType,
|
||||
ParentRef: parentRef,
|
||||
Values: req.Values,
|
||||
Values: fromApiVariableValues(req.Values),
|
||||
}
|
||||
csvar, cssecrets, err := h.ah.UpdateVariable(ctx, areq)
|
||||
if httpError(w, err) {
|
||||
|
@ -239,3 +214,75 @@ func (h *DeleteVariableHandler) ServeHTTP(w http.ResponseWriter, r *http.Request
|
|||
h.log.Errorf("err: %+v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func fromApiVariableValues(apivalues []gwapitypes.VariableValueRequest) []cstypes.VariableValue {
|
||||
values := make([]cstypes.VariableValue, len(apivalues))
|
||||
for i, v := range apivalues {
|
||||
values[i] = cstypes.VariableValue{
|
||||
SecretName: v.SecretName,
|
||||
SecretVar: v.SecretVar,
|
||||
When: fromApiWhen(v.When),
|
||||
}
|
||||
}
|
||||
return values
|
||||
}
|
||||
|
||||
func fromApiWhenCondition(apiwc gwapitypes.WhenCondition) cstypes.WhenCondition {
|
||||
return cstypes.WhenCondition{
|
||||
Type: cstypes.WhenConditionType(apiwc.Type),
|
||||
Match: apiwc.Match,
|
||||
}
|
||||
}
|
||||
|
||||
func fromApiWhenConditions(apiwcs *gwapitypes.WhenConditions) *cstypes.WhenConditions {
|
||||
wcs := &cstypes.WhenConditions{
|
||||
Include: make([]cstypes.WhenCondition, len(apiwcs.Include)),
|
||||
Exclude: make([]cstypes.WhenCondition, len(apiwcs.Exclude)),
|
||||
}
|
||||
for i, include := range apiwcs.Include {
|
||||
wcs.Include[i] = fromApiWhenCondition(include)
|
||||
}
|
||||
for i, exclude := range apiwcs.Exclude {
|
||||
wcs.Exclude[i] = fromApiWhenCondition(exclude)
|
||||
}
|
||||
|
||||
return wcs
|
||||
}
|
||||
|
||||
func fromApiWhen(apiwhen *gwapitypes.When) *cstypes.When {
|
||||
return &cstypes.When{
|
||||
Branch: fromApiWhenConditions(apiwhen.Branch),
|
||||
Tag: fromApiWhenConditions(apiwhen.Tag),
|
||||
Ref: fromApiWhenConditions(apiwhen.Ref),
|
||||
}
|
||||
}
|
||||
|
||||
func fromCsWhenCondition(apiwc cstypes.WhenCondition) gwapitypes.WhenCondition {
|
||||
return gwapitypes.WhenCondition{
|
||||
Type: gwapitypes.WhenConditionType(apiwc.Type),
|
||||
Match: apiwc.Match,
|
||||
}
|
||||
}
|
||||
|
||||
func fromCsWhenConditions(apiwcs *cstypes.WhenConditions) *gwapitypes.WhenConditions {
|
||||
wcs := &gwapitypes.WhenConditions{
|
||||
Include: make([]gwapitypes.WhenCondition, len(apiwcs.Include)),
|
||||
Exclude: make([]gwapitypes.WhenCondition, len(apiwcs.Exclude)),
|
||||
}
|
||||
for i, include := range apiwcs.Include {
|
||||
wcs.Include[i] = fromCsWhenCondition(include)
|
||||
}
|
||||
for i, exclude := range apiwcs.Exclude {
|
||||
wcs.Exclude[i] = fromCsWhenCondition(exclude)
|
||||
}
|
||||
|
||||
return wcs
|
||||
}
|
||||
|
||||
func fromCsWhen(apiwhen *cstypes.When) *gwapitypes.When {
|
||||
return &gwapitypes.When{
|
||||
Branch: fromCsWhenConditions(apiwhen.Branch),
|
||||
Tag: fromCsWhenConditions(apiwhen.Tag),
|
||||
Ref: fromCsWhenConditions(apiwhen.Ref),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,11 +18,11 @@ import (
|
|||
"net/http"
|
||||
|
||||
"agola.io/agola/internal/services/common"
|
||||
csapi "agola.io/agola/internal/services/configstore/api"
|
||||
"agola.io/agola/internal/services/gateway/action"
|
||||
rsapi "agola.io/agola/internal/services/runservice/api"
|
||||
"agola.io/agola/internal/services/types"
|
||||
"agola.io/agola/internal/util"
|
||||
csclient "agola.io/agola/services/configstore/client"
|
||||
rsclient "agola.io/agola/services/runservice/client"
|
||||
|
||||
"go.uber.org/zap"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
@ -31,12 +31,12 @@ import (
|
|||
type webhooksHandler struct {
|
||||
log *zap.SugaredLogger
|
||||
ah *action.ActionHandler
|
||||
configstoreClient *csapi.Client
|
||||
runserviceClient *rsapi.Client
|
||||
configstoreClient *csclient.Client
|
||||
runserviceClient *rsclient.Client
|
||||
apiExposedURL string
|
||||
}
|
||||
|
||||
func NewWebhooksHandler(logger *zap.Logger, ah *action.ActionHandler, configstoreClient *csapi.Client, runserviceClient *rsapi.Client, apiExposedURL string) *webhooksHandler {
|
||||
func NewWebhooksHandler(logger *zap.Logger, ah *action.ActionHandler, configstoreClient *csclient.Client, runserviceClient *rsclient.Client, apiExposedURL string) *webhooksHandler {
|
||||
return &webhooksHandler{
|
||||
log: logger.Sugar(),
|
||||
ah: ah,
|
||||
|
|
|
@ -25,12 +25,12 @@ import (
|
|||
"agola.io/agola/internal/objectstorage"
|
||||
"agola.io/agola/internal/services/common"
|
||||
"agola.io/agola/internal/services/config"
|
||||
csapi "agola.io/agola/internal/services/configstore/api"
|
||||
"agola.io/agola/internal/services/gateway/action"
|
||||
"agola.io/agola/internal/services/gateway/api"
|
||||
"agola.io/agola/internal/services/gateway/handlers"
|
||||
rsapi "agola.io/agola/internal/services/runservice/api"
|
||||
"agola.io/agola/internal/util"
|
||||
csclient "agola.io/agola/services/configstore/client"
|
||||
rsclient "agola.io/agola/services/runservice/client"
|
||||
|
||||
jwt "github.com/dgrijalva/jwt-go"
|
||||
ghandlers "github.com/gorilla/handlers"
|
||||
|
@ -52,8 +52,8 @@ type Gateway struct {
|
|||
c *config.Gateway
|
||||
|
||||
ost *objectstorage.ObjStorage
|
||||
runserviceClient *rsapi.Client
|
||||
configstoreClient *csapi.Client
|
||||
runserviceClient *rsclient.Client
|
||||
configstoreClient *csclient.Client
|
||||
ah *action.ActionHandler
|
||||
sd *common.TokenSigningData
|
||||
}
|
||||
|
@ -121,8 +121,8 @@ func NewGateway(gc *config.Config) (*Gateway, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
configstoreClient := csapi.NewClient(c.ConfigstoreURL)
|
||||
runserviceClient := rsapi.NewClient(c.RunserviceURL)
|
||||
configstoreClient := csclient.NewClient(c.ConfigstoreURL)
|
||||
runserviceClient := rsclient.NewClient(c.RunserviceURL)
|
||||
|
||||
ah := action.NewActionHandler(logger, sd, configstoreClient, runserviceClient, gc.ID, c.APIExposedURL, c.WebExposedURL)
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ import (
|
|||
"strings"
|
||||
|
||||
"agola.io/agola/internal/services/common"
|
||||
csapi "agola.io/agola/internal/services/configstore/api"
|
||||
csclient "agola.io/agola/services/configstore/client"
|
||||
|
||||
jwt "github.com/dgrijalva/jwt-go"
|
||||
jwtrequest "github.com/dgrijalva/jwt-go/request"
|
||||
|
@ -32,7 +32,7 @@ type AuthHandler struct {
|
|||
log *zap.SugaredLogger
|
||||
next http.Handler
|
||||
|
||||
configstoreClient *csapi.Client
|
||||
configstoreClient *csclient.Client
|
||||
adminToken string
|
||||
|
||||
sd *common.TokenSigningData
|
||||
|
@ -40,7 +40,7 @@ type AuthHandler struct {
|
|||
required bool
|
||||
}
|
||||
|
||||
func NewAuthHandler(logger *zap.Logger, configstoreClient *csapi.Client, adminToken string, sd *common.TokenSigningData, required bool) func(http.Handler) http.Handler {
|
||||
func NewAuthHandler(logger *zap.Logger, configstoreClient *csclient.Client, adminToken string, sd *common.TokenSigningData, required bool) func(http.Handler) http.Handler {
|
||||
return func(h http.Handler) http.Handler {
|
||||
return &AuthHandler{
|
||||
log: logger.Sugar(),
|
||||
|
|
|
@ -22,7 +22,7 @@ import (
|
|||
gitsource "agola.io/agola/internal/gitsources"
|
||||
"agola.io/agola/internal/services/common"
|
||||
"agola.io/agola/internal/services/gateway/action"
|
||||
rstypes "agola.io/agola/internal/services/runservice/types"
|
||||
rstypes "agola.io/agola/services/runservice/types"
|
||||
|
||||
errors "golang.org/x/xerrors"
|
||||
)
|
||||
|
|
|
@ -21,8 +21,8 @@ import (
|
|||
"agola.io/agola/internal/etcd"
|
||||
slog "agola.io/agola/internal/log"
|
||||
"agola.io/agola/internal/services/config"
|
||||
csapi "agola.io/agola/internal/services/configstore/api"
|
||||
rsapi "agola.io/agola/internal/services/runservice/api"
|
||||
csclient "agola.io/agola/services/configstore/client"
|
||||
rsclient "agola.io/agola/services/runservice/client"
|
||||
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
|
@ -38,8 +38,8 @@ type NotificationService struct {
|
|||
|
||||
e *etcd.Store
|
||||
|
||||
runserviceClient *rsapi.Client
|
||||
configstoreClient *csapi.Client
|
||||
runserviceClient *rsclient.Client
|
||||
configstoreClient *csclient.Client
|
||||
}
|
||||
|
||||
func NewNotificationService(gc *config.Config) (*NotificationService, error) {
|
||||
|
@ -53,8 +53,8 @@ func NewNotificationService(gc *config.Config) (*NotificationService, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
configstoreClient := csapi.NewClient(c.ConfigstoreURL)
|
||||
runserviceClient := rsapi.NewClient(c.RunserviceURL)
|
||||
configstoreClient := csclient.NewClient(c.ConfigstoreURL)
|
||||
runserviceClient := rsclient.NewClient(c.RunserviceURL)
|
||||
|
||||
return &NotificationService{
|
||||
gc: gc,
|
||||
|
|
|
@ -24,7 +24,7 @@ import (
|
|||
"path"
|
||||
"time"
|
||||
|
||||
rstypes "agola.io/agola/internal/services/runservice/types"
|
||||
rstypes "agola.io/agola/services/runservice/types"
|
||||
|
||||
"go.etcd.io/etcd/clientv3/concurrency"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -29,8 +29,8 @@ import (
|
|||
"agola.io/agola/internal/services/runservice/common"
|
||||
"agola.io/agola/internal/services/runservice/readdb"
|
||||
"agola.io/agola/internal/services/runservice/store"
|
||||
"agola.io/agola/internal/services/runservice/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/runservice/types"
|
||||
|
||||
"go.uber.org/zap"
|
||||
errors "golang.org/x/xerrors"
|
||||
|
|
|
@ -17,8 +17,8 @@ package action
|
|||
import (
|
||||
"testing"
|
||||
|
||||
"agola.io/agola/internal/services/runservice/types"
|
||||
"agola.io/agola/internal/util"
|
||||
"agola.io/agola/services/runservice/types"
|
||||
"github.com/google/go-cmp/cmp"
|
||||
)
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue