Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
354 lines (292 sloc) 31.7 KB

2018-12-17 version 0.8.0


  • 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

Bundle improvements

  • 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

2018-10-02 version 0.7.3

Resolved issues

Introduced Codec feature to decode multiple JSON payload. (#812)
Improved support for YList (#811)
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)

Bundle improvements

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.


The cisco-ios-xr 6.5.1 bundle excludes the following files due to duplicate namespaces:


2018-07-02 version 0.7.2


Bundle improvements
  • 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 bundle 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 with ydk core version 0.7.2
  • Also updated ietf bundle to make it compatible with ydk core version 0.7.2
CRUD / Netconf / Codec / Path API improvements
  • Introduced support for key-based access to list items in Python, C++ and Go model API (#231)
  • 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)
Netconf provider improvements
  • Improved support for YANG features included in NETCONF hello message (#777)
Documentation improvements

2018-04-09 version 0.7.1

Python, C++ & Go

Bundle improvements

NOTE: #604 introduced a backward incompatibility. The below bundles generated with 0.7.1 or newer ydk-gen will only work with ydk core version 0.7.1 or newer

CRUD / Netconf / Codec / Path API improvements
  • 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)
Netconf provider improvements
  • Added support for connecting to devices with no get-schema support (#554)
ydk-gen improvements
  • 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)
Documentation improvements
  • Improved enum documentation (#716)
  • Enhanced table of contents for documentation (#715)
Testing/error improvements
  • 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)
Installation improvements
  • Introduced automated docker builds to produce docker images with ydk-gen, ydk-py and ydk-go pre-installed (#724)
  • Removed epel-release as one of the requirements for libydk RPM (#627)
  • Added testing for libydk packages (#604)

2018-01-31 version 0.7.0

Python, C++ & Go

Introduced Go language YDK support
  • Added support for all existing ydk core services, providers, types and errors in Go
  • Added support for all existing ydk bundles including ietf, openconfig, cisco-ios-xr and cisco-ios-xe in Go
  • #673, #663, #660, #658, #606, #605
CRUD service improvements
  • Fixed handling of reading operational data nodes (#664)
  • Improved formatting of payloads in logging output (#670)
Error handling improvements
  • 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)
Documentation improvements
  • Improved documentation for models which augment other models (#426)

2017-12-15 version 0.6.3

Python & C++

Model API updates
  • Updated cisco-ios-xe bundle to support Cisco IOS XE 16.6.2 and 16.7.1 releases
Netconf provider improvements
  • Added support for keybase authentication (#619)
CRUD service improvements
Documentation improvements
  • Improved documentation for unions (#642) and string patterns (#651)
  • Improved developer guide (#622, #625)
Testing improvements
  • Fixed CI failures and added CI on CentOS & Ubuntu Xenial platforms (#637, #644)

2017-10-30 version 0.6.2


  • CRUD / Executor / Codec service improvements
  • Improved CRUDService support for openconfig-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 and iana-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)
  • Documentation improvements
  • Fixed YDK-Py installation documentation on macOS (#513)
  • Fixed libydk installation documentation (#584)

2017-09-25 version 0.6.1


  • Updated cisco-ios-xr bundle to support Cisco IOS XR 6.3.1 release
  • Updated cisco-ios-xe bundle to continue to support Cisco IOS XE 16.6.1 release and make it compatible with ydk core version 0.6.1
  • 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)
Note on cisco-ios-xe bundle
  • As specified above, the cisco-ios-xe bundle version was updated to 16.6.1.post1 without any of the models being changed. This is because the already released 16.6.1 bundle is not compatible with the ydk core version 0.6.1. So, when upgrading your core version to be 0.6.1, please also update the XE bundle to version 16.6.1.post1.



  • Improved model API generation
    • reduced size of generated python model API (#544)
    • fixed issues with class names not following the CapWords style and models containing enum leafrefs (#538, #550, #475)

2017-08-01 version 0.6.0


  • 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 and OpenDaylightServiceProvider
    • 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 changed CRUDService to use XML subtree filtering to create filters for the read operation
    • Added equality/inequality operators to compare YDK model API objects
    • 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 changed CRUDService to use XML subtree filtering to create filters for the read operation (#489)
    • Added support for non-standard RPCs as well in path API (#498)


Note on backward compatibility

The backward incompatible changes introduced with 0.6.0 release include:

  • Installation: When installing YDK-Py, there is a new system requirement which needs to be installed. This is the libydk 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 the close() 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 the READ and DELETE objects
    • When using logging, the suggested level for users of YDK is INFO as DEBUG provides highly detailed logging suitable for dvelopers working on YDK
    • The type names of enumerations and identities no longer have Enum or Identity in their names. For example, the identity InterfaceTypeIdentity in ydk.models.ietf.ietf_interfaces is now renamed to just InterfaceType.
    • The is_config() method is no longer available for the YDK model APIs. This may be added back in a future release.

2017-06-06 version 0.5.5

  • Fixed bundle to match ydk core dependency in bundle profile (#433)
  • Updated lxml dependency for ydk core package (#427)
  • Improved reading of data using ExecutorService (#332) and CRUDService (#457)
  • Fixed encoding key elements of yang lists (#363) and operational data (#452, #455)
  • Added cisco-ios-xe bundle to support Cisco IOS XE 16.5.1 release


  • 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)

2017-03-17 version 0.5.4

  • Improved logging to indicate message directionality (#388)
  • Provide more details for validation error message for leaf-lists (#398)
  • Remove indirect python requirements from (#392)
  • If validation error occurs when decoding payload, include payload as an attribute of the YPYModelError raised (#381)
  • 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)

2017-01-30 version 0.5.3:

  • Fixed issues with netconf service (#323, #305)
  • Disambiguated model API classes called 'None' (#318)
  • Removed 'Bits' from classes representing bits leafs (#318, #320)


  • Included model revision in documentation (#272)
  • Improved documentation for string leafs (#346), decimal64 leafs (#300, #294)
  • Improved look and feel of documentation (#361, #356)

2016-11-30 version 0.5.2:

  • CRUD service / Codec service / Netconf service improvements

    • Improved error handling for mismatched model API types (#241)
    • Fixed issues with certain operations in netconf service (#247, #248, #252, #235)
    • Fixed issue with CRUD service identityref keys (#257)
  • Bundle improvements

    • Made 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

    • Added YDK logos and reorganized to be more readable (#301, #296, #289)
    • Improved documentation of YANG attributes like data type (configuration or state), default value, units, status etc (#249, #290)
    • Improved netconf service documentation (#235)

2016-10-10 version 0.5.1:

  • Support for Python3

    • Introduced support for Python 3 (#60)
    • Both Python 2 and Python 3 are now supported for ydk-gen and ydk-py
  • Bundle improvements

  • Documentation improvements

    • Improved documentation for bundle installation (#244)
    • Added documentation for executor service (#263)

2016-08-03 version 0.5.0:

  • Introduced YDK bundles (#43, #148, #149)

  • 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)

2016-06-17 version 0.4.2:

  • 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
  • Enforce PEP8 naming for Identity classes (#152)
  • Added full ydk-py version to the documentation (#144)

2016-05-20 version 0.4.1:

  • 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)

2016-04-15 version 0.4.0:

  • 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

2016-03-11 version 0.3.0:

  • First public release.