Containerised Southbound Interfaces and the corresponding device config representation within the controller
Supporting Containerised Southbound Interfaces (cSBI) presents us with a challenge regarding the ygot.GoStruct within our device struct.
Description
For a newly created device within the controller the ygot.GoStruct is based on the schema of the Southbound Interface (as one can see here and here). The schema itself is a default OpenConfig Schema which we provide and could also be described as the configuration of an OND. However, a cSBI can generate (depending on the used YANG files) a much more extensive scheme for the particular orchestrated networking device. And this scheme (with its root) could not be fully represented as ygot.GoStruct within the controller because we only support a default Openconfig scheme.
So, how is it possible to implement the whole ( scheme based on generated code, which is created during the runtime of the controller? In general, we should have three possible options to address this problem, which I've tried to illustrate with the image below.
Possible Solution
As discussed with @m.stiemerling offline, we will (for now) stick with the first variant and will include standard go plugins which then can be used as southbound interfaces, providing the complete generated schema within the controller, which then can be used by the controller.
Miscellaneous
Possible go plugin alternatives, we should keep in mind: