Preamble

EdgeDevConfig can contain upto three kinds of downloadable objects, 

  1. BaseOs Object
  2. Application Object
  3. Certificate Object

The object configuration, consists of two parts, containing 

  1. Object information
  2. DataStore information


The object configuration contains object details such as, name, size, type, sha, signature etc., along with the data store id. The data store configuration contains the storage details such as, fqdn, server name, transfer protocol and access details. Based on the object type, the handling of these objects are currently handled by two agents namely, baseosmgr and zedmanager.  Basosmgr handles baseos and certificate objects. Zedmanager handles application objects. Both agents wait on the object and datastore configuration, for construction of full object configuration(containing the object details and from  where it can be downloaded). These objects are then published to downloader, for downloading.

Problem Statement

For the datastore configuration, and value changes are not getting handled. For example, if the fqdn value changes, the object is not getting downloaded again, from the new location.

We have the same functionality inside two agents. We should move datastore configuration handling function to the user of this information, downloader.

The datastore configuration, contains sensitive access information. Controller can push this as an encrypted config blob to the device. On device, it needs to be decrypted and  handled at one place (downloader)


Solution Proposal

The datastore configuration handling will be removed from baseosmgr and zedmanager, and moved to downloader.  These agents will only publish the image configuration to downloader. Downloader will subscribe to datastore configuration object from zedagent. Downloader will construct the downloadable object configuration using the image object configuration and datastore object configuration. And will process them further.  Everything else will remain the same.