Hi, I am new to OpenDaylight, yang tools, and java programming. Thanks in advance.
I was going through the Ping tutorial ( https://wiki.opendaylight.org/view/Ping ) and the plugin design process ( https://wiki.opendaylight.org/images/3/39/Plugin 'underscore' design 'underscore' process.png. The underscores stand for actual underscores), and trying to understand at a high level.
The ping tutorial has a PingImpl.java code (which I think this is the plugin source code) that implements a function sendEcho that is defined in the Yang model. So when you change the Yang model to add a new RPC, then the plugin source code will need to be changed to define that new RPC. Is this right? Is one of the purposes of the MAVEN build tools to check that each RPC defined in the YANG models is implemented in the PLUGIN source code before creating the "Plugin" OSGI bundle"?
ODL provides Southbound plugins (Openflow, SNMP). So if I write a Yang Model for a layer 2 switch and plan on using the OpenFlow plugin, will my Yang Model be limited to what this plugin can do? Can I modify that existing plugins to add new functions if needed?
Finally, it seems like the Ping plugin implements the functions of the YANG model (send-echo). What is the controller's role? Is it just taking the JSON input (curl commands) and making sure the syntax is correct by comparing to the Yang model and then passing the input to the PLUGIN bundle (maybe translating the JSON command to JAVA before calling the PingImpl.java program)?