Versions Compared

Key

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

...

  • Carry the above severity, retry_condition, and referenced_objects from the controller to the UI
  • Make the controller event log include these with the severity field (bonus if the event log details has all if the info)
  • UI does lookup of the type, UUID in the referenced_objects to display a name

Step3:

Look at whether we want a retry_count and other aspects from e.g, AWS Device Shadow service documents - AWS IoT Core in the EVE API. That is more related to EVE informing controller about pending changes and operationsthan the error/info reporting

Proto Changes:

To incorporate this change, the info.proto’s errorinfo has been updated as follows:

message ErrorInfo {
  string description = 1;                   // error description
  google.protobuf.Timestamp timestamp = 2;  // Timestamp at which error had occurred
  Severity severity = 3;                    // Severity of the error
  repeated DeviceEntity entities = 4;       // list of objects referenced by the description 
  string retry_condition = 5;               // condition to retry
}
Where Severity is a enum:

enum Severity {
  SEVERITY_UNSPECIFIED = 0; // severity unspecified
  SEVERITY_NOTICE = 1;      // severity notice
  SEVERITY_WARNING = 2;     // severity warning
  SEVERITY_ERROR = 3;       // severity error
}

and DeviceEntity is object of entityType and entityId:

message DeviceEntity {
  Entity entity = 1;           // entity type
  string entity_id = 2;        // entity uuid
}

Where Entity can be any of the following,


enum Entity {
  // Invalid Device Entity
  ENTITY_UNSPECIFIED = 0;
  // Base OS entity
  ENTITY_BASE_OS = 1;
  // System Adapter Entity
  ENTITY_SYSTEM_ADAPTER = 2;
  // Vault Entity
  ENTITY_VAULT = 3;
  // Attestation Entity
  ENTITY_ATTESTATION = 4;
  // App Instance Entity
  ENTITY_APP_INSTANCE = 5;
  // Port Entity
  ENTITY_PORT = 6;
  // Network Entity
  ENTITY_NETWORK = 7;
  // Network Instance Entity
  ENTITY_NETWORK_INSTANCE = 8;
  // ContentTree Entity
  ENTITY_CONTENT_TREE = 9;
  // Blob Entity
  ENTITY_CONTENT_BLOB = 10;
  // VOLUME Entity
  ENTITY_VOLUME = 11;
}

Please note that entities like ENTITY_SYSTEM_ADAPTER, ENTITY_VAULT, ENTITY_ATTESTATION and ENTITY_PORT have their own entity ID even though, unlike the others, they do not have UUIDs.