From daeab85446c51d00bdc002004a900e595da52949 Mon Sep 17 00:00:00 2001 From: Olof hagsand Date: Thu, 30 Jul 2020 22:52:42 +0200 Subject: [PATCH] removed obsolete example yang, mod cli_dbxml to only append leaf in cli_set --- apps/cli/cli_common.c | 10 +- example/main/Makefile.in | 3 +- example/main/clixon-example@2019-11-05.yang | 176 -------------------- lib/src/clixon_plugin.c | 4 + 4 files changed, 10 insertions(+), 183 deletions(-) delete mode 100644 example/main/clixon-example@2019-11-05.yang diff --git a/apps/cli/cli_common.c b/apps/cli/cli_common.c index 334a9e42..1e1e8f00 100644 --- a/apps/cli/cli_common.c +++ b/apps/cli/cli_common.c @@ -289,13 +289,13 @@ cli_dbxml(clicon_handle h, goto done; if (xml_value_set(xa, xml_operation2str(op)) < 0) goto done; - /* should it not be list & container?? */ - if (yang_keyword_get(y) != Y_LIST && - yang_keyword_get(y) != Y_LEAF_LIST && - cvec_len(cvv) > 1){ + /* Add body last in case of leaf */ + if (cvec_len(cvv) > 1 && + (yang_keyword_get(y) == Y_LEAF)){ + /* Add the body last */ if (dbxml_body(xbot, cvv) < 0) goto done; - /* Loop over namespace context and add them for the value */ + /* Loop over namespace context and add them to this leaf node */ cv = NULL; while ((cv = cvec_each(nsctx, cv)) != NULL){ char *ns = cv_string_get(cv); diff --git a/example/main/Makefile.in b/example/main/Makefile.in index 2f8f9562..2e27c993 100644 --- a/example/main/Makefile.in +++ b/example/main/Makefile.in @@ -81,8 +81,7 @@ all: $(PLUGINS) CLISPECS = $(APPNAME)_cli.cli -YANGSPECS = clixon-example@2019-11-05.yang # obsolete -YANGSPECS += clixon-example@2020-03-11.yang +YANGSPECS = clixon-example@2020-03-11.yang # Backend plugin BE_SRC = $(APPNAME)_backend.c diff --git a/example/main/clixon-example@2019-11-05.yang b/example/main/clixon-example@2019-11-05.yang deleted file mode 100644 index b0c8e492..00000000 --- a/example/main/clixon-example@2019-11-05.yang +++ /dev/null @@ -1,176 +0,0 @@ -module clixon-example { - yang-version 1.1; - namespace "urn:example:clixon"; - prefix ex; - revision 2019-11-05 { - description "Augment interface. Released in Clixon 4.3.0"; - } - revision 2019-07-23 { - description "Extension e4. Released in Clixon 4.1.0"; - } - revision 2019-01-13 { - description "Released in Clixon 3.9"; - } - import ietf-interfaces { - prefix if; - } - import ietf-ip { - prefix ip; - } - import iana-if-type { - prefix ianaift; - } - /* Example interface type for tests, local callbacks, etc */ - identity eth { - base if:interface-type; - } - identity loopback { - base if:interface-type; - } - /* Translation function example - See also example_cli */ - list translate{ - key k; - leaf k{ - type string; - } - leaf value{ - type string; - } - } - /* State data (not config) for the example application*/ - container state { - config false; - description "state data for the example application (must be here for example get operation)"; - leaf-list op { - type string; - } - } - augment "/if:interfaces/if:interface" { - container my-status { - config false; - description "For testing augment+state"; - leaf int { - type int32; - } - leaf str { - type string; - } - } - } - /* yang extension implemented by the example backend code. */ - extension e4 { - description - "The first child of the ex:e4 (unknown) statement is inserted into - the module as a regular data statement. This means that 'uses bar;' - in the ex:e4 statement below is a valid data node"; - argument arg; - } - grouping bar { - leaf bar{ - type string; - } - } - ex:e4 arg1{ - uses bar; - } - - /* Example notification as used in RFC 5277 and RFC 8040 */ - notification event { - description "Example notification event."; - leaf event-class { - type string; - description "Event class identifier."; - } - container reportingEntity { - description "Event specific information."; - leaf card { - type string; - description "Line card identifier."; - } - } - leaf severity { - type string; - description "Event severity description."; - } - } - rpc client-rpc { - description "Example local client-side RPC that is processed by the - the netconf/restconf and not sent to the backend. - This is a clixon implementation detail: some rpc:s - are better processed by the client for API or perf reasons"; - input { - leaf x { - type string; - } - } - output { - leaf x { - type string; - } - } - } - rpc empty { - description "Smallest possible RPC with no input or output sections"; - } - rpc optional { - description "Small RPC with optional input and output"; - input { - leaf x { - type string; - } - } - output { - leaf x { - type string; - } - } - } - rpc example { - description "Some example input/output for testing RFC7950 7.14. - RPC simply echoes the input for debugging."; - input { - leaf x { - description - "If a leaf in the input tree has a 'mandatory' statement with - the value 'true', the leaf MUST be present in an RPC invocation."; - type string; - mandatory true; - } - leaf y { - description - "If a leaf in the input tree has a 'mandatory' statement with the - value 'true', the leaf MUST be present in an RPC invocation."; - type string; - default "42"; - } - leaf-list z { - description - "If a leaf-list in the input tree has one or more default - values, the server MUST use these values (XXX not supported)"; - type string; - } - leaf w { - description - "If any node has a 'when' statement that would evaluate to - 'false',then this node MUST NOT be present in the input tree. - (XXX not supported)"; - type string; - when "/translate/k=5/value='w'"; - } - } - output { - leaf x { - type string; - } - leaf y { - type string; - } - leaf z { - type string; - } - leaf w { - type string; - } - } - } -} diff --git a/lib/src/clixon_plugin.c b/lib/src/clixon_plugin.c index dabbb935..6c5e0ff8 100644 --- a/lib/src/clixon_plugin.c +++ b/lib/src/clixon_plugin.c @@ -156,6 +156,10 @@ clixon_plugin_each_revert(clicon_handle h, * @param[in] name Plugin name * @retval p Plugin if found * @retval NULL Not found + * @code + * clixon_plugin *cp; + * cp = clixon_plugin_find(h, "plugin-name"); + * @endcode */ clixon_plugin * clixon_plugin_find(clicon_handle h,