Beispiel #1
0
 def test_move_last_first(self):
     conn = sr.Connection("move_test4")
     self.session = sr.Session(conn, sr.SR_DS_STARTUP)
     self.session.move_item("/test-module:user[name='nameC']",
                            sr.SR_MOVE_LAST)
     items = self.session.get_items("/test-module:user")
     self.compareListItems(items, ["A", "B", "D", "C"])
Beispiel #2
0
 def test_move_after_unknown(self):
     conn = sr.Connection("move_test3")
     self.session = sr.Session(conn, sr.SR_DS_STARTUP)
     with self.assertRaises(RuntimeError):
         self.session.move_item("/test-module:user[name='nameB']",
                                sr.SR_MOVE_AFTER,
                                "/test-module:user[name='nameXY']")
Beispiel #3
0
 def test_move_before_first(self):
     conn = sr.Connection("move_test2")
     self.session = sr.Session(conn, sr.SR_DS_STARTUP)
     self.session.move_item("/test-module:user[name='nameC']",
                            sr.SR_MOVE_BEFORE,
                            "/test-module:user[name='nameA']")
     items = self.session.get_items("/test-module:user")
     self.compareListItems(items, ["C", "A", "B", "D"])
Beispiel #4
0
def create_example_module():
    connection = sr.Connection("test-module")

    session = sr.Session(connection, sr.SR_DS_STARTUP)
    session.delete_item("/example-module:*")
    v = sr.Val("Leaf value", sr.SR_STRING_T)
    session.set_item("/example-module:container/list[key1='key1'][key2='key2']/leaf", v)
    session.commit()
Beispiel #5
0
def subscribe():
    conn = sr.Connection("subscriber")
    sess = sr.Session(conn, sr.SR_DS_RUNNING)
    subscribe1 = sr.Subscribe(sess)
    subscribe1.module_change_subscribe('nemea-test-1', change_cb)
    subscribe2 = sr.Subscribe(sess)
    subscribe2.module_change_subscribe('link-traffic-test-1', change_cb)
    sr.global_loop()
Beispiel #6
0
 def test_move_after_last(self):
     conn = sr.Connection("move_test1")
     self.session = sr.Session(conn, sr.SR_DS_STARTUP)
     print("move")
     self.session.move_item("/test-module:user[name='nameB']",
                            sr.SR_MOVE_AFTER,
                            "/test-module:user[name='nameD']")
     items = self.session.get_items("/test-module:user")
     self.compareListItems(items, ["A", "C", "D", "B"])
Beispiel #7
0
 def setUp(self):
     conn = sr.Connection("move_test")
     session = sr.Session(conn, sr.SR_DS_STARTUP)
     session.delete_item("/test-module:*")
     session.set_item("/test-module:user[name='nameA']", None)
     session.set_item("/test-module:user[name='nameB']", None)
     session.set_item("/test-module:user[name='nameC']", None)
     session.set_item("/test-module:user[name='nameD']", None)
     session.commit()
Beispiel #8
0
 def restartConnection(self):
     try:
         self.sr = sr.Connection(self.name, self.conn)
     except RuntimeError as r:
         if self.conn == sr.SR_CONN_DAEMON_REQUIRED and r.message == "The peer disconnected":
             sleep(1)  #wait for daemon to start
             self.sr = sr.Connection(self.name, self.conn)
         else:
             raise r
     self.session = sr.Session(self.sr, self.ds)
Beispiel #9
0
 def test_commit_empty(self):
     TestModule.create_test_module()
     connection = sr.Connection("name")
     session = sr.Session(self.conn, sr.SR_DS_STARTUP)
     v_old = self.session.get_item("/test-module:main/string")
     self.session.delete_item("/test-module:*")
     self.session.commit()
     #test random leaf that was deleted
     v_none = self.session.get_item("/test-module:main/string")
     self.assertIsNone(v_none)
     self.session.set_item("/test-module:main/string", v_old)
     self.session.commit()
     TestModule.create_test_module()
Beispiel #10
0
def perf_get_subtree_with_data_load_test(state, op_num, items):

    conn = state["connection"]
    assert conn is not None, "Unable to get connection."

    xpath = "/example-module:container/list[key1='key0'][key2='key0']/leaf"

    for i in range(op_num):
        sess = sr.Session(conn, state['datastore'])
        tree = sess.get_subtree(xpath)
        assert tree is not None, "check if empty"

    return 1
Beispiel #11
0
def perf_get_items_test(state, op_num, items):

    conn = state["connection"]
    assert conn is not None, "Unable to get connection."
    sess = sr.Session(conn, state['datastore'])
    assert sess is not None, "Unable to get session."

    xpath = "/example-module:container/list/leaf"

    for i in range(op_num):
        val = sess.get_items(xpath)

    return 1
Beispiel #12
0
def perf_get_item_with_data_load_test(state, op_num, items):

    conn = state["connection"]
    assert conn is not None, "Unable to get connection."

    xpath = "/example-module:container/list[key1='key0'][key2='key0']/leaf"

    for i in range(op_num):
        sess = sr.Session(conn, state['datastore'])

        val = sess.get_item(xpath)
        assert val.type() is sr.SR_STRING_T, "check value type"

    return 1
Beispiel #13
0
def perf_get_item_first_test(state, op_num, items):

    conn = state["connection"]
    assert conn is not None, "Unable to get connection."
    sess = sr.Session(conn, state['datastore'])
    assert sess is not None, "Unable to get session."

    xpath = "/example-module:container"

    for i in range(op_num):
        val = sess.get_item(xpath)
        assert val.type() is sr.SR_CONTAINER_T, "check value type"

    return 1
Beispiel #14
0
def perf_get_subtrees_test(state, op_num, items):

    conn = state["connection"]
    assert conn is not None, "Unable to get connection."
    sess = sr.Session(conn, state['datastore'])
    assert sess is not None, "Unable to get session."

    xpath = "/example-module:container/list/leaf"

    for i in range(op_num):
        trees = sess.get_subtrees(xpath)
        assert trees.tree(0) is not None, "check if empty"

    return trees.tree_cnt()
Beispiel #15
0
def perf_set_delete_test(state, op_num, items):

    conn = state["connection"]
    assert conn is not None, "Unable to get connection."
    sess = sr.Session(conn, state['datastore'])
    assert sess is not None, "Unable to get session."

    xpath = "/example-module:container/list[key1='set_del'][key2='set_1']/leaf"

    for i in range(op_num):
        val = sr.Val("Leaf", sr.SR_STRING_T)
        sess.set_item(xpath, val)

        sess.delete_item(xpath)

    return 1 * 3 * 2
Beispiel #16
0
def perf_get_ietf_intefaces_tree_test(state, op_num, items):

    conn = state["connection"]
    assert conn is not None, "Unable to get connection."
    sess = sr.Session(conn, state['datastore'])
    assert sess is not None, "Unable to get session."
    count = 0

    xpath = "/ietf-interfaces:interfaces/."

    for i in range(op_num):
        trees = sess.get_subtrees(xpath)
        assert trees.tree(0) is not None, "check if empty"
        count = count + get_nodes_cnt(trees)

    return count
Beispiel #17
0
def createDataTreeLargeExampleModule(count, datastore):
    """
    Add data to example-module.
    """
    conn = sr.Connection("load test")
    sess = sr.Session(conn, datastore)
    subs = sr.Subscribe(sess)

    for i in range(count):
        xpath = "/example-module:container/list[key1='key" + str(
            i) + "'][key2='key" + str(i) + "']/leaf"
        val = sr.Val("leaf" + str(i), sr.SR_STRING_T)

        sess.set_item(xpath, val)

    sess.commit()
