Project

General

Profile

Actions

Architecture #23727

closed

Group all node related access into one NodeFactRepository

Added by François ARMAND 6 months ago. Updated about 1 month ago.

Status:
Released
Priority:
N/A
Category:
Architecture - Code maintenance
Target version:
Effort required:
Name check:
To do
Fix check:
To do
Regression:
No

Description

We want to have all node access (ie: inventory, rudder settings, properties, etc) managed by only one repository.
This will allow to more easely advance on the path for #22672, but also to let us implements global security check on nodes (ACL) without fear that user-facing code does not consistently does cheks.

That will also define a defacto Internal API for node management, and so it must be done in a way that can be easely done with forward/backward compatibility in head.

Moreover, a central repository for both update and select will grantly simplify our cache management invalidation.

We will also take care in that refactoring to simplify to number of different node classes (by adding two more, à la XKCD protocol):
- a NodeFact will group all information, both inventory and rudder setting related, into only one normalized structure. It will be the sum of FullInventory and Node,
- a CoreNodeFact will group all cached information about a node. It will be like NodeInfo today, but with a simpler layout consistent with NodeFact.

Appart the massive internal code change, the observable external storage won't be changed: node will still be saved in LDAP.
Performance must be similar or better than before the change.
Code logic must be simpler.
User facing service and UI should not be modified, so we must be able to build a compatibility layer on top of that new infrastructure.


Subtasks 3 (0 open3 closed)

Bug #20752: There is no way to set the properties of a pending nodeResolvedActions
Rudder plugins - Architecture #23752: Implication of CoreNodeFactRepository to pluginsReleasedVincent MEMBRÉActions
Rudder plugins - Architecture #23753: Implication of CoreNodeFactRepository to plugins-privateReleasedVincent MEMBRÉActions

Related issues 5 (2 open3 closed)

Related to Rudder - Architecture #22672: Remove node information and inventories from LDAPPending technical reviewVincent MEMBRÉActions
Related to Rudder - Bug #20674: when saving processes in inventories, don't fetch them to replace themRejectedNicolas CHARLESActions
Related to Rudder - User story #23796: RBAC for nodes via tenants (view only)NewActions
Related to Rudder plugins - Architecture #24029: license plugin checks are not building since node facts changesReleasedFrançois ARMANDActions
Related to Rudder - Bug #24441: Cannot translate campaign on boot, leading to skipped eventsReleasedFrançois ARMANDActions
Actions

Also available in: Atom PDF