I’m afraid I can’t help you with the Python equivalent, but since you quote the documentation for the C API:-), I’ll give an answer in terms of that, and maybe you can figure out the Python (or @mnovak might be able to translate…) . The output nodes are definitely part of the loaded schema, both for action and rpc - the reason for the NULL pointer is that the keypath (kp
) argument passed to the action()
callback is actually the path to the parent node, while the action/rpc itself is given in the name
argument - and by definition, an rpc does not have a parent.
In the schema, both the input and the output nodes are direct children of the action/rpc node - the input nodes have the CS_NODE_IS_PARAM flag set, while the output nodes have CS_NODE_IS_RESULT set. The confd_cmd
tool has a nice command dump_schema
, that can be used to get a condensed view of the schema - the command confd_cmd -c 'dump_schema /some_action'
will show you what is there for your rpc.
And in the C API, you could use e.g. struct confd_cs_node *csp = confd_cs_node_cd(NULL, "/some_action/result");
to get the node for your “result” leaf, with csp->ns
and csp->tag
being the hash values for the namespace and “tag”. (Caveat: if your input and output have same-named nodes, you will have to traverse the children to find the “param” vs “result” node.)