Skip to content

Commit

Permalink
Fixes after review
Browse files Browse the repository at this point in the history
  • Loading branch information
Mateusz Kuziemko committed Feb 10, 2022
1 parent 5ce9612 commit 52c623f
Show file tree
Hide file tree
Showing 8 changed files with 209 additions and 195 deletions.
11 changes: 9 additions & 2 deletions cmd/argo-actions/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (

"capact.io/capact/internal/logger"
argoactions "capact.io/capact/pkg/argo-actions"
hubclient "capact.io/capact/pkg/hub/client"
"capact.io/capact/pkg/hub/client/local"
"capact.io/capact/pkg/hub/client/public"

Expand Down Expand Up @@ -42,18 +43,24 @@ func main() {
localClient := local.NewDefaultClient(cfg.LocalHubEndpoint)
publicClient := public.NewDefaultClient(cfg.PublicHubEndpoint)

// TODO: Consider using connection `hubclient.New` and route requests through Gateway
client := hubclient.Client{
Local: localClient,
Public: publicClient,
}

switch cfg.Action {
case argoactions.DownloadAction:
log := logger.With(zap.String("Action", argoactions.DownloadAction))
action = argoactions.NewDownloadAction(log, localClient, cfg.DownloadConfig)

case argoactions.UploadAction:
log := logger.With(zap.String("Action", argoactions.UploadAction))
action = argoactions.NewUploadAction(log, localClient, publicClient, cfg.UploadConfig)
action = argoactions.NewUploadAction(log, &client, cfg.UploadConfig)

case argoactions.UpdateAction:
log := logger.With(zap.String("Action", argoactions.UpdateAction))
action = argoactions.NewUpdateAction(log, localClient, publicClient, cfg.UpdateConfig)
action = argoactions.NewUpdateAction(log, &client, cfg.UpdateConfig)

default:
err := fmt.Errorf("Invalid action: %s", cfg.Action)
Expand Down
26 changes: 8 additions & 18 deletions cmd/cli/cmd/typeinstance/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import (
"capact.io/capact/internal/cli/heredoc"
"capact.io/capact/internal/cli/printer"
gqllocalapi "capact.io/capact/pkg/hub/api/graphql/local"
"capact.io/capact/pkg/sdk/apis/0.0.1/types"
"capact.io/capact/pkg/sdk/validation"

"github.com/pkg/errors"
Expand Down Expand Up @@ -99,26 +98,17 @@ func createTI(ctx context.Context, opts createOptions, resourcePrinter *printer.
return err
}

for _, ti := range out.TypeInstances {
validationResult, err := validation.ValidateTI(ctx, &validation.TypeInstanceValidation{
Alias: ti.Alias,
Value: ti.Value,
TypeRef: types.TypeRef{
Path: ti.TypeRef.Path,
Revision: ti.TypeRef.Revision,
},
}, hubCli)
if err != nil {
return errors.Wrap(err, "while validating TypeInstance")
}
if validationResult.Len() > 0 {
return validationResult.ErrorOrNil()
}
}

typeInstanceToCreate = mergeCreateTypeInstances(typeInstanceToCreate, out)
}

validationResult, err := validation.ValidateTypeInstancesToCreate(ctx, hubCli, typeInstanceToCreate)
if err != nil {
return errors.Wrap(err, "while validating TypeInstances")
}
if validationResult.Len() > 0 {
return validationResult.ErrorOrNil()
}

// HACK: UsesRelations are required on GQL side so at least empty array needs to be send
if typeInstanceToCreate.UsesRelations == nil {
typeInstanceToCreate.UsesRelations = []*gqllocalapi.TypeInstanceUsesRelationInput{}
Expand Down
29 changes: 6 additions & 23 deletions cmd/cli/cmd/typeinstance/edit.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"capact.io/capact/internal/cli/client"
"capact.io/capact/internal/cli/config"
gqllocalapi "capact.io/capact/pkg/hub/api/graphql/local"
"capact.io/capact/pkg/sdk/apis/0.0.1/types"
"capact.io/capact/pkg/sdk/validation"

"github.com/AlecAivazis/survey/v2"
Expand Down Expand Up @@ -61,28 +60,12 @@ func editTI(ctx context.Context, opts editOptions, w io.Writer) error {
return err
}

for _, ti := range typeInstanceToUpdate {
if ti.TypeInstance == nil {
continue
}
currentTI, err := hubCli.FindTypeInstance(ctx, ti.ID)
if err != nil {
return errors.Wrapf(err, "while finding TypeInstance %s", ti.ID)
}

validationResult, err := validation.ValidateTI(ctx, &validation.TypeInstanceValidation{
Value: ti.TypeInstance.Value,
TypeRef: types.TypeRef{
Path: currentTI.TypeRef.Path,
Revision: currentTI.TypeRef.Revision,
},
}, hubCli)
if err != nil {
return errors.Wrap(err, "while validating TypeInstance")
}
if validationResult.Len() > 0 {
return validationResult.ErrorOrNil()
}
validationResult, err := validation.ValidateTypeInstanceToUpdate(ctx, hubCli, typeInstanceToUpdate)
if err != nil {
return errors.Wrap(err, "while validating TypeInstance")
}
if validationResult.Len() > 0 {
return validationResult.ErrorOrNil()
}

_, err = hubCli.UpdateTypeInstances(ctx, typeInstanceToUpdate)
Expand Down
53 changes: 16 additions & 37 deletions pkg/argo-actions/update_type_instances.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,9 @@ import (
"path"
"path/filepath"

"capact.io/capact/pkg/sdk/apis/0.0.1/types"
"capact.io/capact/pkg/sdk/validation"

graphqllocal "capact.io/capact/pkg/hub/api/graphql/local"
"capact.io/capact/pkg/hub/client/local"
"capact.io/capact/pkg/hub/client/public"
hubclient "capact.io/capact/pkg/hub/client"
"capact.io/capact/pkg/sdk/validation"
"github.com/pkg/errors"
"go.uber.org/zap"
"sigs.k8s.io/yaml"
Expand All @@ -29,19 +26,17 @@ type UpdateConfig struct {
// Update implements the Action interface.
// It is used to update existing TypeInstances in the Local Hub.
type Update struct {
log *zap.Logger
localClient *local.Client
publicClient *public.Client
cfg UpdateConfig
log *zap.Logger
client *hubclient.Client
cfg UpdateConfig
}

// NewUpdateAction returns a new Update instance.
func NewUpdateAction(log *zap.Logger, localClient *local.Client, publicClient *public.Client, cfg UpdateConfig) Action {
func NewUpdateAction(log *zap.Logger, client *hubclient.Client, cfg UpdateConfig) Action {
return &Update{
log: log,
localClient: localClient,
publicClient: publicClient,
cfg: cfg,
log: log,
client: client,
cfg: cfg,
}
}

Expand Down Expand Up @@ -91,28 +86,12 @@ func (u *Update) Do(ctx context.Context) error {

u.log.Info("Validating TypeInstances")

for _, ti := range payload {
if ti.TypeInstance == nil {
continue
}
currentTI, err := u.localClient.FindTypeInstance(ctx, ti.ID)
if err != nil {
return errors.Wrapf(err, "while finding TypeInstance %s", ti.ID)
}

validationResult, err := validation.ValidateTI(ctx, &validation.TypeInstanceValidation{
Value: ti.TypeInstance.Value,
TypeRef: types.TypeRef{
Path: currentTI.TypeRef.Path,
Revision: currentTI.TypeRef.Revision,
},
}, u.publicClient)
if err != nil {
return errors.Wrap(err, "while validating TypeInstance")
}
if validationResult.Len() > 0 {
return validationResult.ErrorOrNil()
}
validationResult, err := validation.ValidateTypeInstanceToUpdate(ctx, u.client, payload)
if err != nil {
return errors.Wrap(err, "while validating TypeInstance")
}
if validationResult.Len() > 0 {
return validationResult.ErrorOrNil()
}

u.log.Info("Updating TypeInstances in Hub...", zap.Int("TypeInstance count", len(payload)))
Expand Down Expand Up @@ -142,5 +121,5 @@ func (u *Update) render(payload []graphqllocal.UpdateTypeInstancesInput, values
}

func (u *Update) updateTypeInstances(ctx context.Context, in []graphqllocal.UpdateTypeInstancesInput) ([]graphqllocal.TypeInstance, error) {
return u.localClient.UpdateTypeInstances(ctx, in)
return u.client.Local.UpdateTypeInstances(ctx, in)
}
42 changes: 15 additions & 27 deletions pkg/argo-actions/upload_type_instances.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,9 @@ import (
"path/filepath"

graphqllocal "capact.io/capact/pkg/hub/api/graphql/local"
"capact.io/capact/pkg/sdk/apis/0.0.1/types"
hubclient "capact.io/capact/pkg/hub/client"
"capact.io/capact/pkg/sdk/validation"

"capact.io/capact/pkg/hub/client/local"
"capact.io/capact/pkg/hub/client/public"
"github.com/pkg/errors"
"go.uber.org/zap"
"sigs.k8s.io/yaml"
Expand All @@ -29,19 +27,17 @@ type UploadConfig struct {
// Upload implements the Action interface.
// It is used to upload TypeInstances to the Local Hub.
type Upload struct {
log *zap.Logger
localClient *local.Client
publicClient *public.Client
cfg UploadConfig
log *zap.Logger
client *hubclient.Client
cfg UploadConfig
}

// NewUploadAction returns a new Upload instance.
func NewUploadAction(log *zap.Logger, localClient *local.Client, publicClient *public.Client, cfg UploadConfig) Action {
func NewUploadAction(log *zap.Logger, client *hubclient.Client, cfg UploadConfig) Action {
return &Upload{
log: log,
localClient: localClient,
publicClient: publicClient,
cfg: cfg,
log: log,
client: client,
cfg: cfg,
}
}

Expand Down Expand Up @@ -91,20 +87,12 @@ func (u *Upload) Do(ctx context.Context) error {

u.log.Info("Validating TypeInstances")

for _, ti := range payload.TypeInstances {
validationResult, err := validation.ValidateTI(ctx, &validation.TypeInstanceValidation{
Value: ti.Value,
TypeRef: types.TypeRef{
Path: ti.TypeRef.Path,
Revision: ti.TypeRef.Revision,
},
}, u.publicClient)
if err != nil {
return errors.Wrap(err, "while validating TypeInstance")
}
if validationResult.Len() > 0 {
return validationResult.ErrorOrNil()
}
validationResult, err := validation.ValidateTypeInstancesToCreate(ctx, u.client, payload)
if err != nil {
return errors.Wrap(err, "while validating TypeInstances")
}
if validationResult.Len() > 0 {
return validationResult.ErrorOrNil()
}

u.log.Info("Uploading TypeInstances to Hub...", zap.Int("TypeInstance count", len(payload.TypeInstances)))
Expand Down Expand Up @@ -136,5 +124,5 @@ func (u *Upload) render(payload *graphqllocal.CreateTypeInstancesInput, values m
}

func (u *Upload) uploadTypeInstances(ctx context.Context, in *graphqllocal.CreateTypeInstancesInput) ([]graphqllocal.CreateTypeInstanceOutput, error) {
return u.localClient.CreateTypeInstances(ctx, in)
return u.client.Local.CreateTypeInstances(ctx, in)
}
Loading

0 comments on commit 52c623f

Please sign in to comment.