dt-pygnmi


Namedt-pygnmi JSON
Version 0.8.13 PyPI version JSON
download
home_pagehttps://github.com/akarneliuk/pygnmi
SummaryPure Python gNMI client to manage network functions and collect telemetry.
upload_time2023-11-03 11:53:19
maintainer
docs_urlNone
authorAnton Karneliuk
requires_python
licensebsd-3-clause
keywords gnmi automation grpc network
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ==========================
pyGNMI: Python gNMI client
==========================

.. image:: https://github.com/akarneliuk/pygnmi/blob/master/logo.png
   :width: 300
   :height: 300
   :alt: pyGNMI logo
   :align: center

|project|_ |version|_ |coverage|_ |tag|_ |license|_

This repository contains pure Python implementation of the gNMI client to interact with the network functions.

=====
Usage
=====
Sample code example:

.. code-block:: python3

  # Modules
  from pygnmi.client import gNMIclient

  # Variables
  host = ('169.254.255.64', '57400')

  # Body
  if __name__ == '__main__':
      with gNMIclient(target=host, username='admin', password='admin', insecure=True) as gc:
           result = gc.get(path=['openconfig-interfaces:interfaces', 'openconfig-acl:acl'])
         
      print(result)

Also integration with Nornir is supported (`refer to examples <examples/nornir>`_).

Video tutorial
--------------
Watch the detailed explanation how to use pyGNMI `in our YouTube channel <https://www.youtube.com/watch?v=NooE_uHIgys&list=PLsTgo2tBPnTwmeP9zsd8B_tZR-kbguvla>`_.


All gNMI RPCs supported
-----------------------
- Capabilities
- Get
- Set
- Subscribe

Supported operation modes
-------------------------
- insecure gRPC channel (without encryption)
- secure gRPC channel (with encryption and authentication based on certificate)

Tested Network Operating Systems (NOS)
--------------------------------------
- Arista EOS
- Nokia SR OS
- Cisco IOS XR
- Juniper JUNOS
- Nokia SRLinux
- Cisco NX-OS

Network Operating Systems (NOS) in test
---------------------------------------
- Broadcom SONiC

=======
License
=======
By using the pyGNMI tool you agree with `the license <LICENSE.txt>`_.

============
Contributors
============

- `Anton Karneliuk <https://github.com/akarneliuk>`_
- `Stefan Lieberth <https://github.com/slieberth>`_
- `Prem Anand Haridoss <https://github.com/hprem>`_
- `Andrew Southard <https://github.com/andsouth44>`_
- `Jeroen van Bemme <https://github.com/jbemmel>`_
- `Frédéric Perrin <https://github.com/fperrin>`_
- `Malanovo <https://github.com/malanovo>`_
- `Sebastian Lohff <https://github.com/sebageek>`_

=======
Dev Log
=======

Release **0.8.13**:
- Number of minor bug fixes and improvements.

Release **0.8.12**:
- Fixed operation of `no_qos_marking` flag for `pygnmicli`.

Release **0.8.11**:
- Previous release introduced break for telemetry in `Juniper` due to inconsistency of communicated encoudings in `Capabilities()` and what is really supported in `Subscribe()`.

Release **0.8.10**:
- Automatic detection of supported encoding and using it where applicable (e.g., in `subscribe2` method).
- Possibility to remove `qos` from `Subscribe` for platforms, which doesn't support it (e.g., `Juniper`).

Release **0.8.9**:

- Default value for ``encoding`` everywhere is set to ``None``.
- Method ``capabilities()`` now is called as part of ``connect()`` to collect supported encoding as part of session establishing.
- If ``encoding`` is not specified by user, then it is auto-set based on the list collected via ``capabilites()`` with ``json`` having the first priority follwed by ``json_ietf``.

Release **0.8.8**:

- Added new argument ``-e / --encoding`` to ``pygnmicli`` to specify the encoding, which overrides the default one. Fix for `Issue 58 <https://github.com/akarneliuk/pygnmi/issues/58>`_.
- Fixed minor bug with encoding handling inside ``get()`` and ``subscribe2()`` methods.
- Simplified the code.

Release **0.8.7**:

- Fixed bug, when returned ``json_val`` or ``json_ietf_val`` is not processed correctly if the value is empty string.  Fix for `Issue 58 <https://github.com/akarneliuk/pygnmi/issues/58>`_.

Release **0.8.6**:

