Example #1
0
def main():
	print("""
#Demonstrate <get> with xpath filter returns keys for each list container part of the result
##Procedure:
##1 - Call <get> with /interfaces-state/interface/statistics xpath filter
##2 - Verify each /interfaces-state/interface container returned has 'name' key
""")
	server=os.environ.get('YUMA_AGENT_IPADDR') #e.g. "192.168.209.31"
	port=os.environ.get('YUMA_AGENT_PORT') #e.g. "830"
	user=os.environ.get('YUMA_AGENT_USER') #e.g. "root"
	password=os.environ.get('YUMA_AGENT_PASSWORD') #e.g. "hadm1_123"
	my_netconf = netconf.netconf()

	sys.stderr.write("Connect to (server=%(server)s):\n" % {'server':server})
	ret=my_netconf.connect("server=%(server)s port=%(port)s user=%(user)s password=%(password)s" % {'server':server,'port':port,'user':user,'password':password})
	if ret != 0:
		sys.stderr.write("Connect: FAILED\n")
		return (-1)

	(ret, reply_xml) = my_netconf.rpc("""
<hello>
  <capabilities>
    <capability>urn:ietf:params:netconf:base:1.0</capability>
  </capabilities>
</hello>
""")
	if ret != 0:
		sys.stderr.write("Hello: FAILED\n")
		return (-1)

        rpc = """
<rpc message-id="1"
  xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <get xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
    <filter type="xpath" select="/interfaces-state/interface/statistics"/>
  </get>
</rpc>
"""
        (ret, reply_xml) = my_netconf.rpc(rpc)
        if ret != 0:
                sys.stderr.write("Create: FAILED\n")
                return (-1)
        if detect_rpc_error(reply_xml):
                sys.stderr.write("rpc_reply contains rpc-error: FAILED\n")
                sys.stderr.write(reply_xml)
                return (-1)

        doc = libxml2.parseDoc(reply_xml)
        ctxt = doc.xpathNewContext()
        ctxt.xpathRegisterNs("nc","urn:ietf:params:xml:ns:netconf:base:1.0")
        ctxt.xpathRegisterNs("if","urn:ietf:params:xml:ns:yang:ietf-interfaces")
        res_interface = ctxt.xpathEval('/nc:rpc-reply/nc:data/if:interfaces-state/if:interface')
        res_name = ctxt.xpathEval('/nc:rpc-reply/nc:data/if:interfaces-state/if:interface/if:name')
        if len(res_interface) != len(res_name):
            sys.stderr.write("The count of interface containers does not match the count of the interface/name keys\n")
            sys.stderr.write(reply_xml)
            return(-1)
        return 0
Example #2
0
def main():
	print("""
Demonstrate shutdown operation (WARNING: netconf server must be manualy restarted following this test).
#Procedure:
#1 - Shutdown
#2 - Try another query
#3 - Check that no response is received
""")
	server=os.environ.get('YUMA_AGENT_IPADDR') #e.g. "192.168.209.31"
	port=os.environ.get('YUMA_AGENT_PORT') #e.g. "830"
	user=os.environ.get('YUMA_AGENT_USER') #e.g. "root"
	password=os.environ.get('YUMA_AGENT_PASSWORD') #e.g. "hadm1_123"
	my_netconf = netconf.netconf()

	sys.stderr.write("Connect to (server=%(server)s):\n" % {'server':server})
	ret=my_netconf.connect("server=%(server)s port=%(port)s user=%(user)s password=%(password)s" % {'server':server,'port':port,'user':user,'password':password})
	if ret != 0:
		sys.stderr.write("Connect: FAILED\n")
		return (-1)

	(ret, reply_xml) = my_netconf.rpc("""
<hello>
  <capabilities>
    <capability>urn:ietf:params:netconf:base:1.0</capability>
  </capabilities>
</hello>
""")
	if ret != 0:
		sys.stderr.write("Hello: FAILED\n")
		return (-1)

	shutdown_rpc = """
<rpc message-id="000" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <shutdown xmlns="http://netconfcentral.org/ns/yuma-system"/>
</rpc>
"""
	(ret, reply_xml) = my_netconf.rpc(shutdown_rpc)
	if ret != 0:
		sys.stderr.write("Shutdown: FAILED\n")
		return (-1)

	time.sleep(1)

	(ret, reply_xml) = my_netconf.rpc(shutdown_rpc)
	if ret == 0:
		sys.stderr.write("Shutdown did not take effect: FAILED\n")
		return (-1)

	return 0
