Invalid date
The plan for the last couple of weeks was to facilitate fetching plugin code from github repository, but due to some unexpected roadblocks, we had to delay fetching external plugins. There were a couple of changes in the existing implementation:
loader
to load
plugins at runtime. Ex:# Loading plugin from registry[grpc.services.userprovider]driver = "json"# Loading runtime plugin (contains the path)[grpc.services.userprovider]driver = "./json"
We solved this issues by pulling values out of the context data and storing it into a map[interface{}]interface{}
data structure before
sending out the RPCs. This map[interface{}]interface{}
was sent as an RPC argument and then was again added to context on the server side.
My mentor, Ishank came up with smart way of pulling context data out into map[interface{}]interface{}
by using reflection. Check it out!
Now that we are almost done with the basic plugin architecture and we have a working implementation of plugin package, which supports both compiling the plugins and the existing in-memory plugin, the next step is to facilitate plugins from external repository.
Yes! There were a couple of roadblocks for me. I struggled to come up with an efficient way to pass context data via RPC. But with the help of my mentors we were able to get over the hump and complete the implementation.