- Fixed minor issue with establishing ``insecure`` channel.
- Fixed bug with inabillity to specify ``prefix`` in Subscribe messages for ``subscribe2()`` method.
- **Important**: It is recommended to use method ``subscribe2()`` instead of ``subscribe()`` for building telemetry collectors with ``pygnmi`` as this method is further developed and throroughle tested. The method ``subscribe()`` will be deprecated in future releases.
- Functionality ``qos`` is now properly supported in ``subscribe2()`` method.

Release **0.8.5**:

- Fixed some issues with telemetry representation with ``pygnmicli``.

Release **0.8.4**:

- Change logic of setting default values for some parameters to improve user experience.
- Added ``token`` authentication to ``pygnmicli``.

Release **0.8.3**:

- Changed behaviour of ``subscribe2()`` to RPC to avoid adding the empty ``Extension`` field for no extensions presenting. Fix for `Issue 83 <https://github.com/akarneliuk/pygnmi/issues/83>`_.
- Uppdated documentation with examples in GitHub.
- Added support of History extensions to ``pygnmicli``.

Release **0.8.2**:

- Implemented `History Extension <https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-history.md#1-purpose>`_.
- Implemented handling of corner case, where ``--skip-verify`` was failing trying to parse certificate, `which doesn't have CN and SARs <https://github.com/akarneliuk/pygnmi/issues/71>`_.

Release **0.8.1**:

- Removed the need for ``--no-binary=protobuf`` for operation.

Release **0.8.0**:

- **Important**: potentially breaking change. The dependency is moved from ``grpcio-tools`` to ``protobuf``, which as a standalone package has a much newer serion.
- Spec is rebuilt and updated to support gNMI of version ``0.8.0``.

Release **0.7.5**:

- Amended the logic of ``ONCE`` telemetry mode to automatically terminate on receiving ``{"sync_response": True}`` message.

Release **0.7.4**:

- Feature ``skip_verify`` is now stabilised and doesn't require subject alternative names any more.

Release **0.7.3**:

- Amended the logic of ``target`` functionality to be more inline with gNMI Reference.

Release **0.7.2**:

- Minor bug fixing in the ``skip_verify`` logic. **Impotant**: for this feature to work, you need at least one subject alternative name filed (DNS, IP address, email, - any will work). It also doesn't matter which value it has, but at least one item shall present.

Release **0.7.1**:

- Added new argument ``skip_verify`` to ``gNMIclient``, which removes a need to set the ``override`` argument manually. However, the latter one still stays for the backward compatibility.
- Changed default values for arguments ``username`` and ``password`` from ``None`` to ``""``, as with token-based authentication they don't need to be specified.
- Added new argument ``target`` to ``gNMIclient.get()``, ``gNMIclient.set()``, and ``gNMIclient.subscribe2()`` methods. If provided, it adds ``target`` key to ``Path()`` per `GNMI Specification 2.2.2.1 <https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-specification.md#2221-path-target>`_.

Release **0.7.0**:

- Added authentication with Token using ``Authorization: Bearer TOKEN``, where ``TOKEN`` is a variable provided as ``gNMIclient(token=TOKEN)`` key (needed for Arista CVP).
- Added functionality to change  ``GRPC_SSL_CIPHER_SUITES`` dynamically to ``HIGH`` value (needed for Nokia SR OS).

Release **0.6.9**:

- Adding new documentation for mutual TLS feature.

Release **0.6.8**:

- Minor bug-fixing.

Release **0.6.7**:

- Added new ``show_diff`` key to ``gNMIclient`` object (supported values ``print`` and ``get``). When applied, it shows the changes happened to all keys following XPath from all arguments to ``Set()`` RPC at the network devices. It is so fair tailored to OpenConfig YANG modules as it uses some architectural principles of OpenConfig YANG module to re-construct XPath.
- Added an optional timeout to ``connect()`` method.
- Minor bug-fixing.

Release **0.6.6**:

- Minor bug-fixing.

Release **0.6.5**:

- Implemented ``prefix`` and ``timestamp`` in ``SetResponse`` message.
- Implemented ``alias`` and ``atomic`` in ``Notification`` message.
- Minor bug-fixing.

Release **0.6.4**:

- Minor bug-fixing.

Release **0.6.3**:

- Implemented ``prefix`` key in the ``Update`` message.
- Added possibility to provide password in STDIN rather than key.
- Minor bug-fixing.

Release **0.6.2**:

- Added support of keepalive timer for gRPC session to prevent automatic closure each 2 hours.
- Fixed issue with ``Subscribe`` RPC not sending delete notification in case of a path is removed from the node.
- Added the CLI based tool.
- Minor bug-fixing.

Release **0.6.1**:

- Added support of origin per RFC7951.
- Added timeout to the initial setup useful for long-living connections.
- Minor bug-fixing.

Release **0.6.0**:

- Significant improvements in telemetry capabilities of the pygnmi. Now you can use ``subscribe2`` method by simply providing the a corredponding dictionary at input and all modes (STREA, ONCE, POLL) are working correctly.
- Function ``telemetryParser`` is now automatically used inside ``subscribe2``.
- Telemetry is now implemeted using ``threading``.
- Added new unit tests with ``pytest`` and added code coverage with ``coverage.py``.

Release **0.5.3**:

- Minor improvements and bug fixing.
- Full coverage of unit tests for all operations (Capabilities, Get, Set(Update, Replace, Delete), Subscribe) and all notations of GNMI Path.

Release **0.5.2**:

- Minor bug fixing.
- First release with unit tests.

Release **0.5.1**:

- Added example for non-blocking iterator for telemetry.
- Added the extra support for Juniper TLS certificates.
- Fixed regexp warnings.
- Changed the logging functionality.
- Enabled Unix domain socket.
- Added ``close()`` 
- Many thanks for all contributors to make this release happen.

Release **0.5.0**:

- Added possibility to extract certificate from the destination network function.

Release **0.4.8**:

- Added documentation in module regading supported the different paths naming conventions. Supported options: ``yang-module:container/container[key=value]``, ``/yang-module:container/container[key=value]``, ``/yang-module:/container/container[key=value]``, ``/container/container[key=value]``

Release **0.4.6**:

- Fixed `gNMI Path issue <https://github.com/akarneliuk/pygnmi/issues/13>`_.

Release **0.4.6**:

- Replaced the ``sys.exit`` with raising exceptions.
- Minor bug fix.
- Brought the gNMI path to the canonical format: ``/origin:element1/element2...``.
- Added possibility to omit the YANG module name, as some vendors doesn't include that in the request per their gNMI implementation: ``/element1/element2...``.

Release **0.4.5**:

- Minor bug fix.

Release **0.4.4**:

- Minor bug fix.

Release **0.4.3**:

- Added possibility to modify the timeout (default value is 5 seconds) for the session using ``gnmi_timeout`` key for ``gNMIclient`` class.

Release **0.4.2**:

- Modified the path generation to comply with `gNMI Path encoding conventions <https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-path-conventions.md>`_.
- Fixed the problem ``debug`` output, where the requests where not printed in case of response failing.

Release **0.4.1**:

- Minor bug fix.

Release **0.4.0**:

- Added support for Juniper JUNOS
- Fixed the issue with ``override`` for PKI-based certificates

Release **0.3.12**:

- Minor bug fix.

Release **0.3.11**:

- Minor bug fix.

Release **0.3.10**:

- Renamed the debug mode. Add argument ``debug=True`` upon object creation to see the Protobuf messages.

Release **0.3.9**:

- Added functionality to list the full the device configuration in case the path is empty: ``get(path[])``.

Release **0.3.8**:

- Merged the proposal how to implement TLS with override for Cisco IOS XR (tested for Cisco IOS XR, to be tested for other vendors yet)
- Merged examples with TLS

Release **0.3.7**:

- Added the argument ``encoding`` as an extra key to ``Set`` operation

Release **0.3.6**:

- Added the argument ``encoding`` to ``Get`` operation

Release **0.3.5**:

- Added the example for Nornir Integration
- Added the topology diagram
- Added links to the video tutorial

Release **0.3.4**:

- Added the ``close`` method to ``gNMIClient`` class for those, who doesn't use ``with ... as ...`` context manager.

Release **0.3.3**:

- Added the functionality to pass gRPC messages to the code execution

Release **0.3.2**:

- Minor bugs fixed.

Release **0.3.1**:

- Minor bugs fixed.
- Added examples of gNMI operations.

Release **0.3.0**:

- Added new function ``telemetryParser``, which converts Protobuf messages in Python dictionary.
- Fixed the errors with the telemetry parsing.

Release **0.2.7**:

- Modified core so that telemetry is working in ``once`` and ``stream`` mode.

Release **0.2.6**:

- Added alpha version of the ``Subscribe`` operation.

Release **0.2.5**:

- Added typing hints.

Release **0.2.4**:

- Minor bugfixing.

Release **0.2.3**:

- Added support for IPv6 transport (now you can connect to the network function over IPv6).

Release **0.2.2**:

- Added conversion of the collected information over the gNMI into a Python dictionary for Set operation.

Release **0.2.1**:

- Fixing the bugs with improper Protobuf paths generation.
- Now all ``Set`` operations (``delete``, ``replace``, and ``update``) are working properly.

Releast **0.2.0**:

- Added the ``Set`` operation from gNMI specification.

Releast **0.1.9**:

- Added the property ``datatype='all'`` to the get() request. The values are per the gNMI specification: all, config, state, operatonal.

Release **0.1.8**:

- Added conversion of the collected information over the gNMI into a Python dictionary for Get operation.

Release **0.1.7**:

- Changing packages modules.

Release **0.1.6**:

- Restructuring internal context.

Release **0.1.5**:

- Minor bugfixing.

Release **0.1.4**:

- Minor bugfixing.

Release **0.1.3**:

- Minor bugfixing.

Release **0.1.2**:

- The gNMIClient is recreated as context manger.
- Tests with Nokia SR OS done, the module is working nice for insecure channel.

Release **0.1.1**:

- Added the ``Get`` operation out of gNMI specification.

Release **0.1.0**:

- The first release.

(c)2020-2022, karneliuk.com

.. |version| image:: https://img.shields.io/static/v1?label=latest&message=v0.8.13&color=success
.. _version: https://pypi.org/project/pygnmi/
.. |tag| image:: https://img.shields.io/static/v1?label=status&message=stable&color=success
.. _tag: https://pypi.org/project/pygnmi/
.. |license| image:: https://img.shields.io/static/v1?label=license&message=BSD-3-clause&color=success
.. _license: https://github.com/akarneliuk/pygnmi/blob/master/LICENSE.txt
.. |project| image:: https://img.shields.io/badge/akarneliuk%2Fpygnmi-blueviolet.svg?logo=github&color=success
.. _project: https://github.com/akarneliuk/pygnmi/
.. |coverage| image:: https://img.shields.io/static/v1?label=coverage&message=68%&color=yellow
.. _coverage: https://github.com/nedbat/coveragepy

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/akarneliuk/pygnmi",
    "name": "dt-pygnmi",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "gnmi,automation,grpc,network",
    "author": "Anton Karneliuk",
    "author_email": "anton@karneliuk.com",
    "download_url": "https://github.com/akarneliuk/pygnmi/archive/v0.8.13.tar.gz",
    "platform": null,
    "description": "==========================\r\npyGNMI: Python gNMI client\r\n==========================\r\n\r\n.. image:: https://github.com/akarneliuk/pygnmi/blob/master/logo.png\r\n   :width: 300\r\n   :height: 300\r\n   :alt: pyGNMI logo\r\n   :align: center\r\n\r\n|project|_ |version|_ |coverage|_ |tag|_ |license|_\r\n\r\nThis repository contains pure Python implementation of the gNMI client to interact with the network functions.\r\n\r\n=====\r\nUsage\r\n=====\r\nSample code example:\r\n\r\n.. code-block:: python3\r\n\r\n  # Modules\r\n  from pygnmi.client import gNMIclient\r\n\r\n  # Variables\r\n  host = ('169.254.255.64', '57400')\r\n\r\n  # Body\r\n  if __name__ == '__main__':\r\n      with gNMIclient(target=host, username='admin', password='admin', insecure=True) as gc:\r\n           result = gc.get(path=['openconfig-interfaces:interfaces', 'openconfig-acl:acl'])\r\n         \r\n      print(result)\r\n\r\nAlso integration with Nornir is supported (`refer to examples <examples/nornir>`_).\r\n\r\nVideo tutorial\r\n--------------\r\nWatch the detailed explanation how to use pyGNMI `in our YouTube channel <https://www.youtube.com/watch?v=NooE_uHIgys&list=PLsTgo2tBPnTwmeP9zsd8B_tZR-kbguvla>`_.\r\n\r\n\r\nAll gNMI RPCs supported\r\n-----------------------\r\n- Capabilities\r\n- Get\r\n- Set\r\n- Subscribe\r\n\r\nSupported operation modes\r\n-------------------------\r\n- insecure gRPC channel (without encryption)\r\n- secure gRPC channel (with encryption and authentication based on certificate)\r\n\r\nTested Network Operating Systems (NOS)\r\n--------------------------------------\r\n- Arista EOS\r\n- Nokia SR OS\r\n- Cisco IOS XR\r\n- Juniper JUNOS\r\n- Nokia SRLinux\r\n- Cisco NX-OS\r\n\r\nNetwork Operating Systems (NOS) in test\r\n---------------------------------------\r\n- Broadcom SONiC\r\n\r\n=======\r\nLicense\r\n=======\r\nBy using the pyGNMI tool you agree with `the license <LICENSE.txt>`_.\r\n\r\n============\r\nContributors\r\n============\r\n\r\n- `Anton Karneliuk <https://github.com/akarneliuk>`_\r\n- `Stefan Lieberth <https://github.com/slieberth>`_\r\n- `Prem Anand Haridoss <https://github.com/hprem>`_\r\n- `Andrew Southard <https://github.com/andsouth44>`_\r\n- `Jeroen van Bemme <https://github.com/jbemmel>`_\r\n- `Fr\u00e9d\u00e9ric Perrin <https://github.com/fperrin>`_\r\n- `Malanovo <https://github.com/malanovo>`_\r\n- `Sebastian Lohff <https://github.com/sebageek>`_\r\n\r\n=======\r\nDev Log\r\n=======\r\n\r\nRelease **0.8.13**:\r\n- Number of minor bug fixes and improvements.\r\n\r\nRelease **0.8.12**:\r\n- Fixed operation of `no_qos_marking` flag for `pygnmicli`.\r\n\r\nRelease **0.8.11**:\r\n- Previous release introduced break for telemetry in `Juniper` due to inconsistency of communicated encoudings in `Capabilities()` and what is really supported in `Subscribe()`.\r\n\r\nRelease **0.8.10**:\r\n- Automatic detection of supported encoding and using it where applicable (e.g., in `subscribe2` method).\r\n- Possibility to remove `qos` from `Subscribe` for platforms, which doesn't support it (e.g., `Juniper`).\r\n\r\nRelease **0.8.9**:\r\n\r\n- Default value for ``encoding`` everywhere is set to ``None``.\r\n- Method ``capabilities()`` now is called as part of ``connect()`` to collect supported encoding as part of session establishing.\r\n- If ``encoding`` is not specified by user, then it is auto-set based on the list collected via ``capabilites()`` with ``json`` having the first priority follwed by ``json_ietf``.\r\n\r\nRelease **0.8.8**:\r\n\r\n- Added new argument ``-e / --encoding`` to ``pygnmicli`` to specify the encoding, which overrides the default one. Fix for `Issue 58 <https://github.com/akarneliuk/pygnmi/issues/58>`_.\r\n- Fixed minor bug with encoding handling inside ``get()`` and ``subscribe2()`` methods.\r\n- Simplified the code.\r\n\r\nRelease **0.8.7**:\r\n\r\n- Fixed bug, when returned ``json_val`` or ``json_ietf_val`` is not processed correctly if the value is empty string.  Fix for `Issue 58 <https://github.com/akarneliuk/pygnmi/issues/58>`_.\r\n\r\nRelease **0.8.6**:\r\n\r\n- Fixed minor issue with establishing ``insecure`` channel.\r\n- Fixed bug with inabillity to specify ``prefix`` in Subscribe messages for ``subscribe2()`` method.\r\n- **Important**: It is recommended to use method ``subscribe2()`` instead of ``subscribe()`` for building telemetry collectors with ``pygnmi`` as this method is further developed and throroughle tested. The method ``subscribe()`` will be deprecated in future releases.\r\n- Functionality ``qos`` is now properly supported in ``subscribe2()`` method.\r\n\r\nRelease **0.8.5**:\r\n\r\n- Fixed some issues with telemetry representation with ``pygnmicli``.\r\n\r\nRelease **0.8.4**:\r\n\r\n- Change logic of setting default values for some parameters to improve user experience.\r\n- Added ``token`` authentication to ``pygnmicli``.\r\n\r\nRelease **0.8.3**:\r\n\r\n- Changed behaviour of ``subscribe2()`` to RPC to avoid adding the empty ``Extension`` field for no extensions presenting. Fix for `Issue 83 <https://github.com/akarneliuk/pygnmi/issues/83>`_.\r\n- Uppdated documentation with examples in GitHub.\r\n- Added support of History extensions to ``pygnmicli``.\r\n\r\nRelease **0.8.2**:\r\n\r\n- Implemented `History Extension <https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-history.md#1-purpose>`_.\r\n- Implemented handling of corner case, where ``--skip-verify`` was failing trying to parse certificate, `which doesn't have CN and SARs <https://github.com/akarneliuk/pygnmi/issues/71>`_.\r\n\r\nRelease **0.8.1**:\r\n\r\n- Removed the need for ``--no-binary=protobuf`` for operation.\r\n\r\nRelease **0.8.0**:\r\n\r\n- **Important**: potentially breaking change. The dependency is moved from ``grpcio-tools`` to ``protobuf``, which as a standalone package has a much newer serion.\r\n- Spec is rebuilt and updated to support gNMI of version ``0.8.0``.\r\n\r\nRelease **0.7.5**:\r\n\r\n- Amended the logic of ``ONCE`` telemetry mode to automatically terminate on receiving ``{\"sync_response\": True}`` message.\r\n\r\nRelease **0.7.4**:\r\n\r\n- Feature ``skip_verify`` is now stabilised and doesn't require subject alternative names any more.\r\n\r\nRelease **0.7.3**:\r\n\r\n- Amended the logic of ``target`` functionality to be more inline with gNMI Reference.\r\n\r\nRelease **0.7.2**:\r\n\r\n- Minor bug fixing in the ``skip_verify`` logic. **Impotant**: for this feature to work, you need at least one subject alternative name filed (DNS, IP address, email, - any will work). It also doesn't matter which value it has, but at least one item shall present.\r\n\r\nRelease **0.7.1**:\r\n\r\n- Added new argument ``skip_verify`` to ``gNMIclient``, which removes a need to set the ``override`` argument manually. However, the latter one still stays for the backward compatibility.\r\n- Changed default values for arguments ``username`` and ``password`` from ``None`` to ``\"\"``, as with token-based authentication they don't need to be specified.\r\n- Added new argument ``target`` to ``gNMIclient.get()``, ``gNMIclient.set()``, and ``gNMIclient.subscribe2()`` methods. If provided, it adds ``target`` key to ``Path()`` per `GNMI Specification 2.2.2.1 <https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-specification.md#2221-path-target>`_.\r\n\r\nRelease **0.7.0**:\r\n\r\n- Added authentication with Token using ``Authorization: Bearer TOKEN``, where ``TOKEN`` is a variable provided as ``gNMIclient(token=TOKEN)`` key (needed for Arista CVP).\r\n- Added functionality to change  ``GRPC_SSL_CIPHER_SUITES`` dynamically to ``HIGH`` value (needed for Nokia SR OS).\r\n\r\nRelease **0.6.9**:\r\n\r\n- Adding new documentation for mutual TLS feature.\r\n\r\nRelease **0.6.8**:\r\n\r\n- Minor bug-fixing.\r\n\r\nRelease **0.6.7**:\r\n\r\n- Added new ``show_diff`` key to ``gNMIclient`` object (supported values ``print`` and ``get``). When applied, it shows the changes happened to all keys following XPath from all arguments to ``Set()`` RPC at the network devices. It is so fair tailored to OpenConfig YANG modules as it uses some architectural principles of OpenConfig YANG module to re-construct XPath.\r\n- Added an optional timeout to ``connect()`` method.\r\n- Minor bug-fixing.\r\n\r\nRelease **0.6.6**:\r\n\r\n- Minor bug-fixing.\r\n\r\nRelease **0.6.5**:\r\n\r\n- Implemented ``prefix`` and ``timestamp`` in ``SetResponse`` message.\r\n- Implemented ``alias`` and ``atomic`` in ``Notification`` message.\r\n- Minor bug-fixing.\r\n\r\nRelease **0.6.4**:\r\n\r\n- Minor bug-fixing.\r\n\r\nRelease **0.6.3**:\r\n\r\n- Implemented ``prefix`` key in the ``Update`` message.\r\n- Added possibility to provide password in STDIN rather than key.\r\n- Minor bug-fixing.\r\n\r\nRelease **0.6.2**:\r\n\r\n- Added support of keepalive timer for gRPC session to prevent automatic closure each 2 hours.\r\n- Fixed issue with ``Subscribe`` RPC not sending delete notification in case of a path is removed from the node.\r\n- Added the CLI based tool.\r\n- Minor bug-fixing.\r\n\r\nRelease **0.6.1**:\r\n\r\n- Added support of origin per RFC7951.\r\n- Added timeout to the initial setup useful for long-living connections.\r\n- Minor bug-fixing.\r\n\r\nRelease **0.6.0**:\r\n\r\n- Significant improvements in telemetry capabilities of the pygnmi. Now you can use ``subscribe2`` method by simply providing the a corredponding dictionary at input and all modes (STREA, ONCE, POLL) are working correctly.\r\n- Function ``telemetryParser`` is now automatically used inside ``subscribe2``.\r\n- Telemetry is now implemeted using ``threading``.\r\n- Added new unit tests with ``pytest`` and added code coverage with ``coverage.py``.\r\n\r\nRelease **0.5.3**:\r\n\r\n- Minor improvements and bug fixing.\r\n- Full coverage of unit tests for all operations (Capabilities, Get, Set(Update, Replace, Delete), Subscribe) and all notations of GNMI Path.\r\n\r\nRelease **0.5.2**:\r\n\r\n- Minor bug fixing.\r\n- First release with unit tests.\r\n\r\nRelease **0.5.1**:\r\n\r\n- Added example for non-blocking iterator for telemetry.\r\n- Added the extra support for Juniper TLS certificates.\r\n- Fixed regexp warnings.\r\n- Changed the logging functionality.\r\n- Enabled Unix domain socket.\r\n- Added ``close()`` \r\n- Many thanks for all contributors to make this release happen.\r\n\r\nRelease **0.5.0**:\r\n\r\n- Added possibility to extract certificate from the destination network function.\r\n\r\nRelease **0.4.8**:\r\n\r\n- Added documentation in module regading supported the different paths naming conventions. Supported options: ``yang-module:container/container[key=value]``, ``/yang-module:container/container[key=value]``, ``/yang-module:/container/container[key=value]``, ``/container/container[key=value]``\r\n\r\nRelease **0.4.6**:\r\n\r\n- Fixed `gNMI Path issue <https://github.com/akarneliuk/pygnmi/issues/13>`_.\r\n\r\nRelease **0.4.6**:\r\n\r\n- Replaced the ``sys.exit`` with raising exceptions.\r\n- Minor bug fix.\r\n- Brought the gNMI path to the canonical format: ``/origin:element1/element2...``.\r\n- Added possibility to omit the YANG module name, as some vendors doesn't include that in the request per their gNMI implementation: ``/element1/element2...``.\r\n\r\nRelease **0.4.5**:\r\n\r\n- Minor bug fix.\r\n\r\nRelease **0.4.4**:\r\n\r\n- Minor bug fix.\r\n\r\nRelease **0.4.3**:\r\n\r\n- Added possibility to modify the timeout (default value is 5 seconds) for the session using ``gnmi_timeout`` key for ``gNMIclient`` class.\r\n\r\nRelease **0.4.2**:\r\n\r\n- Modified the path generation to comply with `gNMI Path encoding conventions <https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-path-conventions.md>`_.\r\n- Fixed the problem ``debug`` output, where the requests where not printed in case of response failing.\r\n\r\nRelease **0.4.1**:\r\n\r\n- Minor bug fix.\r\n\r\nRelease **0.4.0**:\r\n\r\n- Added support for Juniper JUNOS\r\n- Fixed the issue with ``override`` for PKI-based certificates\r\n\r\nRelease **0.3.12**:\r\n\r\n- Minor bug fix.\r\n\r\nRelease **0.3.11**:\r\n\r\n- Minor bug fix.\r\n\r\nRelease **0.3.10**:\r\n\r\n- Renamed the debug mode. Add argument ``debug=True`` upon object creation to see the Protobuf messages.\r\n\r\nRelease **0.3.9**:\r\n\r\n- Added functionality to list the full the device configuration in case the path is empty: ``get(path[])``.\r\n\r\nRelease **0.3.8**:\r\n\r\n- Merged the proposal how to implement TLS with override for Cisco IOS XR (tested for Cisco IOS XR, to be tested for other vendors yet)\r\n- Merged examples with TLS\r\n\r\nRelease **0.3.7**:\r\n\r\n- Added the argument ``encoding`` as an extra key to ``Set`` operation\r\n\r\nRelease **0.3.6**:\r\n\r\n- Added the argument ``encoding`` to ``Get`` operation\r\n\r\nRelease **0.3.5**:\r\n\r\n- Added the example for Nornir Integration\r\n- Added the topology diagram\r\n- Added links to the video tutorial\r\n\r\nRelease **0.3.4**:\r\n\r\n- Added the ``close`` method to ``gNMIClient`` class for those, who doesn't use ``with ... as ...`` context manager.\r\n\r\nRelease **0.3.3**:\r\n\r\n- Added the functionality to pass gRPC messages to the code execution\r\n\r\nRelease **0.3.2**:\r\n\r\n- Minor bugs fixed.\r\n\r\nRelease **0.3.1**:\r\n\r\n- Minor bugs fixed.\r\n- Added examples of gNMI operations.\r\n\r\nRelease **0.3.0**:\r\n\r\n- Added new function ``telemetryParser``, which converts Protobuf messages in Python dictionary.\r\n- Fixed the errors with the telemetry parsing.\r\n\r\nRelease **0.2.7**:\r\n\r\n- Modified core so that telemetry is working in ``once`` and ``stream`` mode.\r\n\r\nRelease **0.2.6**:\r\n\r\n- Added alpha version of the ``Subscribe`` operation.\r\n\r\nRelease **0.2.5**:\r\n\r\n- Added typing hints.\r\n\r\nRelease **0.2.4**:\r\n\r\n- Minor bugfixing.\r\n\r\nRelease **0.2.3**:\r\n\r\n- Added support for IPv6 transport (now you can connect to the network function over IPv6).\r\n\r\nRelease **0.2.2**:\r\n\r\n- Added conversion of the collected information over the gNMI into a Python dictionary for Set operation.\r\n\r\nRelease **0.2.1**:\r\n\r\n- Fixing the bugs with improper Protobuf paths generation.\r\n- Now all ``Set`` operations (``delete``, ``replace``, and ``update``) are working properly.\r\n\r\nReleast **0.2.0**:\r\n\r\n- Added the ``Set`` operation from gNMI specification.\r\n\r\nReleast **0.1.9**:\r\n\r\n- Added the property ``datatype='all'`` to the get() request. The values are per the gNMI specification: all, config, state, operatonal.\r\n\r\nRelease **0.1.8**:\r\n\r\n- Added conversion of the collected information over the gNMI into a Python dictionary for Get operation.\r\n\r\nRelease **0.1.7**:\r\n\r\n- Changing packages modules.\r\n\r\nRelease **0.1.6**:\r\n\r\n- Restructuring internal context.\r\n\r\nRelease **0.1.5**:\r\n\r\n- Minor bugfixing.\r\n\r\nRelease **0.1.4**:\r\n\r\n- Minor bugfixing.\r\n\r\nRelease **0.1.3**:\r\n\r\n- Minor bugfixing.\r\n\r\nRelease **0.1.2**:\r\n\r\n- The gNMIClient is recreated as context manger.\r\n- Tests with Nokia SR OS done, the module is working nice for insecure channel.\r\n\r\nRelease **0.1.1**:\r\n\r\n- Added the ``Get`` operation out of gNMI specification.\r\n\r\nRelease **0.1.0**:\r\n\r\n- The first release.\r\n\r\n(c)2020-2022, karneliuk.com\r\n\r\n.. |version| image:: https://img.shields.io/static/v1?label=latest&message=v0.8.13&color=success\r\n.. _version: https://pypi.org/project/pygnmi/\r\n.. |tag| image:: https://img.shields.io/static/v1?label=status&message=stable&color=success\r\n.. _tag: https://pypi.org/project/pygnmi/\r\n.. |license| image:: https://img.shields.io/static/v1?label=license&message=BSD-3-clause&color=success\r\n.. _license: https://github.com/akarneliuk/pygnmi/blob/master/LICENSE.txt\r\n.. |project| image:: https://img.shields.io/badge/akarneliuk%2Fpygnmi-blueviolet.svg?logo=github&color=success\r\n.. _project: https://github.com/akarneliuk/pygnmi/\r\n.. |coverage| image:: https://img.shields.io/static/v1?label=coverage&message=68%&color=yellow\r\n.. _coverage: https://github.com/nedbat/coveragepy\r\n",
    "bugtrack_url": null,
    "license": "bsd-3-clause",
    "summary": "Pure Python gNMI client to manage network functions and collect telemetry.",
    "version": "0.8.13",
    "project_urls": {
        "Download": "https://github.com/akarneliuk/pygnmi/archive/v0.8.13.tar.gz",
        "Homepage": "https://github.com/akarneliuk/pygnmi"
    },
    "split_keywords": [
        "gnmi",
        "automation",
        "grpc",
        "network"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "de9496918c971ff51033624c8cbf883e93e47122321a79546703dde782940f1a",
                "md5": "b57aed135f954ceb507ff6636254dc68",
                "sha256": "769568adee99fb3e0c674a6e7a6d6868fb822ae049d66b52fde2f46009ad42cd"
            },
            "downloads": -1,
            "filename": "dt_pygnmi-0.8.13-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b57aed135f954ceb507ff6636254dc68",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 35116,
            "upload_time": "2023-11-03T11:53:19",
            "upload_time_iso_8601": "2023-11-03T11:53:19.514604Z",
            "url": "https://files.pythonhosted.org/packages/de/94/96918c971ff51033624c8cbf883e93e47122321a79546703dde782940f1a/dt_pygnmi-0.8.13-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-11-03 11:53:19",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "akarneliuk",
    "github_project": "pygnmi",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "dt-pygnmi"
}
        
Elapsed time: 0.15044s