Example #3
0
def main():
    print("""
#Demonstrate <get> with xpath filter returns keys for each list container part of the result
##Procedure:
##1 - Call <get> with /interfaces-state/interface/statistics xpath filter
##2 - Verify each /interfaces-state/interface container returned has 'name' key
""")
    server = os.environ.get('YUMA_AGENT_IPADDR')  #e.g. "192.168.209.31"
    port = os.environ.get('YUMA_AGENT_PORT')  #e.g. "830"
    user = os.environ.get('YUMA_AGENT_USER')  #e.g. "root"
    password = os.environ.get('YUMA_AGENT_PASSWORD')  #e.g. "hadm1_123"
    my_netconf = netconf.netconf()

    sys.stderr.write("Connect to (server=%(server)s):\n" % {'server': server})
    ret = my_netconf.connect(
        "server=%(server)s port=%(port)s user=%(user)s password=%(password)s" %
        {
            'server': server,
            'port': port,
            'user': user,
            'password': password
        })
    if ret != 0:
        sys.stderr.write("Connect: FAILED\n")
        return (-1)

    (ret, reply_xml) = my_netconf.rpc("""
<hello>
  <capabilities>
    <capability>urn:ietf:params:netconf:base:1.0</capability>
  </capabilities>
</hello>
""")
    if ret != 0:
        sys.stderr.write("Hello: FAILED\n")
        return (-1)

    rpc = """
<rpc message-id="1"
  xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <get xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
    <filter type="xpath" select="/interfaces-state/interface/statistics"/>
  </get>
</rpc>
"""
    (ret, reply_xml) = my_netconf.rpc(rpc)
    if ret != 0:
        sys.stderr.write("Create: FAILED\n")
        return (-1)
    if detect_rpc_error(reply_xml):
        sys.stderr.write("rpc_reply contains rpc-error: FAILED\n")
        sys.stderr.write(reply_xml)
        return (-1)

    doc = libxml2.parseDoc(reply_xml)
    ctxt = doc.xpathNewContext()
    ctxt.xpathRegisterNs("nc", "urn:ietf:params:xml:ns:netconf:base:1.0")
    ctxt.xpathRegisterNs("if", "urn:ietf:params:xml:ns:yang:ietf-interfaces")
    res_interface = ctxt.xpathEval(
        '/nc:rpc-reply/nc:data/if:interfaces-state/if:interface')
    res_name = ctxt.xpathEval(
        '/nc:rpc-reply/nc:data/if:interfaces-state/if:interface/if:name')
    if len(res_interface) != len(res_name):
        sys.stderr.write(
            "The count of interface containers does not match the count of the interface/name keys\n"
        )
        sys.stderr.write(reply_xml)
        return (-1)
    return 0
Example #4
0
def main():
    print("""
Demonstrate ietf-system:system-restart RPC operation
#Procedure:
#1 - Send ietf-system:system-restart RPC.
#2 - Confirm there is no error.
#3 - Immediately attempt new connection.
#4 - Confirm the attempt fails.
#5 - Keep attempting to connect for up to 120 sec.
#6 - Confirm the attempt succeeds.
""")
    server = os.environ.get('YUMA_AGENT_IPADDR')  #e.g. "192.168.209.31"
    port = os.environ.get('YUMA_AGENT_PORT')  #e.g. "830"
    user = os.environ.get('YUMA_AGENT_USER')  #e.g. "root"
    password = os.environ.get('YUMA_AGENT_PASSWORD')  #e.g. "hadm1_123"
    my_netconf = netconf.netconf()

    sys.stderr.write("Connect to (server=%(server)s):\n" % {'server': server})
    ret = my_netconf.connect(
        "server=%(server)s port=%(port)s user=%(user)s password=%(password)s" %
        {
            'server': server,
            'port': port,
            'user': user,
            'password': password
        })
    if ret != 0:
        sys.stderr.write("Connect: FAILED\n")
        return (-1)

    (ret, reply_xml) = my_netconf.rpc("""
<hello>
  <capabilities>
    <capability>urn:ietf:params:netconf:base:1.0</capability>
  </capabilities>
</hello>
""")
    if ret != 0:
        sys.stderr.write("Hello: FAILED\n")
        return (-1)

    system_restart_rpc = """
<rpc message-id="000" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <system-restart xmlns="urn:ietf:params:xml:ns:yang:ietf-system"/>
</rpc>
"""
    (ret, reply_xml) = my_netconf.rpc(system_restart_rpc)
    if ret != 0:
        sys.stderr.write("Restart: FAILED\n")
        return (-1)

    if detect_rpc_error(reply_xml):
        sys.stderr.write("rpc_reply contains rpc-error: FAILED\n")
        sys.stderr.write(reply_xml)
        return (-1)

    time.sleep(1)

    (ret, reply_xml) = my_netconf.rpc(system_restart_rpc)
    if ret == 0:
        sys.stderr.write("Restart did not take effect: FAILED\n")
        return (-1)

    time.sleep(10)

    my_netconf = netconf.netconf()

    sys.stderr.write("Connect to (server=%(server)s):\n" % {'server': server})
    ret = my_netconf.connect(
        "server=%(server)s port=%(port)s user=%(user)s password=%(password)s" %
        {
            'server': server,
            'port': port,
            'user': user,
            'password': password
        })
    if ret == 0:
        sys.stderr.write("Connect should have not succeeded: FAILED\n")
        return (-1)

    start = time.time()
    while ((time.time() - start) < 120):
        my_netconf = netconf.netconf()

        sys.stderr.write("Connect to (server=%(server)s):\n" %
                         {'server': server})
        ret = my_netconf.connect(
            "server=%(server)s port=%(port)s user=%(user)s password=%(password)s"
            % {
                'server': server,
                'port': port,
                'user': user,
                'password': password
            })
        if ret == 0:
            sys.stdout.write("Restart completed in %(seconds)d sec.\n" %
                             {'seconds': time.time() - start})
            return 0

    sys.stderr.write("Timeout!\n")
    return (-1)
