Added labels to shared, exposed module, compose record
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
})
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user