Skip to content

Support for RESTCONF-like URL expressions #23

Description

@wisotzky

Today, libyang-python only supports XPATH expressions. There is a need to alternatively support RESTCONF compliant path expression, as specified in rfc8040.

XPATH expression example:
/nokia-conf:configure/port[port-id=1/1/1]

Corresponding RESTCONF URL syntax
/nokia-conf:configure/port=1%2F1%2F1

Usage information:

  • RESTCONF uses URL encoding for key values
  • Only list-key values are provided (no attribute names)
  • For lists with multiple keys, comma is used as separator while key values will follow the same order as in the YANG key statement

Example with multiple keys:
In YANG the statement key: "p1 p2 p3 p4" for list mylist occurs. To access an object with p1="bla" and p4="bing" one would use the following URL path statement .../mylist=bla,,,bing/...

Rational:
To convert a RESTCONF URL/PATH to XPATH is rather complex, because one needs to understand the list keys (aka requires to know the corresponding YANG file). As libyang has the knowledge the recommendation is to support URL style (model-path) out-of-the-box.

Activity

  1. rjarry commented on Jun 1, 2021

    @rjarry
    Collaborator

    Hi,

    is that something that libyang supports? If not, it must be first supported by the C library. This project is only a python wrapper/binding on top of it.

  2. changed the title [-]Feature Request: Support for RESTCONF-like URL expressions[/-] [+]Support for RESTCONF-like URL expressions[/+] on Jun 1, 2021
  3. wisotzky commented on Jun 14, 2021

    @wisotzky
    Author

    Okay, will raise this against libyang2. Will keep this item open, so it can be considered as soon the lib feature is available.

  4. wisotzky commented on Jun 14, 2021

    @wisotzky
    Author

    I've opened this ticket:
    CESNET/libyang#1622

  5. samuel-gauthier commented on Jan 24, 2024

    @samuel-gauthier
    Collaborator

    Hi @wisotzky, it does not seem that the libyang feature is going anywhere, can we close this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions