removed obsolete example yang, mod cli_dbxml to only append leaf in cli_set
This commit is contained in:
parent
6fa8bb71d8
commit
daeab85446
4 changed files with 10 additions and 183 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue