- Expanded meta data in Python bundles by adding flags
has_must
andhas_when
(#927) - Added utility function to compare two entities and build diff (#925)
- Adjusted C++ code to work with gcc compiler version 4.8.5 (default for CentOS-7.x)
- 'ietf-netconf-monitoring:get-schema' returns schema with escape sequences (#614)
- NETCONF provider should raise more appropriate exceptions (#774)
- YList test fails when list entity added before keys are initialized (#800)
- Inherited classes not initialized properly in Python3 when constructor uses super() (#921)
- Delete operation fails on container (#931)
- Absolute path for generated entity of second level list child is incorrect (#933)
- Go: When entity having children is built from model API the child entities parent is nil (#938)
- gNMI Provider does not preserve original strings (#940)
- gNMISession fails to decode GetRequest response when returned values is empty string (#943)
- No way to retrieve numeric value of enums in cpp generated code (#944)
- XmlSubtreeCodec fails decode payload with augmented component (#956)
- Debian package for C++ bundles getting installed to wrong location (#962)
Added documentation for XmlSubtreeCodec and JsonSubtreeCodec.
- Released cisco-nx-os bundle to support Cisco NX OS 9.3.1
- Released cisco-ios-xr bundle to support Cisco IOS XR OS 6.5.3
- Updated cisco-ios-xr bundle to support Cisco IOS XR 6.6.2
- Updated openconfig bundle to introduce support for additional models.
- cgo compile error (#781)
- YDK netconf read fails when tag has namespace prefix (#799)
- YDK return value of YANG action missing some attributes (#871)
- Duplicate code in generated cisco-ios-xe Go bundle (#891)
- Memory leaks in YDK C++ core (#899)
- Memory leaks in YDK C++ gNMI Service component (#902)
- RPC execution stuck when NETCONF server closes session unexpectedly (#914)
- YDK attempting to send Commit command when 'writable-running' in capabilities (#915)
- Max value of range is set to None when not specified in the Yang model (#916)
- YDK MetaInfo should have a field for mandatory leaf (#918)
The solution for GitHub issue (#891) changed model API. However all model bundles generated with YDK-Gen version 0.7.3 and later are still compatible with core YDK components.
Addressed multiple documentation issues:
- Installation documentation for YDK-Py needs an update (#906)
- README file for YDK-Py repo is not rendering correctly (#907)
- Expanded disabling of data validation to read operations with NetconfServiceProvider.
- Expanded disabling of data validation to gNMIServiceProvider.
- ydk-py and ydk-gen Travis tests fail on Mac (#834)
- When MacOS is updated from Homebrew any Python2 YDK application fails (#837)
- ImportError: dynamic module does not define module export function (PyInit_ydk_) (#840)
- Libyang error: Reached limit (65535) for storing typedefs (#874)
- AttributeError: 'Config' object has no attribute 'logger' (#876)
- Segmentation Fault in API when connection to Netconf fails (#879)
- gNMI provider requires 'port' argument (#880)
- 'delete' and 'replace' filters do not work properly with gNMI and CRUD service (#881)
- Go compiler failed to link gNMI service on Mac (#892)
- Released cisco-ios-xr bundle to support Cisco IOS XR 6.5.2
- Released cisco-ios-xe bundle to support Cisco IOS XE 16.9.3
- Released cisco-nx-os bundle to support Cisco NX OS 9.2.3
- Introduced support for non-top level objects/entities for CRUD, Netconf, and gNMI services.
- Introduced a feature, which allows to disable validation of entity data processed by NetconfServiceProvider.
- Added capability to generate meta-data in Python bundles by adding
--generate-meta
flag ingenerate.py
script. - Added
generate.py
script options '-i --install' and '-s --sudo' to generate and install packages in one step. - Use CMake build number for release numbers with suffix (#864)
- YFilter dropped when used with NetconfService and EntityCollection (#803)
- Test for non-top level Entity fails when bundle created with 'one-class-per-module' flag (#839)
- generate.py always creates model bundles with requirements for current YDK version (#844)
- NETCONF Session constructor doesn't allow port to be None (#846)
- YDK fails process RPC payload, which contain 'data' tag (#851)
- gNMI script results in a segmentation fault if repository is missing a required model (#852)
- CodecService fails correctly encode multiple entries in keyless list (#854)
- Segmentation fault when decoding gNMI config payload (#856)
- Decoding gNMI payload fails with ValueError exception (#858)
Addressed multiple documentation issues: #848, #850, #861, #862
- Introduced YDK support for gNMI protocol (protobuf version 0.4.0) including CRUD service with gNMI Service Provider.
- Added Netconf support for certificate-based authentication for multiple servers
- Updated cisco-ios-xr bundle to include previously missing action models in Cisco IOS XR 6.5.1 release
- Released cisco-nx-os bundle to support Cisco NX OS 9.2.2 release
- Added capability to generate YDK service packages from
generate.py
script.
CRUD/ NETCONF / Codec API improvements
Introduced Codec feature to decode multiple JSON payload. (#812)
Improved support for YList (#811)
CRUD/ NETCONF / Codec API improvements
Improve handling of python native types in model API. (#733)
Validate leaf values based on python type of model API. (#739)
Improve checking of invalid attributes for model API objects. (#815)
Updated cisco-ios-xr bundle to support Cisco IOS XR 6.5.1 release.
Updated cisco-ios-xe bundle to support Cisco IOS XE 16.9.1 release.
Released cisco-nx-os bundle to support Cisco NX OS 9.2.1 release.
Updated openconfig to to make it compatible with ydk core version 0.7.3.
Also updated ietf bundle to make it compatible with ydk core version 0.7.3.
Bundle excludes the following files due to duplicate namespaces:
Cisco-IOS-XR-sysadmin-clear-ncs5500.yang
Cisco-IOS-XR-sysadmin-clear-ncs5502.yang
Cisco-IOS-XR-sysadmin-clear-ncs55A1.yang
Cisco-IOS-XR-sysadmin-controllers-ncs5500.yang
Cisco-IOS-XR-sysadmin-controllers-ncs5501.yang
Cisco-IOS-XR-sysadmin-controllers-ncs5502.yang
Cisco-IOS-XR-sysadmin-controllers-ncs55A1.yang
Cisco-IOS-XR-sysadmin-fabric-mgr-fsdb-aggregator-ncs5500.yang
Cisco-IOS-XR-sysadmin-fabric-mgr-fsdb-aggregator-ncs5502.yang
Cisco-IOS-XR-sysadmin-fabric-mgr-fsdb-server-ncs5500.yang
Cisco-IOS-XR-sysadmin-fabric-mgr-fsdb-server-ncs5502.yang
Cisco-IOS-XR-sysadmin-fabric-ncs5500.yang
Cisco-IOS-XR-sysadmin-fabric-ncs5501.yang
Cisco-IOS-XR-sysadmin-fabric-ncs5502.yang
- Released
cisco-nx-os
bundle to support Cisco NX OS 7.0-3-I7-4 release - Updated
cisco-ios-xr
bundle to support Cisco IOS XR 6.4.1 release - Updated
openconfig
to introduce support for additional AFT models. - Updated
cisco-ios-xe
bundle to continue to support Cisco IOS XE 16.8.1 release and make it compatible withydk core
version 0.7.2 - Also updated
ietf
bundle to make it compatible withydk core
version 0.7.2
- Introduced support for key-based access to list items in Python, C++ and Go model API (#231)
- Introduced support for multiple entities in Go (#768)
- Improved support for YANG
presence
nodes (#629, #738, #763) - Fixed issue with invoking sequential CRUD operations on different model APIs (#727)
- Improved NETCONF service commit API (#796)
- Enhanced support for leaf value patterns (#786)
- Improved support for YANG
feature
s included in NETCONF hello message (#777)
- Fixed issue with mixed case objects in Go language model API (#686)
NOTE: #604 and #748 introduced a backward incompatibility for python bundles. The below bundles generated with 0.7.1
or newer ydk-gen will only work with ydk core
version 0.7.1
or newer
- Updated
cisco-ios-xr
to support Cisco IOS XR 6.3.2 release - Updated
cisco-ios-xe
to support Cisco IOS XE 16.8.1 release - Updated
openconfig
bundle to introduce support for AFT, ISIS, LLDP, Network Instance and Segment Routing models. - Updated
ietf
bundles to introduce support for NETCONF access control model (ACM)
- Introduced support for multiple entities in Python and C++ (#713, #719, #726, #736)
- Added support for yang models with more than 256 typedefs (#678, #607)
- Fixed segfault with
cisco-ios-xe
model (#627) - Changed default arguments to be more pythonic (#682)
- Handled XML escape characters included in yang models (#683)
- Improved handling XML declaration in XML payloads (#662)
- Fixed support for yang models with lists as top-level nodes (#728)
- Added support for yang 1.1
action
statement in path API (#717)
- Added support for connecting to devices with no
get-schema
support (#554)
- Updated leafs in python model APIs to use native python types (#604)
- Improved the size and performance of Golang model APIs (#604)
- Fixed issue with handling of some typedefs in Golang (#706, 747)
- Improved ydk-gen error reporting and fixed
--one-class-per-module
option of generating python packages (#604) - Added coverage for Golang and C++ (#740, #705)
- Introduced automated docker builds to produce docker images with
ydk-gen
,ydk-py
andydk-go
pre-installed (#724) - Removed
epel-release
as one of the requirements for libydk RPM (#627) - Added testing for
libydk
packages (#604)
- Added support for all existing
ydk core
services, providers, types and errors in Go - Added support for all existing
ydk bundles
includingietf
,openconfig
,cisco-ios-xr
andcisco-ios-xe
in Go - #673, #663, #660, #658, #606, #605
- Fixed handling of reading operational data nodes (#664)
- Improved formatting of payloads in logging output (#670)
- Fixed naming of errors across C++ and Go to be consistent. Changed YCPPError, YError etc to YError (#669, #668)
- Fixed warning in CMake build system to look for CMake version of
3.0.0
or greater (#655)
- Improved documentation for models which augment other models (#426)
- Added support for keybase authentication (#619)
- Fixed various issues with usage of XE model API (#640, #535, #612, #632)
- Improved handling of leaf-lists (#621, #631, #646)
- Improved documentation for unions (#642) and string patterns (#651)
- Improved developer guide (#622, #625)
- CRUD / Executor / Codec service improvements
- Improved
CRUDService
support foropenconfig-routing-policy
yang module (#580, #540) - Improved CRUD support for parent-child yang nodes with the same name (#566, #598, #596)
- Improved CRUD support for
openconfig-if-ethernet
andiana-if-types
modules (#513) - Fixed CRUD issue with encoding containers and list instances in user-selected order (#563, #564)
- Fixed issue with
ExecutorService
(#590, #558) - Improved
CodecService
performance (#537)
- Improved
- Documentation improvements
- Updated
cisco-ios-xr
bundle to support Cisco IOS XR 6.3.1 release - Also updated
openconfig
bundle version 0.1.4 with additional support for optical transport (channel monitor, optical amplifier, terminal device and transport line) - Improved Service Providers
- Improved Netconf Service Provider to support timeout and retrieving device capabilities (#217, #492, #557)
- Decoupled path API-specific details from Service Provider and created Netconf & Restconf Session to be used instead of Provider in path API (#494, #511)
- Fixed segmentation fault with the
openconfig-platform
model (#527)
- Improved Netconf Service's
kill_session
method (#528)
- Fixed documentation issues for installation (#529, #531, #542, #541)
- Improved API documentation (#424, #94)
- Improved model API generation
- Introduced new YDK python
core
package using pybind11 to wrap around YDK C++core
(#507)- Introduced
ydk.path
module consisting of APIs to read, manipulate and write YANG data using XPath-like expressions - Updated YDK services and providers to internally use the path API
- Introduced
RestconfServiceProvider
andOpenDaylightServiceProvider
- Updated
NetconfServiceProvider
to be able to download the device yang models on connecting to a device - Introduced ability to encode/decode subtree XML in
CodecService
and changedCRUDService
to use XML subtree filtering to create filters for theread
operation - Added equality/inequality operators to compare YDK model API objects
- Introduced
The backward incompatible changes introduced with 0.6.0
python release include:
- Installation: When installing
YDK-Py
, there is a new system requirement which needs to be installed. This is thelibydk
library, which is available on the DevHub website for various OS platforms. Please refer to the system requirements for details. - Windows support: From release
0.6.0
onwards, YDK is no longer supported on the Windows platform. We plan to add back support for this platform in the future. - API changes: Please refer to the developer guide and API guide for details about APIs and how to use them.
NetconfServiceProvider
no longer has theclose()
method. There is no need to explicitly close the provider as it will be automatically cleaned up when the object goes out of scope.YFilter
has replaced the functionality of theREAD
andDELETE
objects- When using logging, the suggested level for users of YDK is
INFO
asDEBUG
provides highly detailed logging suitable for developers working on YDK - The type names of
enumerations
andidentities
no longer haveEnum
orIdentity
in their names. For example, the identityInterfaceTypeIdentity
inydk.models.ietf.ietf_interfaces
is now renamed to justInterfaceType
- The
is_config()
method is no longer available for the YDK model APIs. This may be added back in a future release.
- Renamed some of the methods in path API to be verbs like
DataNode::get_schema()
instead of nouns likeDataNode::schema()
(#498) - Add option for TCP transport in
NetconfServiceProvider
(#476, #444) - Support
get
/get-config
with no filter in path API (#503) - Introduce optimized on-demand yang model downloading for
NetconfServiceProvider
(#499) - Add support for choosing either a per-device or a common cache for storing downloaded yang models (#502)
- Introduced encoding/decoding subtree XML in
CodecService
and changedCRUDService
to use XML subtree filtering to create filters for theread
operation (#489) - Added support for non-standard RPCs as well in path API (#498)
- Add ability to generate Linux and Mac OSX packages in cmake using cpack (#466)
- Updated
cisco-ios-xr
to support Cisco IOS XR 6.2.2 release - Updated
cisco-ios-xe
to support Cisco IOS XE 16.6.1 release - Also updated
openconfig
andietf
bundles
- Fixed bundle
setup.py
to match ydkcore
dependency in bundle profile (#433) - Updated
lxml
dependency for ydkcore
package (#427) - Improved reading of data using
ExecutorService
(#332) andCRUDService
(#457) - Fixed encoding key elements of yang
list
s (#363) and operational data (#452, #455)
- Added equality operator for model API objects (#432)
- Improved handling of presence
container
s (#437)
- Added
cisco-ios-xe
bundle to support Cisco IOS XE 16.5.1 release - Improved exception handling in the ydk-gen
generate.py
script (#440)
- Improved getting-started guides for YDK-Py and YDK-Cpp (#418, #419)
- Made table of contents for bundle documentation be sorted alphabetically (#446, #419)
- Improved documentation of
rpc
classes (#435)
- Improved logging to indicate message directionality (#388)
- Provide more details for validation error message for leaf-lists (#398)
- Remove indirect python requirements from
setup.py
(#392) - If validation error occurs when decoding payload, include payload as an attribute of the
YPYModelError
raised (#381) - Update Python package generation and post YDK-Py on the Python package index - PyPi (#404, #406)
- Changed dependent libraries (#382)
- Create default yang models repository for each bundle. Install yang models as part of bundle shared library (#292)
- Make passing in
path::Repository
object optional forCodecServiceProvider
- Make passing in
- Fix issue with handling augmented leafs in
CrudService
(#351) - Use smart pointers (like
shared_ptr
) in place of raw pointers (#382), (#393) - Support linking to multiple bundles (#349)
- Added sample code for using YDK with JSON configs in combination with CRUD service (#387)
- Improved generation of C++ code to consume less compile-time memory for large yang models (#386), (#336)
- Add check for valid profile file to ydkgen (#378)
- Added code coverage for C++ code (#373)
- Updated
cisco-ios-xr
bundle to support Cisco IOS XR 6.2.1 release
- Separated top data classes from type classes in table of contents (#372)
- Fixed ydk version not being correctly printed for C++ documentation (#374)
- Indicate bundle version in C++ and python bundle documentation (#383)
- Fixed issues with netconf service (#323, #305)
- Disambiguated model API classes called 'None' (#318)
- Removed 'Bits' from classes representing bits leafs (#318, #320)
- Introduced support for two new service providers (#365)
- RestconfServiceProvider
- OpenDaylightServiceProvider
- Introduced support for netconf service (#341, #352)
- Released ydk-cpp for OSX platform (on Homebrew) and on Ubuntu platform (on Lauchpad) (#362, #322)
- Added support for generated CRUD model tests based on bundles (#354)
- Improved negative test cases and added support for netconf operations on leafs and leaf-lists (#324)
- Added documentation with examples for C++ OpenDaylightServiceProvider and RestconfServiceProvider (#365)
- Included model revision in documentation (#272)
- Improved documentation for string leafs (#346), decimal64 leafs (#300, #294)
- Added more detailed documentation for ydk-gen (#335, #364)
- Improved look and feel of documentation (#361, #356)
- Cleaned up unused bundle profiles and added READMEs (#208)
-
CRUD service / Codec service / Netconf service improvements
-
Bundle improvements
- Made generate.py executable (#227)
- Removed auto capitalization of enum literals (#230)
- Updated
cisco-ios-xr
bundle to support Cisco IOS XR 6.1.2 release (#316)
-
Logging improvements
-
Documentation improvements
- Introduced support for C++ YDK bindings (issue#118, related commits and pull requests)
- Added support for CRUD, Validation and Codec services, along with Netconf and Codec providers, YDK types and errors
- Added support for Path API
- Used libyang and libnetconf libraries as part of the service and provider abstraction layer
- Integrated with CMake build system
- Wrote unit tests using
boost::unit_test
- Added support for logging using
boost::log
- Added documentation using
sphinx
- Integrated C++ testing into CI using travis-ci (#286)
-
Support for Python3
- Introduced support for Python 3 (#60)
- Both Python 2 and Python 3 are now supported for
ydk-gen
andydk-py
-
Bundle improvements
- Improved usage of import statements in YDK model API to reduce chances of circular import dependency (#216)
- Updated
cisco-ios-xr
bundle to support Cisco IOS XR 6.1.1 release (#258) - Updated
openconfig
bundle (#258)
-
Documentation improvements
-
Created YDK core library and pluggable namespace packages that share the same module prefix
ydk.models
-
Generated documentation for YDK core and bundles
-
CRUD service / Codec service / Netconf service improvements
- Improved support for presence containers, nested enum and identity classes (#169)
- Improved support for lists with multiple keys by ensuring that the order of keys is preserved (#179)
- Improved support for leaf-list of identity type (#186)
- Added check for user error which can occur when self-referencing YDK object as parent object (#184)
- Improved error-reporting for commit-time error (#190)
- Fixed CRUD read support for modules containing top-level list (#194)
-
Testing improvements
- Added Mac OS X installation and running codec service sanity tests to CI (#175)
-
Documentation improvements
- Indicated mandatory leafs in the documentation (#177)
- Specified path to referred leaf for leafrefs (#177)
- Fix documentation of presence containers (#192)
- Enhanced documentation of leafs of identityref type by indicating all the subclasses of identity base class referred to by the identityref (#161)
- Added documentation on how to use YDK delete operation and improved documentation for YDK read operation (#204)
- Error handling improvements
- Fixed local validation to correctly check for types and values (#116)
- Introduced error hierarchy to represent errors from various components, viz.: YPYModelErrors, YPYServiceError, YPYServiceProviderError (#133)
- When raising YPYModelErrors, include errors dictionary with key as path to data, and value as tuple of error code and error message
- Added more extensive negative test cases to ydk-gen to test handling of error (#134)
- CRUD service / Codec service / Netconf service provider improvements
- Added support for multiple objects to codec service (#122)
- Added logging for codec service (#97)
- Have logging hierarchy automatically follow package hierarchy (#100)
- Have netconf service return YDK python objects instead of XML strings (#120)
- Fixed decoding issue with leaf-list of enums (#150)
- Removed requirements.txt from ydk-py and added all requirements to setup.py
- Enforce PEP8 naming for Identity classes (#152)
- Added full ydk-py version to the documentation (#144)
- Added openconfig bgp-policy APIs to ydk-py (#102)
- Introduced ability to programmatically retrieve SDK version of ydk-py (#8)
- Removed unused dependencies from ydk-py's requirements.txt (#48)
- Introduced coveralls and improved travis CI integration for ydk-gen github (#84, #54, #15, #46)
- CRUD service / Netconf service provider improvements
- Added timeout parameter to NetconfServiceProvider (#1)
- Fixed issues with decoding leafs of union type and nodes defined in sub-modules (#5, #56)
- Fixed issue with encoding enums, identities defined in external modules (#30, #103)
- Improved support for deleting leafs, leaf-lists and lists (#55, #103)
- Documentation improvements
- Added 'About ydk-py' page with information about ydk-gen used to generate ydk-py (#6)
- Indicate in documentation YDK class attributes that are keys (#41)
- Made top containers show up at the top of the table of contents for every module document (#39)
- Introduced netconf service and codec service
- Netconf service provides APIs to execute netconf operations
- Codec service provides APIs to encode python objects and decode payloads
- Support for yang deviation
- Support for subscribing to model-driven telemetry
- Logging made more consistent
- CRUDService outputs type of operation
- When logging is enabled, all NETCONF messages are logged including commit
- Log messages at various stages (send RPC request, receive reply, commit etc) instead of logging all at once at the end
- Updated enums in YDK classes to use enum34
- Improved enum documentation
- Improved error reporting for ydk-py and ydk-gen
- First public release.