Versions Compared

Key

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

...

  • Safety Critical "Change Freeze" mode where the Agent will continue to run any active agreements / workloads but will not contact the Mgmt Hub for changes to agreements  download/start new services/cancel existing services
  • Goal: prevent agreements / workloads from changing while the edge node is in a "safety critical state".

...

<Describe how the problem is fixed. Include all affected components. Include diagrams for clarity. This should be the longest section in the document. Use the sections below to call out specifics related to each aspect of the overall system, and refer back to this section for context. Provide links to any relevant external information.>

Option A) freeze the agent change state via API / cli

set the state actively from outside the agent. the agreements would be negotiated as usual, but the download of the service would not be started executed unless the state is not freezed. 

Command syntax would be:

Code Block
hzn node freeze --help
usage: hzn node freeze <command> [<args> ...]

Commands:
  freeze
      enable <--duration=nn>
      disable


  • Possibly send heartbeats but not accept node property updates or changes
  • Possibly allow geofencing information updates?  Where the edge node is located might be important to know.  Aha "The car is on the driveway, geofenced at home" is an important clue that might allow the agent to trigger changes to workloads.   If the car is at the supermarket, not a good idea.
  • Governance should restart the agreement, if it dies unexpectedly - tricky?

...

Node Management- behavior?

Option B) per service: include an "change-constraint" in the deployment policy

this could be compared to a normal node-property but would only be relevant for the actual (de)activation of the payload. In this case _change.allow would be a reserved constraint-parameter to avoid changes to the definitions on the first level.


Code Block
{
  "constraints": [
    "openhorizon.arch == arm64",
    "_change.allow": [
       "property.example": >= 1
    ]
  ]
}

...