3
0

Added labels to shared, exposed module, compose record

This commit is contained in:
Peter Grlica
2020-11-13 13:52:26 +01:00
parent df5e2ca89d
commit 4b50d3eddf
3 changed files with 71 additions and 64 deletions
+35 -17
View File
@@ -4,7 +4,8 @@ import (
"context"
"strconv"
composeService "github.com/cortezaproject/corteza-server/compose/service"
cs "github.com/cortezaproject/corteza-server/compose/service"
ct "github.com/cortezaproject/corteza-server/compose/types"
"github.com/cortezaproject/corteza-server/federation/types"
"github.com/cortezaproject/corteza-server/pkg/actionlog"
"github.com/cortezaproject/corteza-server/store"
@@ -13,8 +14,8 @@ import (
type (
exposedModule struct {
node node
module composeService.ModuleService
namespace composeService.NamespaceService
module cs.ModuleService
namespace cs.NamespaceService
store store.Storer
actionlog actionlog.Recorder
}
@@ -34,8 +35,8 @@ type (
func ExposedModule() ExposedModuleService {
return &exposedModule{
node: *DefaultNode,
module: composeService.DefaultModule,
namespace: composeService.DefaultNamespace,
module: cs.DefaultModule,
namespace: cs.DefaultNamespace,
store: DefaultStore,
actionlog: DefaultActionlog,
}
@@ -85,7 +86,13 @@ func (svc exposedModule) Update(ctx context.Context, updated *types.ExposedModul
// return ExposedModuleErrNotAllowedToCreate()
// }
if _, err := svc.node.FindByID(ctx, updated.NodeID); err != nil {
var (
m *ct.Module
node *types.Node
old *types.ExposedModule
)
if node, err = svc.node.FindByID(ctx, updated.NodeID); err != nil {
return ExposedModuleErrNodeNotFound()
}
@@ -93,19 +100,24 @@ func (svc exposedModule) Update(ctx context.Context, updated *types.ExposedModul
return ExposedModuleErrComposeNamespaceNotFound()
}
if _, err := svc.module.With(ctx).FindByID(updated.ComposeNamespaceID, updated.ComposeModuleID); err != nil {
if m, err = svc.module.With(ctx).FindByID(updated.ComposeNamespaceID, updated.ComposeModuleID); err != nil {
return ExposedModuleErrComposeModuleNotFound()
}
old, err := svc.FindByID(ctx, updated.NodeID, updated.ID)
if err != nil {
if old, err = svc.FindByID(ctx, updated.NodeID, updated.ID); err != nil {
return ExposedModuleErrNotFound()
}
updated.UpdatedAt = now()
updated.CreatedAt = old.CreatedAt
// set labels
AddFederationLabel(m, node.BaseURL)
if _, err := svc.module.With(ctx).Update(m); err != nil {
return err
}
aProps.setModule(updated)
if err = store.UpdateFederationExposedModule(ctx, s, updated); err != nil {
@@ -204,8 +216,12 @@ func (svc exposedModule) Create(ctx context.Context, new *types.ExposedModule) (
// if !svc.ac.CanCreateFederationExposedModule(ctx, ns) {
// return ExposedModuleErrNotAllowedToCreate()
// }
var (
m *ct.Module
node *types.Node
)
if _, err := svc.node.FindByID(ctx, new.NodeID); err != nil {
if node, err = svc.node.FindByID(ctx, new.NodeID); err != nil {
return ExposedModuleErrNodeNotFound()
}
@@ -213,7 +229,7 @@ func (svc exposedModule) Create(ctx context.Context, new *types.ExposedModule) (
return ExposedModuleErrComposeNamespaceNotFound()
}
if _, err := svc.module.With(ctx).FindByID(new.ComposeNamespaceID, new.ComposeModuleID); err != nil {
if m, err = svc.module.With(ctx).FindByID(new.ComposeNamespaceID, new.ComposeModuleID); err != nil {
return ExposedModuleErrComposeModuleNotFound()
}
@@ -222,11 +238,6 @@ func (svc exposedModule) Create(ctx context.Context, new *types.ExposedModule) (
return ExposedModuleErrNotUnique()
}
// Check for node - compose.Module combo
if err = svc.uniqueCheck(ctx, new); err != nil {
return err
}
new.ID = nextID()
new.CreatedAt = *now()
new.UpdatedAt = nil
@@ -236,6 +247,13 @@ func (svc exposedModule) Create(ctx context.Context, new *types.ExposedModule) (
if new.Fields != nil {
}
// set labels
AddFederationLabel(m, node.BaseURL)
if _, err := svc.module.With(ctx).Update(m); err != nil {
return err
}
aProps.setModule(new)
if err = store.CreateFederationExposedModule(ctx, s, new); err != nil {
+31 -47
View File
@@ -3,7 +3,8 @@ package service
import (
"context"
composeService "github.com/cortezaproject/corteza-server/compose/service"
cs "github.com/cortezaproject/corteza-server/compose/service"
ct "github.com/cortezaproject/corteza-server/compose/types"
"github.com/cortezaproject/corteza-server/federation/types"
"github.com/cortezaproject/corteza-server/pkg/actionlog"
"github.com/cortezaproject/corteza-server/store"
@@ -12,8 +13,8 @@ import (
type (
moduleMapping struct {
store store.Storer
module composeService.ModuleService
namespace composeService.NamespaceService
module cs.ModuleService
namespace cs.NamespaceService
actionlog actionlog.Recorder
}
@@ -33,48 +34,11 @@ func ModuleMapping() ModuleMappingService {
return &moduleMapping{
store: DefaultStore,
actionlog: DefaultActionlog,
module: composeService.DefaultModule,
namespace: composeService.DefaultNamespace,
module: cs.DefaultModule,
namespace: cs.DefaultNamespace,
}
}
// func (svc moduleMapping) updater(ctx context.Context, federationModuleID, composeModuleID uint64, action func(...*moduleMappingActionProps) *moduleMappingAction, fn moduleUpdateHandler) (*types.ModuleMapping, error) {
// var (
// m *types.ModuleMapping
// aProps = &moduleMappingActionProps{mapping: &types.ModuleMapping{FederationModuleID: federationModuleID, ComposeModuleID: composeModuleID}}
// err error
// )
// err = store.Tx(ctx, svc.store, func(ctx context.Context, s store.Storer) (err error) {
// if m, err = svc.store.LookupFederationModuleMappingByFederationModuleIDComposeModuleID(ctx, federationModuleID, composeModuleID); err != nil {
// return err
// }
// // TODO - handle node id also
// if moduleChanged, fieldsChanged, err = fn(ctx, n, m); err != nil {
// return err
// }
// return err
// })
// return m, svc.recordAction(ctx, aProps, action, err)
// }
// func (svc moduleMapping) DeleteByID(ctx context.Context, federationModuleID, composeModuleID uint64) error {
// _, err := svc.updater(ctx, nodeID, moduleID, ModuleMappingActionDelete(), svc.handleDelete)
// return err
// }
// func (svc moduleMapping) handleDelete(ctx context.Context, m *types.ModuleMapping) (bool, bool, error) {
// if err := store.DeleteFederationModuleMapping(ctx, svc.store, m); err != nil {
// return false, false, err
// }
// return false, false, nil
// }
func (svc moduleMapping) FindByID(ctx context.Context, federationModuleID uint64) (m *types.ModuleMapping, err error) {
err = func() error {
if m, err = store.LookupFederationModuleMappingByFederationModuleID(ctx, svc.store, federationModuleID); err != nil {
@@ -109,24 +73,34 @@ func (svc moduleMapping) Create(ctx context.Context, new *types.ModuleMapping) (
// if !svc.ac.CanCreateFederationExposedModule(ctx, ns) {
// return ExposedModuleErrNotAllowedToCreate()
// }
var (
m *ct.Module
)
if _, err := svc.namespace.With(ctx).FindByID(new.ComposeNamespaceID); err != nil {
return ModuleMappingErrComposeNamespaceNotFound()
}
if _, err := svc.module.With(ctx).FindByID(new.ComposeNamespaceID, new.ComposeModuleID); err != nil {
return ModuleMappingErrComposeModuleNotFound()
}
// Check for federation module - compose.Module combo
if err = svc.uniqueCheck(ctx, new); err != nil {
return err
}
if m, err = svc.module.With(ctx).FindByID(new.ComposeNamespaceID, new.ComposeModuleID); err != nil {
return ModuleMappingErrComposeModuleNotFound()
}
if err = store.CreateFederationModuleMapping(ctx, s, new); err != nil {
return err
}
// set labels
AddFederationLabel(m, "")
if _, err := svc.module.With(ctx).Update(m); err != nil {
return err
}
return nil
})
@@ -143,12 +117,15 @@ func (svc moduleMapping) Update(ctx context.Context, updated *types.ModuleMappin
// if !svc.ac.CanCreateFederationExposedModule(ctx, ns) {
// return ExposedModuleErrNotAllowedToCreate()
// }
var (
m *ct.Module
)
if _, err := svc.namespace.With(ctx).FindByID(updated.ComposeNamespaceID); err != nil {
return ModuleMappingErrComposeNamespaceNotFound()
}
if _, err := svc.module.With(ctx).FindByID(updated.ComposeNamespaceID, updated.ComposeModuleID); err != nil {
if m, err = svc.module.With(ctx).FindByID(updated.ComposeNamespaceID, updated.ComposeModuleID); err != nil {
return ModuleMappingErrComposeModuleNotFound()
}
@@ -156,6 +133,13 @@ func (svc moduleMapping) Update(ctx context.Context, updated *types.ModuleMappin
return err
}
// set labels
AddFederationLabel(m, "")
if _, err := svc.module.With(ctx).Update(m); err != nil {
return err
}
return nil
})
+5
View File
@@ -9,6 +9,7 @@ import (
"github.com/cortezaproject/corteza-server/pkg/auth"
"github.com/cortezaproject/corteza-server/pkg/healthcheck"
"github.com/cortezaproject/corteza-server/pkg/id"
"github.com/cortezaproject/corteza-server/pkg/label"
"github.com/cortezaproject/corteza-server/pkg/objstore"
"github.com/cortezaproject/corteza-server/pkg/objstore/minio"
"github.com/cortezaproject/corteza-server/pkg/objstore/plain"
@@ -146,3 +147,7 @@ func Watchers(ctx context.Context) {
// each minute, 100 per page
go syncData.Watch(ctx, time.Second*60, 100)
}
func AddFederationLabel(entity label.LabeledResource, value string) {
entity.SetLabel("federation", value)
}