Comments (1)
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)
- CodecService fails to decode XML for Cisco XR Yang models when BGP and SNMP-IFMIB are present in the payload HOT 1
- ydk-py -- error: ‘get_capabilities’ is not a member of ‘ydk::path::Session’ HOT 1
- Segmentaion fault with pybind11::error_already_set HOT 2
- YDK C++ core library install fails on CentOS 8 stream HOT 2
- CiscoDevNet YDK C++ README needs Documentation & Support links updated
- Error in ydk-gen-master/test/dependencies_centos.sh version check
- not_eq is a c++ keyword HOT 1
- libyang issue with arguments that are swapped HOT 1
- YDK not working 17.06.04 - Path is invalid: Cisco-IOS-XE-native:native HOT 1
- ydk 0.5.5 - Secondary mechanism failed more than one identity with name <identity-name> found HOT 1
- How to write a netconf server HOT 1
- config false deviation not working when leaf did not mention config true explicitly HOT 1
- ydk.io and ciscodevnet.github.io/ydk-py/ not working correctly HOT 6
- cannot decode json blob in python without encoding it first HOT 2
- Installation crashes HOT 2
- Incorrect bundle model reference HOT 2
- Invalid keyword "+" - fails to use get_config HOT 1
- Incorrect loading of submodules into YANG repository HOT 10
- SIGSEGV or Connect Failed
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ydk-gen.