Skip to content

Latest commit

 

History

History
540 lines (432 loc) · 44.3 KB

CHANGES.md

File metadata and controls

540 lines (432 loc) · 44.3 KB

2019-10-15 version 0.8.4

New features and enhancements

  • Expanded meta data in Python bundles by adding flags has_must and has_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)

Resolved GitHub issues

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

Documentation improvements

Added documentation for XmlSubtreeCodec and JsonSubtreeCodec.

Bundle improvements

  • 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

2019-05-15 version 0.8.3

Bundle improvements

  • Updated cisco-ios-xr bundle to support Cisco IOS XR 6.6.2
  • Updated openconfig bundle to introduce support for additional models.

Resolved GitHub issues

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

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.

Documentation improvements

Addressed multiple documentation issues:

  • Installation documentation for YDK-Py needs an update (#906)
  • README file for YDK-Py repo is not rendering correctly (#907)

2019-03-15 version 0.8.2

New features and enhancements

  • Expanded disabling of data validation to read operations with NetconfServiceProvider.
  • Expanded disabling of data validation to gNMIServiceProvider.

Resolved GitHub issues

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

Model bundle additions

  • 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

2019-02-11 version 0.8.1

Python, C++, Go

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

ydk-gen

  • Added capability to generate meta-data in Python bundles by adding --generate-meta flag in generate.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)

Resolved GitHub issues

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

Documentation improvements

Addressed multiple documentation issues: #848, #850, #861, #862

2018-12-17 version 0.8.0

CRUD / Netconf / gNMI/ Codec / Path API

  • 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

ydk-gen

  • Added capability to generate YDK service packages from generate.py script.

2018-10-02 version 0.7.3

Python, C++ and Go

CRUD/ NETCONF / Codec API improvements

Introduced Codec feature to decode multiple JSON payload. (#812)
Improved support for YList (#811)

Python

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)

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.

Note about cisco-ios-xr 6.5.1 bundle

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

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 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)
  • 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 features included in NETCONF hello message (#777)

Documentation improvements

ydk-gen improvements

  • Fixed issue with mixed case objects in Go language model API (#686)

2018-04-09 version 0.7.1

Python, C++ and Go

Bundle improvements

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

Python & C++

  • 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

Python & C++

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

Documentation

ydk-gen

  • 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

Python

  • 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
Note on backward compatibility

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 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 developers 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.

C++

  • Renamed some of the methods in path API to be verbs like DataNode::get_schema() instead of nouns like DataNode::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 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)
  • Add ability to generate Linux and Mac OSX packages in cmake using cpack (#466)

ydk-gen

2017-06-06 version 0.5.5

Python

  • Fixed bundle setup.py 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)

C++

  • Added equality operator for model API objects (#432)
  • Improved handling of presence containers (#437)

ydk-gen

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

Documentation

  • 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

Python

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

C++

  • Changed dependent libraries (#382)
    • Use header-only spdlog library for logging
    • Use header-only catch library for testing
    • Completely remove boost dependency
  • 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 for CodecServiceProvider
  • 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)

ydk-gen

  • 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

Documentation

  • 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

Python

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

C++

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

Documentation

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

2016-11-30 version 0.5.2

Python

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

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

C++ (alpha)

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

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 setup.py
  • 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.