removed obsolete example yang, mod cli_dbxml to only append leaf in cli_set

This commit is contained in:
Olof hagsand 2020-07-30 22:52:42 +02:00
parent 6fa8bb71d8
commit daeab85446
4 changed files with 10 additions and 183 deletions

View file

@ -289,13 +289,13 @@ cli_dbxml(clicon_handle h,
goto done; goto done;
if (xml_value_set(xa, xml_operation2str(op)) < 0) if (xml_value_set(xa, xml_operation2str(op)) < 0)
goto done; goto done;
/* should it not be list & container?? */ /* Add body last in case of leaf */
if (yang_keyword_get(y) != Y_LIST && if (cvec_len(cvv) > 1 &&
yang_keyword_get(y) != Y_LEAF_LIST && (yang_keyword_get(y) == Y_LEAF)){
cvec_len(cvv) > 1){ /* Add the body last */
if (dbxml_body(xbot, cvv) < 0) if (dbxml_body(xbot, cvv) < 0)
goto done; 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; cv = NULL;
while ((cv = cvec_each(nsctx, cv)) != NULL){ while ((cv = cvec_each(nsctx, cv)) != NULL){
char *ns = cv_string_get(cv); char *ns = cv_string_get(cv);

View file

@ -81,8 +81,7 @@ all: $(PLUGINS)
CLISPECS = $(APPNAME)_cli.cli 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 # Backend plugin
BE_SRC = $(APPNAME)_backend.c BE_SRC = $(APPNAME)_backend.c

View file

@ -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;
}
}
}
}

View file

@ -156,6 +156,10 @@ clixon_plugin_each_revert(clicon_handle h,
* @param[in] name Plugin name * @param[in] name Plugin name
* @retval p Plugin if found * @retval p Plugin if found
* @retval NULL Not found * @retval NULL Not found
* @code
* clixon_plugin *cp;
* cp = clixon_plugin_find(h, "plugin-name");
* @endcode
*/ */
clixon_plugin * clixon_plugin *
clixon_plugin_find(clicon_handle h, clixon_plugin_find(clicon_handle h,