Beispiel #18
0
def create_ietf_interfaces():
    connection = sr.Connection("ietf-interfaces")

    session = sr.Session(connection, sr.SR_DS_STARTUP)
    session.delete_item("/ietf-interfaces:*")

    v = sr.Val("iana-if-type:ethernetCsmacd", sr.SR_IDENTITYREF_T)
    session.set_item("/ietf-interfaces:interfaces/interface[name='eth0']/type", v)

    v = sr.Val("Ethernet 0", sr.SR_STRING_T);
    session.set_item("/ietf-interfaces:interfaces/interface[name='eth0']/description", v)

    v = sr.Val(True, sr.SR_BOOL_T);
    session.set_item("/ietf-interfaces:interfaces/interface[name='eth0']/enabled", v)

    v = sr.Val(24, sr.SR_UINT8_T)
    session.set_item("/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/address[ip='192.168.2.100']/prefix-length", v)

    v = sr.Val(True, sr.SR_BOOL_T)
    session.set_item("/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/enabled", v)

    v = sr.Val(1500, sr.SR_UINT16_T)
    session.set_item("/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/mtu", v)

    v = sr.Val("iana-if-type:ethernetCsmacd", sr.SR_IDENTITYREF_T)
    session.set_item("/ietf-interfaces:interfaces/interface[name='eth1']/type", v)

    v = sr.Val("Ethernet 1", sr.SR_STRING_T);
    session.set_item("/ietf-interfaces:interfaces/interface[name='eth1']/description", v)

    v = sr.Val(True, sr.SR_BOOL_T)
    session.set_item("/ietf-interfaces:interfaces/interface[name='eth1']/ietf-ip:ipv4/enabled", v)

    v = sr.Val(1500, sr.SR_UINT16_T)
    session.set_item("/ietf-interfaces:interfaces/interface[name='eth1']/ietf-ip:ipv4/mtu", v)

    v = sr.Val("iana-if-type:ethernetCsmacd", sr.SR_IDENTITYREF_T)
    session.set_item("/ietf-interfaces:interfaces/interface[name='gigaeth0']/type", v)

    v = sr.Val("GigabitEthernet 0", sr.SR_STRING_T);
    session.set_item("/ietf-interfaces:interfaces/interface[name='gigaeth0']/description", v)

    v = sr.Val(False, sr.SR_BOOL_T);
    session.set_item("/ietf-interfaces:interfaces/interface[name='gigaeth0']/enabled", v)

    session.commit()
Beispiel #19
0
def createDataTreeLargeIETFinterfacesModule(count, datastore):
    """
    Add data to ietf-interfaces.
    """
    conn = sr.Connection("load test")
    sess = sr.Session(conn, datastore)
    subs = sr.Subscribe(sess)

    for i in range(count):
        xpath = "/ietf-interfaces:interfaces/interface[name='eth" + str(
            i) + "']"
        xpath_ip = xpath + "/ietf-ip:ipv4/address[ip='192.168.1." + str(
            i) + "]"
        x_name = xpath + "/name"
        x_type = xpath + "/type"
        x_desc = xpath + "/description"
        x_enabled = xpath + "/enabled"

        x_ipv4_enabled = xpath + "/ietf-ip:ipv4/enabled"
        x_ipv4_mtu = xpath + "/ietf-ip:ipv4/mtu"
        x_ipv4_forward = xpath + "/ietf-ip:ipv4/forwarding"

        x_prefix_len = xpath_ip + "/prefix-length"

        val = sr.Val("Ethernet 0", sr.SR_STRING_T)
        sess.set_item(x_desc, val)

        val = sr.Val("iana-if-type:ethernetCsmacd", sr.SR_IDENTITYREF_T)
        sess.set_item(x_type, val)

        val = sr.Val(True, sr.SR_BOOL_T)
        sess.set_item(x_enabled, val)

        val = sr.Val(True, sr.SR_BOOL_T)
        sess.set_item(x_ipv4_enabled, val)

        val = sr.Val(1500, sr.SR_UINT16_T)
        sess.set_item(x_ipv4_mtu, val)

        val = sr.Val(False, sr.SR_BOOL_T)
        sess.set_item(x_ipv4_forward, val)

    sess.commit()
Beispiel #20
0
def perf_get_items_iter_test(state, op_num, items):

    conn = state["connection"]
    assert conn is not None, "Unable to get connection."
    sess = sr.Session(conn, state['datastore'])
    assert sess is not None, "Unable to get session."

    xpath = "/example-module:container/list/leaf"

    count = 0
    for i in range(op_num):
        it = sess.get_items_iter(xpath)
        assert it is not None, "Iterator not found"
        while True:
            val = sess.get_item_next(it)
            if val == None: break
            count = count + 1

    return count
Beispiel #21
0
def perf_get_ietf_interfaces_test(state, op_num, items):

    conn = state["connection"]
    assert conn is not None, "Unable to get connection."
    sess = sr.Session(conn, state['datastore'])
    assert sess is not None, "Unable to get session."

    xpath = "/ietf-interfaces:interfaces//*"

    count = 0
    for i in range(op_num):
        it = sess.get_items_iter(xpath)
        assert it is not None, "Iterator not found"
        while True:
            val = sess.get_item_next(it)
            if val == None: break
            count = count + 1

    return count
Beispiel #22
0
def clearDataTree(module_name, datastore):
    """
    Clear yang model.
    """

    conn = sr.Connection("clear")
    sess = sr.Session(conn, datastore)
    subs = sr.Subscribe(sess)

    xpath = "/" + module_name + ":*//*"

    values = sess.get_items(xpath)

    if values == None:
        return

    for i in range(values.val_cnt()):
        sess.delete_item(values.val(i).xpath())

    sess.commit()
Beispiel #23
0
import libsysrepoPython3 as sr
import sys

conn = sr.Connection("get_subtree.py")
sess = sr.Session(conn, sr.SR_DS_STARTUP)
invalid_xpath = "/nemea-tests-1:nemea-supervisor/module-group[name='Detectors']/module[name['m1']"
values = sess.get_subtree(invalid_xpath)

Beispiel #24
0
 def setup(self):
     if self.autoconnect:
         self.sr = sr.Connection(self.name, self.conn)
         self.session = sr.Session(self.sr, self.ds)
Beispiel #25
0
# Notable difference between c implementation is using exception mechanism for open handling unexpected events.
# Here it is useful because `Conenction`, `Session` and `Subscribe` could throw an exception.
try:
    module_name = "ietf-interfaces"
    if len(sys.argv) > 1:
        module_name = sys.argv[1]
    else:
        print(
            "\nYou can pass the module name to be subscribed as the first argument"
        )

    # connect to sysrepo
    conn = sr.Connection("example_application")

    # start session
    sess = sr.Session(conn)

    # subscribe for changes in running config */
    subscribe = sr.Subscribe(sess)

    subscribe.module_change_subscribe(
        module_name, module_change_cb, None, 0,
        sr.SR_SUBSCR_DEFAULT | sr.SR_SUBSCR_APPLY_ONLY)

    print("\n\n ========== READING STARTUP CONFIG: ==========\n")
    try:
        print_current_config(sess, module_name)
    except Exception as e:
        print(e)

    print("\n\n ========== STARTUP CONFIG APPLIED AS RUNNING ==========\n")
Beispiel #26
0
def create_test_module():
    connection = sr.Connection("test-module")

    session = sr.Session(connection, sr.SR_DS_STARTUP)
    session.delete_item("/test-module:*")

    v = sr.Val(XP_TEST_MODULE_ENUM_VALUE, sr.SR_ENUM_T)
    session.set_item(XP_TEST_MODULE_ENUM, v)

    v = sr.Val(XP_TEST_MODULE_RAW_VALUE, sr.SR_BINARY_T)
    session.set_item(XP_TEST_MODULE_RAW, v)

    v = sr.Val(XP_TEST_MODULE_BITS_VALUE, sr.SR_BITS_T)
    session.set_item(XP_TEST_MODULE_BITS, v)

    v = sr.Val(XP_TEST_MODULE_BOOL_VALUE_T, sr.SR_BOOL_T)
    session.set_item(XP_TEST_MODULE_BOOL, v)

    v = sr.Val(XP_TEST_MODULE_DEC64_VALUE_T)
    session.set_item(XP_TEST_MODULE_DEC64, v)

    v = sr.Val(None, sr.SR_LEAF_EMPTY_T)
    session.set_item(XP_TEST_MODULE_EMPTY, v)

    v = sr.Val(XP_TEST_MODULE_IDREF_VALUE, sr.SR_IDENTITYREF_T)
    session.set_item(XP_TEST_MODULE_IDREF, v)

    v = sr.Val(XP_TEST_MODULE_STRING_VALUE, sr.SR_STRING_T)
    session.set_item(XP_TEST_MODULE_STRING, v)

    v = sr.Val(XP_TEST_MODULE_INT8_VALUE_T, sr.SR_INT8_T)
    session.set_item(XP_TEST_MODULE_INT8, v)

    v = sr.Val(XP_TEST_MODULE_INT16_VALUE_T, sr.SR_INT16_T)
    session.set_item(XP_TEST_MODULE_INT16, v)

    v = sr.Val(XP_TEST_MODULE_INT32_VALUE_T, sr.SR_INT32_T)
    session.set_item(XP_TEST_MODULE_INT32, v)

    v = sr.Val(XP_TEST_MODULE_INT64_VALUE_T, sr.SR_INT64_T)
    session.set_item(XP_TEST_MODULE_INT64, v)

    v = sr.Val(XP_TEST_MODULE_UINT8_VALUE_T, sr.SR_UINT8_T)
    session.set_item(XP_TEST_MODULE_UINT8, v)

    v = sr.Val(XP_TEST_MODULE_UINT16_VALUE_T, sr.SR_UINT16_T)
    session.set_item(XP_TEST_MODULE_UINT16, v)

    v = sr.Val(XP_TEST_MODULE_UINT32_VALUE_T, sr.SR_UINT32_T)
    session.set_item(XP_TEST_MODULE_UINT32, v)

    v = sr.Val(XP_TEST_MODULE_UINT64_VALUE_T, sr.SR_UINT64_T)
    session.set_item(XP_TEST_MODULE_UINT64, v)

    for num in [1, 2, 42]:
        v = sr.Val(num, sr.SR_UINT8_T)
        session.set_item("/test-module:main/numbers", v)

    session.set_item("/test-module:list[key='k1']", None)
    v = sr.Val("id_1", sr.SR_IDENTITYREF_T)
    session.set_item("/test-module:list[key='k1']/id_ref", v)

    v = sr.Val(None, sr.SR_CONTAINER_PRESENCE_T)
    session.set_item("/test-module:list[key='k1']/wireless", v)

    session.set_item("/test-module:list[key='k2']", None)
    v = sr.Val("id_2", sr.SR_IDENTITYREF_T)
    session.set_item("/test-module:list[key='k2']/id_ref", v)

    session.commit()
Beispiel #27
0
 def setUp(self):
     TestModule.create_test_module()
     self.session = sr.Session(self.conn, sr.SR_DS_STARTUP)
Beispiel #28
0
try:
    module_name = "ietf-interfaces"
    if len(sys.argv) > 1:
        module_name = sys.argv[1]
    else:
        print(
            "\nYou can pass the module name to be subscribed as the first argument"
        )

    print("Application will watch for changes in ", module_name, "\n")

    # connect to sysrepo
    conn = sr.Connection("example_application")

    # start session
    sess = sr.Session(conn, sr.SR_DS_RUNNING)

    # subscribe for changes in running config */
    subscribe = sr.Subscribe(sess)

    subscribe.module_change_subscribe(module_name, module_change_cb)

    print("\n\n ========== READING STARTUP CONFIG: ==========\n")
    try:
        print_current_config(sess, module_name)
    except Exception as e:
        print(e)

    print("\n\n ========== STARTUP CONFIG APPLIED AS RUNNING ==========\n")

    sr.global_loop()