Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

EVE has to deal with the intended (also called desired) state on one side, which in this case is EdgeDevConfig received from the controller, and with the actual (also known as the current) state on the other side - the configuration currently applied and running on the device. The intended state is defined (using protobuf) to be more high-level, describing the intent but not the implementation. EVE first has to map it to low-level configuration primitives that implement the desired functionality. Next, it has to determine the difference between the currently running configuration and the new intended state. Finally, it performs all changes necessary in the form of Create/Modify/Delete operations to transition from the current state to the new intended state. Ordering of these operations matters and it has to respect any dependencies that exist between configuration items. For example, an application a virtual interface (VIF) of an application cannot be inserted into a bridge if that bridge has not yet been created. This is further complicated by the fact that the configuration space is split between microservices, sending updates between each other using pubsub.

...

  1. Store the currently running state
  2. Allow to prepare the new intended state
  3. Move the current state towards the new intended state - this means to:
    1. Determine "diff" between the current and the new state
    2. Determine Find ordering of Create/Modify/Delete operations that respects the dependencies
    3. Run operations
    4. Store and expose any errors returned by Create/Modify/Delete operations

...