Preamble
Eve/Zedcloud orchestration handles three kinds of downloadable objects,
- BaseOs Object
- Application Object
- Certificate Object
The configuration these downloadable objects are currently divided into two parts.
- Image configuration
- DataStore Configuration
The image configuration contains image information such as, name, size, type, image sha, signature, and some other details, along with the data store id.
The DataStore configuration contains information such as, fqdn,server name and access details.
The handling and orchestration of the image and datastore configuration are currently done by two agents namely, baseosmgr and zedmanager. Basosmgr handles baseos and certificate objects. Zedmanager handles application objects.
Both of these device agents wait for the image and datastore objects to be available before constructing them as baseos/application or certificate objects. These objects are then published to downloader, for further processing.
Problem Statement
When a datastore configuration changes, in the current implementation, it is not handled properly.
We have the same functionality across two agents, which can be folded up to one place (downloader) in the code base.
The datastore configuration, contains sensitive access information. The zedcloud can push this as an encrypted config blob and finally 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. And these agents will only publish the image configuration to downloader. The downloader, will subscribe to datastore configuration object from zedagent. The downloader will construct the downloadable object configuration using the image object configuration and datastore object configuration. And will process further. Everything else will remain the same.