From a8906fd0bd15226fb72163bc4ee11d87deb92434 Mon Sep 17 00:00:00 2001 From: Olof hagsand Date: Sun, 18 Aug 2019 16:22:46 +0200 Subject: [PATCH] 4.1.0 docs --- CHANGELOG.md | 40 ++++++++++++++++++++++------------------ README.md | 2 ++ test/long.sh | 10 ++++------ 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 054f6f7f7..028bc3fc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,10 @@ ### Summary -The 4.1.0 release is a RESTCONF feature upgrade release. Highlights are -RFC8040 plan PATCH, many query parameters, compliant return codes, and -more. +4.1.0 is focussed on RFC 8040 RESTCONF features. Highlights include: +- RFC8040 plain PATCH, +- Query parameters: content, depth, insert, position +- Standard return codes ### Major New features * Restconf RFC 8040 increased feature compliance @@ -35,37 +36,39 @@ more. * The main example explains how to implement a Yang extension in a backend plugin. ### API changes on existing features (you may need to change your code) +* C API changes: + * Added `depth` parameter to function `clicon_xml2cbuf`, default is -1. + * Added two parameters to function `clicon_rpc_get` + * `content`: to select state or config. Allowed values: CONTENT_CONFIG,CONTENT_NOCONFIG, CONTENT_ALL (default) + * `depth`: Get levels of XML in get function: -1 is unbounded, 0 is nothing, 1 is top-level node only. * Netconf edit-config "operation" attribute namespace check is enforced - * This is enforced: ` - * This was previously allowed: ` + * E.g.: `` --> `` * RESTCONF NACM access-denied error code changed from "401 Unauthorized" to "403 Forbidden" * See RFC 8040 (eg 4.4.1, 4.4.2, 4.5, 4.6, 4.7) * RESTCONF PUT/POST erroneously returned 200 OK. Instead restconf now returns: * `201 Created` for created resources * `204 No Content` for replaced resources. -* RESTCONF PUT/POST -d {} media is enforced +* RESTCONF PUT/POST `Content-Type` is enforced * Before accepted JSON as default, now Content-Type must be explicit, such as `Content-Type: application/yang-data+json` -* RESTCONF identities has been changed to use module names instead of prefixes. +* RESTCONF identities has changed to use module names instead of prefixes following RFC8040: * Eg, `curl -X POST -d '{"type":"ex:eth"}` --> `curl -X POST -d '{"type":"ietf-interfaces:eth"`} * JSON changes * Non-pretty-print output removed all extra spaces. - * Example: `{"nacm-example:x": 42}` --> {"nacm-example:x":42}` + * Example: `{"nacm-example:x": 42}` --> `{"nacm-example:x":42}` * Empty JSON values changed from `null` to: * Empty yang container encoded as `{}` * Empty leaf/leaf-list of type empty encoded as `[null]` * Other empty values remain as `null` -* C API changes: - * Added `depth` parameter to function `clicon_xml2cbuf`, default is -1. - * Added two parameters to function `clicon_rpc_get` - * `content`: to select state or config. Allowed values: CONTENT_CONFIG,CONTENT_NOCONFIG, CONTENT_ALL (default) - * `depth`: Get levels of XML in get function: -1 is unbounded, 0 is nothing, 1 is top-level node only. - ### Minor changes -* Added experimental binary search API function: `xml_binsearch` +* New [clixon-doc sphinx/read-the-docs](https://clixon-docs.readthedocs.io) started + * The goal is to move all clixon documentation there +* Added experimental binary search API function: `xml_binsearch` that can be used by plugin developers. + * This provides binary search of list/leaf-lists as described here: * Removed unnecessary configure dependencies * libnsl, libcrypt, if_vlan,... -* pseudo-plugin added, to enable callbacks also for main programs. Useful for extensions +* "pseudo-plugins" added, ie virtual plugins to enable callbacks also for main programs. Useful for extensions. + * See `clixon_pseudo_plugin` ### Corrected Bugs * If `ietf-netconf.yang` was imported from any yang module, client/backend communication stops working. @@ -76,7 +79,7 @@ more. * Should only be applicable on netconf MERGE and restconf PATCH * Corrected problem with namespace context cache, was not always cleared when adding new subtrees. * Corrected CLI bug with lists of multiple keys (netconf/restconf works). - * Worked in 3.10, but broke in 4.0 + * Worked in 3.10, but broke in 4.0.0. Fixed in 4.0.1 * Example: `yang list x { key "a b";...}` CLI error example: ``` @@ -86,7 +89,8 @@ more. ``` * Fixed RESTCONF api-path leaf-list selection was not made properly * Requesting eg `mod:x/y=42` returned the whole list: `{"y":[41,42,43]}` whereas it should only return one element: `{"y":42}` -* See [RESTCONF: HTTP return codes are not according to RFC 8040](https://github.com/clicon/clixon/issues/56) +* Fixed [RESTCONF: HTTP return codes are not according to RFC 8040](https://github.com/clicon/clixon/issues/56) + * See also API changes above * Yang Unique statements with multiple schema identifiers did not work on some platforms due to memory error. ## 4.0.1 (5 Aug 2019) diff --git a/README.md b/README.md index 026ad920b..5186881f4 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ Clixon is a YANG-based configuration manager, with interactive CLI, NETCONF and RESTCONF interfaces, an embedded database and transaction mechanism. +Work-in-progress move to [new documentation](https://clixon-docs.readthedocs.io). + * [Background](#background) * [Frequently asked questions (FAQ)](doc/FAQ.md) * [Hello world](example/hello/README.md) diff --git a/test/long.sh b/test/long.sh index ee8fbc9af..ca3d6b791 100755 --- a/test/long.sh +++ b/test/long.sh @@ -99,10 +99,8 @@ new "netconf commit large config" expecteof "/usr/bin/time -f %e $clixon_netconf -qf $cfg" 0 "]]>]]>" "^]]>]]>$" # Zero all event counters -sudo callgrind_control -i on -sudo callgrind_control -z - - +#sudo callgrind_control -i on +#sudo callgrind_control -z while [ 1 ] ; do new "restconf add $perfreq small config" @@ -110,14 +108,14 @@ while [ 1 ] ; do time -p for (( i=0; i<$perfreq; i++ )); do #echo "i $i" rnd=$(( ( RANDOM % $perfnr ) )) - curl -s -X PUT http://localhost/restconf/data/scaling:x/y=$rnd -d '{"scaling:y":{"a":"'$rnd'","b":"'$rnd'"}}' + curl -s -X PUT -H 'Content-Type: application/yang-data+json' http://localhost/restconf/data/scaling:x/y=$rnd -d '{"scaling:y":{"a":"'$rnd'","b":"'$rnd'"}}' done done new "restconf get $perfreq small config" time -p for (( i=0; i<$perfreq; i++ )); do rnd=$(( ( RANDOM % $perfnr ) )) - curl -sG http://localhost/restconf/data/scaling:x/y=$rnd,42 > /dev/null + curl -sG -H 'Accept: application/yang-data+json'http://localhost/restconf/data/scaling:x/y=$rnd,42 > /dev/null done done