Structure sync get node info, list response.
This commit is contained in:
parent
abcf13b0a3
commit
798e2126f5
@ -291,14 +291,19 @@ endpoints:
|
||||
- title: Sync structure
|
||||
description: Sync structure
|
||||
entrypoint: syncStructure
|
||||
path: ""
|
||||
path: "/nodes/{nodeID}/modules/exposed"
|
||||
authentication: []
|
||||
apis:
|
||||
- name: readExposedAll
|
||||
method: GET
|
||||
title: List all exposed modules changes
|
||||
path: "/exposed/modules/"
|
||||
path: "/"
|
||||
parameters:
|
||||
path:
|
||||
- type: uint64
|
||||
name: nodeID
|
||||
required: true
|
||||
title: Node ID
|
||||
get:
|
||||
- type: string
|
||||
name: query
|
||||
|
||||
@ -58,6 +58,6 @@ func NewSyncStructure(h SyncStructureAPI) *SyncStructure {
|
||||
func (h SyncStructure) MountRoutes(r chi.Router, middlewares ...func(http.Handler) http.Handler) {
|
||||
r.Group(func(r chi.Router) {
|
||||
r.Use(middlewares...)
|
||||
r.Get("/exposed/modules/", h.ReadExposedAll)
|
||||
r.Get("/nodes/{nodeID}/modules/exposed/", h.ReadExposedAll)
|
||||
})
|
||||
}
|
||||
|
||||
@ -30,6 +30,11 @@ var (
|
||||
type (
|
||||
// Internal API interface
|
||||
SyncStructureReadExposedAll struct {
|
||||
// NodeID PATH parameter
|
||||
//
|
||||
// Node ID
|
||||
NodeID uint64 `json:",string"`
|
||||
|
||||
// Query GET parameter
|
||||
//
|
||||
// Search query
|
||||
@ -60,6 +65,7 @@ func NewSyncStructureReadExposedAll() *SyncStructureReadExposedAll {
|
||||
// Auditable returns all auditable/loggable parameters
|
||||
func (r SyncStructureReadExposedAll) Auditable() map[string]interface{} {
|
||||
return map[string]interface{}{
|
||||
"nodeID": r.NodeID,
|
||||
"query": r.Query,
|
||||
"limit": r.Limit,
|
||||
"pageCursor": r.PageCursor,
|
||||
@ -67,6 +73,11 @@ func (r SyncStructureReadExposedAll) Auditable() map[string]interface{} {
|
||||
}
|
||||
}
|
||||
|
||||
// Auditable returns all auditable/loggable parameters
|
||||
func (r SyncStructureReadExposedAll) GetNodeID() uint64 {
|
||||
return r.NodeID
|
||||
}
|
||||
|
||||
// Auditable returns all auditable/loggable parameters
|
||||
func (r SyncStructureReadExposedAll) GetQuery() string {
|
||||
return r.Query
|
||||
@ -130,5 +141,17 @@ func (r *SyncStructureReadExposedAll) Fill(req *http.Request) (err error) {
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
var val string
|
||||
// path params
|
||||
|
||||
val = chi.URLParam(req, "nodeID")
|
||||
r.NodeID, err = payload.ParseUint64(val), nil
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
@ -12,9 +12,9 @@ import (
|
||||
type (
|
||||
SyncStructure struct{}
|
||||
|
||||
TempStruct struct {
|
||||
Filter types.ExposedModuleFilter `json:"filter"`
|
||||
Set types.ExposedModuleSet `json:"set"`
|
||||
listResponse struct {
|
||||
Filter *types.ExposedModuleFilter `json:"filter"`
|
||||
Set *types.ExposedModuleSet `json:"set"`
|
||||
}
|
||||
)
|
||||
|
||||
@ -23,15 +23,19 @@ func (SyncStructure) New() *SyncStructure {
|
||||
}
|
||||
|
||||
func (ctrl SyncStructure) ReadExposedAll(ctx context.Context, r *request.SyncStructureReadExposedAll) (interface{}, error) {
|
||||
// TODO - fixed values for now
|
||||
|
||||
var (
|
||||
err error
|
||||
f = types.ExposedModuleFilter{
|
||||
NodeID: 276342359342989444,
|
||||
}
|
||||
err error
|
||||
node *types.Node
|
||||
)
|
||||
|
||||
if node, err = service.DefaultNode.FindBySharedNodeID(ctx, r.NodeID); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
f := types.ExposedModuleFilter{
|
||||
NodeID: node.ID,
|
||||
}
|
||||
|
||||
if f.Paging, err = filter.NewPaging(r.Limit, r.PageCursor); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -42,8 +46,8 @@ func (ctrl SyncStructure) ReadExposedAll(ctx context.Context, r *request.SyncStr
|
||||
|
||||
list, f, err := (service.ExposedModule()).Find(context.Background(), f)
|
||||
|
||||
return TempStruct{
|
||||
Set: list,
|
||||
Filter: f,
|
||||
}, err
|
||||
return listResponse{
|
||||
Set: &list,
|
||||
Filter: &f,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@ -12,7 +12,6 @@ import (
|
||||
|
||||
type (
|
||||
exposedModule struct {
|
||||
ctx context.Context
|
||||
module composeService.ModuleService
|
||||
namespace composeService.NamespaceService
|
||||
store store.Storer
|
||||
@ -33,7 +32,6 @@ type (
|
||||
|
||||
func ExposedModule() ExposedModuleService {
|
||||
return &exposedModule{
|
||||
ctx: context.Background(),
|
||||
module: composeService.DefaultModule,
|
||||
namespace: composeService.DefaultNamespace,
|
||||
store: DefaultStore,
|
||||
@ -211,7 +209,7 @@ func (svc exposedModule) Create(ctx context.Context, new *types.ExposedModule) (
|
||||
}
|
||||
|
||||
if _, err := svc.module.FindByID(new.ComposeNamespaceID, new.ComposeModuleID); err != nil {
|
||||
return ExposedModuleErrComposeNamespaceNotFound()
|
||||
return ExposedModuleErrComposeModuleNotFound()
|
||||
}
|
||||
|
||||
// Check for node - compose.Module combo
|
||||
|
||||
@ -4,6 +4,11 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/cortezaproject/corteza-server/federation/types"
|
||||
"github.com/cortezaproject/corteza-server/pkg/actionlog"
|
||||
"github.com/cortezaproject/corteza-server/pkg/auth"
|
||||
@ -11,10 +16,6 @@ import (
|
||||
"github.com/cortezaproject/corteza-server/store"
|
||||
"github.com/cortezaproject/corteza-server/system/service"
|
||||
sysTypes "github.com/cortezaproject/corteza-server/system/types"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -355,6 +356,10 @@ func (svc node) updater(ctx context.Context, nodeID uint64, action func(...*node
|
||||
return n, svc.recordAction(ctx, aProps, action, err)
|
||||
}
|
||||
|
||||
func (svc node) FindBySharedNodeID(ctx context.Context, sharedNodeID uint64) (*types.Node, error) {
|
||||
return svc.store.LookupFederationNodeBySharedNodeID(ctx, sharedNodeID)
|
||||
}
|
||||
|
||||
// Looks for existing user or crates a new one
|
||||
func (svc node) fetchFederatedUser(ctx context.Context, n *types.Node) (*sysTypes.User, error) {
|
||||
// Generate handle for user that se this node
|
||||
|
||||
@ -40,7 +40,9 @@ var (
|
||||
|
||||
DefaultActionlog actionlog.Recorder
|
||||
|
||||
DefaultNode *node
|
||||
DefaultNode *node
|
||||
DefaultExposedModule ExposedModuleService
|
||||
DefaultSharedModule SharedModuleService
|
||||
|
||||
// wrapper around time.Now() that will aid service testing
|
||||
now = func() *time.Time {
|
||||
@ -117,6 +119,8 @@ func Initialize(ctx context.Context, log *zap.Logger, s store.Storer, c Config)
|
||||
hcd.Add(objstore.Healthcheck(DefaultObjectStore), "Store/Federation")
|
||||
|
||||
DefaultNode = Node(DefaultStore, service.DefaultUser, DefaultActionlog, auth.DefaultJwtHandler)
|
||||
DefaultExposedModule = ExposedModule()
|
||||
DefaultSharedModule = SharedModule()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@ -20,9 +20,9 @@ type (
|
||||
}
|
||||
|
||||
ExposedModuleFilter struct {
|
||||
NodeID uint64 `json:"node"`
|
||||
ComposeModuleID uint64 `json:"composeModuleID"`
|
||||
ComposeNamespaceID uint64 `json:"composeNamespaceID"`
|
||||
NodeID uint64 `json:"nodeID,string"`
|
||||
ComposeModuleID uint64 `json:"composeModuleID,string"`
|
||||
ComposeNamespaceID uint64 `json:"composeNamespaceID,string"`
|
||||
Query string `json:"query"`
|
||||
|
||||
Check func(*ExposedModule) (bool, error) `json:"-"`
|
||||
|
||||
@ -18,6 +18,7 @@ type (
|
||||
SearchFederationNodes(ctx context.Context, f types.NodeFilter) (types.NodeSet, types.NodeFilter, error)
|
||||
LookupFederationNodeByID(ctx context.Context, id uint64) (*types.Node, error)
|
||||
LookupFederationNodeByBaseURLSharedNodeID(ctx context.Context, base_url string, shared_node_id uint64) (*types.Node, error)
|
||||
LookupFederationNodeBySharedNodeID(ctx context.Context, shared_node_id uint64) (*types.Node, error)
|
||||
|
||||
CreateFederationNode(ctx context.Context, rr ...*types.Node) error
|
||||
|
||||
@ -52,6 +53,11 @@ func LookupFederationNodeByBaseURLSharedNodeID(ctx context.Context, s Federation
|
||||
return s.LookupFederationNodeByBaseURLSharedNodeID(ctx, base_url, shared_node_id)
|
||||
}
|
||||
|
||||
// LookupFederationNodeBySharedNodeID searches for node by shared-node-id
|
||||
func LookupFederationNodeBySharedNodeID(ctx context.Context, s FederationNodes, shared_node_id uint64) (*types.Node, error) {
|
||||
return s.LookupFederationNodeBySharedNodeID(ctx, shared_node_id)
|
||||
}
|
||||
|
||||
// CreateFederationNode creates one or more FederationNodes in store
|
||||
func CreateFederationNode(ctx context.Context, s FederationNodes, rr ...*types.Node) error {
|
||||
return s.CreateFederationNode(ctx, rr...)
|
||||
|
||||
@ -31,6 +31,10 @@ lookups:
|
||||
description: |-
|
||||
searches for node by shared-node-id and base-url
|
||||
|
||||
- fields: [SharedNodeID]
|
||||
description: |-
|
||||
searches for node by shared-node-id
|
||||
|
||||
search:
|
||||
enablePaging: false
|
||||
enableSorting: false
|
||||
|
||||
@ -111,6 +111,13 @@ func (s Store) LookupFederationNodeByBaseURLSharedNodeID(ctx context.Context, ba
|
||||
})
|
||||
}
|
||||
|
||||
// LookupFederationNodeBySharedNodeID searches for node by shared-node-id
|
||||
func (s Store) LookupFederationNodeBySharedNodeID(ctx context.Context, shared_node_id uint64) (*types.Node, error) {
|
||||
return s.execLookupFederationNode(ctx, squirrel.Eq{
|
||||
s.preprocessColumn("fdn.shared_node_id", ""): store.PreprocessValue(shared_node_id, ""),
|
||||
})
|
||||
}
|
||||
|
||||
// CreateFederationNode creates one or more rows in federation_nodes table
|
||||
func (s Store) CreateFederationNode(ctx context.Context, rr ...*types.Node) (err error) {
|
||||
for _, res := range rr {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user