Example #5
0
def main():
	print("""
Demonstrate ietf-system:system-restart RPC operation
#Procedure:
#1 - Send ietf-system:system-restart RPC.
#2 - Confirm there is no error.
#3 - Immediately attempt new connection.
#4 - Confirm the attempt fails.
#5 - Keep attempting to connect for up to 120 sec.
#6 - Confirm the attempt succeeds.
""")
	server=os.environ.get('YUMA_AGENT_IPADDR') #e.g. "192.168.209.31"
	port=os.environ.get('YUMA_AGENT_PORT') #e.g. "830"
	user=os.environ.get('YUMA_AGENT_USER') #e.g. "root"
	password=os.environ.get('YUMA_AGENT_PASSWORD') #e.g. "hadm1_123"
	my_netconf = netconf.netconf()

	sys.stderr.write("Connect to (server=%(server)s):\n" % {'server':server})
	ret=my_netconf.connect("server=%(server)s port=%(port)s user=%(user)s password=%(password)s" % {'server':server,'port':port,'user':user,'password':password})
	if ret != 0:
		sys.stderr.write("Connect: FAILED\n")
		return (-1)

	(ret, reply_xml) = my_netconf.rpc("""
<hello>
  <capabilities>
    <capability>urn:ietf:params:netconf:base:1.0</capability>
  </capabilities>
</hello>
""")
	if ret != 0:
		sys.stderr.write("Hello: FAILED\n")
		return (-1)

	system_restart_rpc = """
<rpc message-id="000" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <system-restart xmlns="urn:ietf:params:xml:ns:yang:ietf-system"/>
</rpc>
"""
	(ret, reply_xml) = my_netconf.rpc(system_restart_rpc)
	if ret != 0:
		sys.stderr.write("Restart: FAILED\n")
		return (-1)

        if detect_rpc_error(reply_xml):
                sys.stderr.write("rpc_reply contains rpc-error: FAILED\n")
                sys.stderr.write(reply_xml)
                return (-1)

        time.sleep(1)

	(ret, reply_xml) = my_netconf.rpc(system_restart_rpc)
	if ret == 0:
		sys.stderr.write("Restart did not take effect: FAILED\n")
		return (-1)

        time.sleep(10)

	my_netconf = netconf.netconf()

	sys.stderr.write("Connect to (server=%(server)s):\n" % {'server':server})
	ret=my_netconf.connect("server=%(server)s port=%(port)s user=%(user)s password=%(password)s" % {'server':server,'port':port,'user':user,'password':password})
	if ret == 0:
		sys.stderr.write("Connect should have not succeeded: FAILED\n")
		return (-1)

	start = time.time()
	while((time.time()-start)<120):
		my_netconf = netconf.netconf()

		sys.stderr.write("Connect to (server=%(server)s):\n" % {'server':server})
		ret=my_netconf.connect("server=%(server)s port=%(port)s user=%(user)s password=%(password)s" % {'server':server,'port':port,'user':user,'password':password})
		if ret == 0:
			sys.stdout.write("Restart completed in %(seconds)d sec.\n" % {'seconds':time.time()-start})
			return 0

	sys.stderr.write("Timeout!\n")
	return(-1)