Code Monkey home page Code Monkey logo

Comments (1)

ygorelik avatar ygorelik commented on June 10, 2024

Actually the correct way of reading the list would be this:

    r2 = ysanity.Runner()
    data = ysanity.Runner.OneList.Ldata()
    data.number = YFilter.read  # Assign read filter to the key leaf 
    r2.one_list.ldata.append(data)
    runner_read = crud.read(ncc, r2)

With that approach applied to test script:

import sys
import unittest
import logging

from ydk.providers import NetconfServiceProvider
from ydk.services import CRUDService
from ydk.filters import YFilter

from ydk.models.ydktest import ydktest_sanity as ysanity

def test():

    crud = CRUDService()
    ncc = NetconfServiceProvider('127.0.0.1', 'admin', 'admin', 12022)

    # Create the list
    r1 = ysanity.Runner()
    l1, l2 = ysanity.Runner.OneList.Ldata(), ysanity.Runner.OneList.Ldata()
    l1.number, l2.number = 1, 2
    l1.name, l2.name = 'a', 'b'
    r1.one_list.ldata.extend([l1, l2])
    crud.create(ncc, r1)

    # Read the list ldata
    r2 = ysanity.Runner()
    data = ysanity.Runner.OneList.Ldata()
    data.number = YFilter.read
    r2.one_list.ldata.append(data)
    runner_read = crud.read(ncc, r2)
    assert len(runner_read.one_list.ldata) == 2, f"ldata list length is {len(runner_read.one_list.ldata)}"
    assert runner_read.one_list.ldata['1'].name is None, "ldata.name is expected to be None"

    # Read container one-list
    r3 = ysanity.Runner()
    r3.one_list.yfilter = YFilter.read
    runner_read = crud.read(ncc, r3)
    assert len(runner_read.one_list.ldata) == 2, \
        f"expected ldata length is 2, but it is {len(runner_read.one_list.ldata)}"
    assert runner_read.one_list.ldata['1'].name is not None, "ldata.name is expected to be not None"


if __name__ == '__main__':
    log = logging.getLogger('ydk')
    log.setLevel(logging.INFO)
    handler = logging.StreamHandler()
    log.addHandler(handler)

    test()

And the result is showing correct RPC's and device responses:

Path where models are to be downloaded: /Users/ygorelik/.ydk/127.0.0.1
Connected to 127.0.0.1 on port 12022 using ssh with timeout of -1
Executing CRUD create operation on [ydktest-sanity:runner]
Executing 'edit-config' RPC on [ydktest-sanity:runner]
============= Sending RPC to device =============
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><edit-config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <target>
    <candidate/>
  </target>
  <config><runner xmlns="http://cisco.com/ns/yang/ydktest-sanity" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" nc:operation="merge">
  <one-list>
    <ldata>
      <number>1</number>
      <name>a</name>
    </ldata>
    <ldata>
      <number>2</number>
      <name>b</name>
    </ldata>
  </one-list>
</runner>
</config>
</edit-config>
</rpc>
============= Received RPC from device =============
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="2">
  <ok/>
</rpc-reply>

Executing 'commit' RPC
============= Sending RPC to device =============
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><commit xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/>
</rpc>
============= Received RPC from device =============
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="3">
  <ok/>
</rpc-reply>

Operation succeeded
Executing CRUD read operation on [ydktest-sanity:runner]
Executing 'get' RPC on [ydktest-sanity:runner]
============= Sending RPC to device =============
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><get xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <filter><runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">
  <one-list>
    <ldata>
      <number/>
    </ldata>
  </one-list>
</runner></filter>
</get>
</rpc>
============= Received RPC from device =============
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4">
  <data>
    <runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">
      <one-list>
        <ldata>
          <number>1</number>
        </ldata>
        <ldata>
          <number>2</number>
        </ldata>
      </one-list>
    </runner>
  </data>
</rpc-reply>

Executing CRUD read operation on [ydktest-sanity:runner]
Executing 'get' RPC on [ydktest-sanity:runner]
============= Sending RPC to device =============
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><get xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <filter><runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">
  <one-list/>
</runner></filter>
</get>
</rpc>
============= Received RPC from device =============
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5">
  <data>
    <runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">
      <one-list>
        <ldata>
          <number>1</number>
          <name>a</name>
        </ldata>
        <ldata>
          <number>2</number>
          <name>b</name>
        </ldata>
      </one-list>
    </runner>
  </data>
</rpc-reply>

Disconnected from device

from ydk-gen.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.