Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

State reconciliation with dependency graphs #2447

Merged
merged 1 commit into from
Jan 28, 2022

Commits on Jan 28, 2022

  1. State reconciliation with dependency graphs

    This commit adds packages "depgraph" and "reconciler" under EVE/libs, implementing
    a dependency graph [1] and a state reconciliation algorithm, respectively.
    It will be used in EVE to generically solve the problem of reconciliation
    between the actual/current (configuration) state and the latest intended/desired
    state. Every time the desired state changes, a certain sequence of Create, Modify
    and Delete operations has to be scheduled and executed to update the current
    state accordingly. The order of operations often matters as it has to respect
    all dependencies that exist between configuration items.
    The plan is to first refactor NIM and use dependency graph and reconciler for
    configuration items that device networks are built with.
    Based on how NIM refactoring goes, this solution could be used for zedrouter next.
    
    For more detailed reasoning and motivation behind depgraph+reconciler, please refer
    to the proposal presented on the LF Edge wiki [2].
    
    [1]: https://en.wikipedia.org/wiki/Dependency_graph
    [2]: https://wiki.lfedge.org/display/EVE/Dependency+graph+for+configuration+items
    
    Signed-off-by: Milan Lenco <milan@zededa.com>
    milan-zededa committed Jan 28, 2022
    Configuration menu
    Copy the full SHA
    2d630ea View commit details
    Browse the repository at this point in the history