Esempio n. 1
0
def connect(server, port, user, password):
    conn = yangrpc.connect(server, port, user, password,
                           os.getenv('HOME') + "/.ssh/id_rsa.pub",
                           os.getenv('HOME') + "/.ssh/id_rsa",
                           "--dump-session=tmp/nc-session-")
    if (conn == None):
        print("Error: yangrpc failed to connect!")
        return (-1)

    return conn
Esempio n. 2
0
def connect(server, port, user, password):
    conn = yangrpc.connect(
        server, port, user, password,
        os.getenv('HOME') + "/.ssh/id_rsa.pub",
        os.getenv('HOME') + "/.ssh/id_rsa",
        "--dump-session=tmp/nc-session- --keep-session-model-copies-after-compilation=true"
    )
    if (conn == None):
        print("Error: yangrpc failed to connect!")

    return conn
Esempio n. 3
0
def network_connect_yangrpc(network):

    yconns = {}
    if (yangcli_supported != True):
        return network_connect(network)
    network_id = network.xpath('nd:network-id', namespaces=namespaces)
    print("Connecting to YANG network: " + network_id[0].text)
    nodes = network.xpath('nd:node', namespaces=namespaces)
    for node in nodes:
        node_id = node.xpath('nd:node-id', namespaces=namespaces)[0].text
        server = node.xpath(
            'netconf-node:netconf-connect-params/netconf-node:server',
            namespaces=namespaces)[0].text
        user = node.xpath(
            'netconf-node:netconf-connect-params/netconf-node:user',
            namespaces=namespaces)[0].text
        if (1 == len(
                node.xpath(
                    'netconf-node:netconf-connect-params/netconf-node:password',
                    namespaces=namespaces))):
            password = node.xpath(
                'netconf-node:netconf-connect-params/netconf-node:password',
                namespaces=namespaces)[0].text
        else:
            password = None
        ncport = node.xpath(
            'netconf-node:netconf-connect-params/netconf-node:ncport',
            namespaces=namespaces)[0].text

        print "Connect to YANG device " + node_id + " (server=%(server)s user=%(user)s) password=%(password)s ncport=%(ncport)s:" % {
            'server': server,
            'user': user,
            'password': password,
            'ncport': ncport
        }
        yconns[node_id] = yangrpc.connect(
            server, int(ncport), user, password,
            os.getenv('HOME') + "/.ssh/id_rsa.pub",
            os.getenv('HOME') + "/.ssh/id_rsa", "--dump-session=nc-session-")

        if yconns[node_id] == None:
            print "FAILED connect"
            return (None)
        else:
            print "OK"
    return yconns
def main():
	print("""
#Description: Configure the H100 with example configuration from the userguide.
#Procedure:
#1 - Create the configuration described in the user guide.
#2 - Commit.
""")

	parser = argparse.ArgumentParser()
	parser.add_argument("--server", help="server name e.g. 127.0.0.1 or server.com (127.0.0.1 if not specified)")
	parser.add_argument("--user", help="username e.g. admin ($USER if not specified)")
	parser.add_argument("--port", help="port e.g. 830 (830 if not specified)")
	parser.add_argument("--password", help="password e.g. mypass123 (passwordless if not specified)")

	args = parser.parse_args()

	if(args.server==None or args.server==""):
		server="127.0.0.1"
	else:
		server=args.server

	if(args.port==None or args.port==""):
		port=830
	else:
		port=int(args.port)

	if(args.user==None or args.user==""):
		user=os.getenv('USER')
	else:
		user=args.user

	if(args.password==None or args.password==""):
		password=None
	else:
		password=args.password

	conn = yangrpc.connect(server, port, user, password, os.getenv('HOME')+"/.ssh/id_rsa.pub", os.getenv('HOME')+"/.ssh/id_rsa", "--dump-session=nc-session-")
	if(conn==None):
		print("Error: yangrpc failed to connect!")
		return(-1)

	time.sleep(1)


	#cleanup
	yangcli(conn, '''delete /fusion-streams''')
	ok = yangcli(conn, '''commit''').xpath('./ok')
	assert(len(ok)==1)

	yangcli_script='''
create /fusion-streams/drop-and-forward[in-port='n0'][filter-rule='matched-tpid'] -- priority=gst filter/tpid=88F7 push-vlan-tag/vlanid=100 push-vlan-tag/pcp=0 push-vlan-tag/tpid=9100 push-vlan-tag/cfi=1 forward/pop-vlan-tag=false drop[out-port='e0']/pop-vlan-tag=true drop[out-port='e1']/pop-vlan-tag=true drop[out-port='e2']/pop-vlan-tag=true drop[out-port='e3']/pop-vlan-tag=true drop[out-port='e4']/pop-vlan-tag=true
create /fusion-streams/drop-and-forward[in-port='n0'][filter-rule='unmatched'] -- priority=sm push-vlan-tag/vlanid=200 push-vlan-tag/pcp=0 push-vlan-tag/tpid=9100 push-vlan-tag/cfi=1 forward/pop-vlan-tag=false

create /fusion-streams/aggregation[in-port='e0']/sm -- out-port=n1 push-vlan-tag/vlanid=10 push-vlan-tag/pcp=0 push-vlan-tag/tpid=9100 push-vlan-tag/cfi=1
create /fusion-streams/aggregation[in-port='e1']/sm -- out-port=n1 push-vlan-tag/vlanid=11 push-vlan-tag/pcp=0 push-vlan-tag/tpid=9100 push-vlan-tag/cfi=1
create /fusion-streams/aggregation[in-port='e2']/sm -- out-port=n1 push-vlan-tag/vlanid=12 push-vlan-tag/pcp=0 push-vlan-tag/tpid=9100 push-vlan-tag/cfi=1
create /fusion-streams/aggregation[in-port='e3']/sm -- out-port=n1 push-vlan-tag/vlanid=13 push-vlan-tag/pcp=0 push-vlan-tag/tpid=9100 push-vlan-tag/cfi=1
create /fusion-streams/aggregation[in-port='e4']/sm -- out-port=n1 push-vlan-tag/vlanid=14 push-vlan-tag/pcp=0 push-vlan-tag/tpid=9100 push-vlan-tag/cfi=1

create /fusion-streams/aggregation[in-port='e0']/gst -- out-port=n0 filter/ether-type=88F7 filter/tpid=88F7 filter/vlanid=1
create /fusion-streams/aggregation[in-port='e1']/gst -- out-port=n0 filter/ether-type=88F7 filter/tpid=88F7 filter/vlanid=1
create /fusion-streams/aggregation[in-port='e2']/gst -- out-port=n0 filter/ether-type=88F7 filter/tpid=88F7 filter/vlanid=1
create /fusion-streams/aggregation[in-port='e3']/gst -- out-port=n0 filter/ether-type=88F7 filter/tpid=88F7 filter/vlanid=1
create /fusion-streams/aggregation[in-port='e4']/gst -- out-port=n0 filter/ether-type=88F7 filter/tpid=88F7 filter/vlanid=1

create /fusion-streams/drop-and-forward[in-port='n1'][filter-rule='100'] -- priority=gst filter/tpid=9100 forward/pop-vlan-tag=true
create /fusion-streams/drop-and-forward[in-port='n1'][filter-rule='200'] -- priority=sm filter/tpid=9100 forward/pop-vlan-tag=true

create /fusion-streams/drop-and-forward[in-port='n1'][filter-rule='10'] -- priority=sm filter/tpid=9100 drop[out-port='e0']/pop-vlan-tag=true
create /fusion-streams/drop-and-forward[in-port='n1'][filter-rule='11'] -- priority=sm filter/tpid=9100 drop[out-port='e1']/pop-vlan-tag=true
create /fusion-streams/drop-and-forward[in-port='n1'][filter-rule='12'] -- priority=sm filter/tpid=9100 drop[out-port='e2']/pop-vlan-tag=true
create /fusion-streams/drop-and-forward[in-port='n1'][filter-rule='13'] -- priority=sm filter/tpid=9100 drop[out-port='e3']/pop-vlan-tag=true
create /fusion-streams/drop-and-forward[in-port='n1'][filter-rule='14'] -- priority=sm filter/tpid=9100 drop[out-port='e4']/pop-vlan-tag=true

commit
'''
	yangcli_ok_script(conn, yangcli_script)


	return(0)
Esempio n. 5
0
def main():
	print("""
#Description: Connects and updates the display according to the configuration.
#Procedure:
#1 - Open session.
#2 - Loop reading configuration and displaying text.
""")

	parser = argparse.ArgumentParser()
	parser.add_argument("--server", help="server name e.g. 127.0.0.1 or server.com (127.0.0.1 if not specified)")
	parser.add_argument("--user", help="username e.g. admin ($USER if not specified)")
	parser.add_argument("--port", help="port e.g. 830 (830 if not specified)")
	parser.add_argument("--password", help="password e.g. mypass123 (passwordless if not specified)")

	args = parser.parse_args()

	if(args.server==None or args.server==""):
		server="127.0.0.1"
	else:
		server=args.server

	if(args.port==None or args.port==""):
		port=830
	else:
		port=int(args.port)

	if(args.user==None or args.user==""):
		user=os.getenv('USER')
	else:
		user=args.user

	if(args.password==None or args.password==""):
		password=None
	else:
		password=args.password

	conn = yangrpc.connect(server, port, user, password, os.getenv('HOME')+"/.ssh/id_rsa.pub", os.getenv('HOME')+"/.ssh/id_rsa")
	if(conn==None):
		print("Error: yangrpc failed to connect!")
		return(-1)

	time.sleep(1)

	mylcd = I2C_LCD_driver.lcd()

	#zeroseg_led = led.sevensegment(cascaded=2)
	while(1):

		result = yangcli(conn, "xget /line-display")
		text = result.xpath('./data/line-display/text')
		if(len(text)!=1):
			instance_id = result.xpath('./data/line-display/instance-id')
			if(len(instance_id)==1):
				print instance_id[0].text
				update_interval = result.xpath('./data/line-display/update-interval')
				result2 = yangcli(conn, "xget %s"%(instance_id[0].text))
				text = result2.xpath('./data/%s'%(instance_id[0].text))
				mylcd.lcd_clear()
				mylcd.lcd_display_string(instance_id[0].text[-16:], 1)
				mylcd.lcd_display_string(text[0].text, 2)


		else:
			print text[0].text
			#zeroseg_led.write_text(1,text[0].text)
			mylcd.lcd_clear()
			mylcd.lcd_display_string(text[0].text, 1)
		time.sleep(1)

	return(0)
Esempio n. 6
0
from yangcli import yangcli
from lxml import etree
import yangrpc
import sys
import os

conn = yangrpc.connect("127.0.0.1", 830, os.getenv('USER'), "dummypass", os.getenv('HOME')+".ssh/id_rsa",os.getenv('HOME')+".ssh/id_rsa.pub")
if(conn==None):
    print("Error: yangrpc failed to connect!")
    sys.exit(1)


yangcli(conn, "create /interfaces/interface[name='blah']/type value='ethernetCsmacd'")
result=yangcli(conn, "commit")
assert(result.xpath('./ok'))

result=yangcli(conn, "xget /interfaces")
a=result.xpath('./data/interfaces/interface[name=\'blah\']/a')
b=result.xpath('./data/interfaces/interface[name=\'blah\']/b')

print(a[0].text)
assert(a[0].text=="Hello from a!")
print(b[0].text)
assert(b[0].text=="Hello from b!")

print("Done.")
Esempio n. 7
0
import yuma
import yangrpc
import sys

conn = yangrpc.connect("127.0.0.1", 830, "root", "mysecretpass","/root/.ssh/id_rsa","/root/.ssh/id_rsa.pub")
if(conn==None):
    print("Error: yangrpc failed to connect!")
    sys.exit(1)

(res, rpc_val) = yangrpc.parse_cli(conn, "xget /interfaces-state")
if(res!=0):
    print("Error: yangrpc failed to parse cli command!")
    sys.exit(1)

yuma.val_dump_value(rpc_val,1)

(res, reply_val) = yangrpc.rpc(conn, rpc_val)
if(res!=0):
    print("Error: yangrpc failed to execute rpc!")
    sys.exit(1)

yuma.val_dump_value(reply_val,1)

print("Done.")
Esempio n. 8
0
from yangcli import yangcli
from lxml import etree
import yangrpc
import sys
import os

conn = yangrpc.connect(
    "127.0.0.1",
    830,
    os.getenv("USER"),
    "dummypass",
    os.getenv("HOME") + ".ssh/id_rsa",
    os.getenv("HOME") + ".ssh/id_rsa.pub",
)
if conn == None:
    print("Error: yangrpc failed to connect!")
    sys.exit(1)


yangcli(conn, "replace /system/hostname value='ok3'")
yangcli(conn, "replace /system/location value='ok4'")
result = yangcli(conn, "commit")
assert result.xpath("./ok")

yangcli(conn, "replace /system/hostname value='error1'")
yangcli(conn, "replace /system/location value='ok5'")
result = yangcli(conn, "commit")
assert result.xpath("./rpc-error")
yangcli(conn, "discard-changes")

Esempio n. 9
0
def main():
	print("""
#Description: Usecase fo ietf-routing module.
#Procedure:
#1 - Create interface "eth0" of type=ethernetCsmacd with static ip=10.0.0.2/24 and static default route for destination-prefix=0.0.0.0/0 and next-hop=10.0.0.1.
#2 - Validate <get-data> returns identical result as the example in RFC8022 Appendix D.
""")

	parser = argparse.ArgumentParser()
	parser.add_argument("--server", help="server name e.g. 127.0.0.1 or server.com (127.0.0.1 if not specified)")
	parser.add_argument("--user", help="username e.g. admin ($USER if not specified)")
	parser.add_argument("--port", help="port e.g. 830 (830 if not specified)")
	parser.add_argument("--password", help="password e.g. mypass123 (passwordless if not specified)")

	args = parser.parse_args()

	if(args.server==None or args.server==""):
		server="127.0.0.1"
	else:
		server=args.server

	if(args.port==None or args.port==""):
		port=830
	else:
		port=int(args.port)

	if(args.user==None or args.user==""):
		user=os.getenv('USER')
	else:
		user=args.user

	if(args.password==None or args.password==""):
		password=None
	else:
		password=args.password

	conn = yangrpc.connect(server, port, user, password, os.getenv('HOME')+"/.ssh/id_rsa.pub", os.getenv('HOME')+"/.ssh/id_rsa", "--dump-session=tmp/nc-session-")
	if(conn==None):
		print("Error: yangrpc failed to connect!")
		return(-1)

	time.sleep(1)

	result = yangcli(conn, "delete /interfaces")
	result = yangcli(conn, "commit")
	ok = result.xpath('./ok')
	assert(len(ok)==1)

        yangcli_script='''
create /interfaces/interface -- name=eth0 type=ethernetCsmacd description="Uplink to ISP."
create /interfaces/interface[name='eth0']/ipv4/address -- ip=192.0.2.1 prefix-length=24
commit
'''

#create /interfaces/interface[name='eth0']/ipv4/forwarding value=true
#create /routes/control-plane-protocols/control-plane-protocol -- name=st0 type=static
#create /routes/control-plane-protocols/control-plane-protocol[name='st0']/static-routes/ipv4/route -- destination-prefix=0.0.0.0/0 next-hop/next-hop-address=192.0.2.2
#commit
#'''
	yangcli_ok_script(conn, yangcli_script)

	result = yangcli(conn, "get-data with-origin datastore=operational xpath-filter="/" )
	print lxml.etree.tostring(result)

	return(0)
Esempio n. 10
0
def main():
    print("""
#Description: Demonstrate that leaf values can be replaced.
#Procedure:
#1 - Create test-yang-library container. Verify commit succeeds.
""")

    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--server",
        help=
        "server name e.g. 127.0.0.1 or server.com (127.0.0.1 if not specified)"
    )
    parser.add_argument("--user",
                        help="username e.g. admin ($USER if not specified)")
    parser.add_argument("--port", help="port e.g. 830 (830 if not specified)")
    parser.add_argument(
        "--password",
        help="password e.g. mypass123 (passwordless if not specified)")

    args = parser.parse_args()

    if (args.server == None or args.server == ""):
        server = "127.0.0.1"
    else:
        server = args.server

    if (args.port == None or args.port == ""):
        port = 830
    else:
        port = int(args.port)

    if (args.user == None or args.user == ""):
        user = os.getenv('USER')
    else:
        user = args.user

    if (args.password == None or args.password == ""):
        password = None
    else:
        password = args.password

    conn = yangrpc.connect(server, port, user, password,
                           os.getenv('HOME') + "/.ssh/id_rsa.pub",
                           os.getenv('HOME') + "/.ssh/id_rsa")
    if (conn == None):
        print("Error: yangrpc failed to connect!")
        return (-1)

    time.sleep(1)

    result = yangcli(
        conn, '''xget /modules-state/module[name='test-yang-library'] ''')
    name = result.xpath('./data/modules-state/module/name')
    assert (len(name) == 1)
    conformance_type = result.xpath(
        './data/modules-state/module/conformance-type')
    assert (len(conformance_type) == 1)
    assert (conformance_type[0].text == "implement")

    result = yangcli(
        conn,
        '''xget /modules-state/module[name='test-yang-library-import'] ''')
    name = result.xpath('./data/modules-state/module/name')
    assert (len(name) == 1)
    conformance_type = result.xpath(
        './data/modules-state/module/conformance-type')
    assert (len(conformance_type) == 1)
    #assert(conformance_type[0].text=="import")

    ok = yangcli(conn, '''delete /foo''').xpath('./ok')

    ok = yangcli(conn, '''commit''').xpath('./ok')
    #assert(len(ok)==1)

    ok = yangcli(conn, '''create /foo''').xpath('./ok')
    assert (len(ok) == 1)

    ok = yangcli(conn, '''commit''').xpath('./ok')
    assert (len(ok) == 1)

    return (0)
Esempio n. 11
0
import yuma
import yangrpc
import sys

conn = yangrpc.connect("127.0.0.1", 830, "root", "mysecretpass",
                       "/root/.ssh/id_rsa", "/root/.ssh/id_rsa.pub")
if (conn == None):
    print("Error: yangrpc failed to connect!")
    sys.exit(1)

(res, rpc_val) = yangrpc.parse_cli(conn, "xget /interfaces-state")
if (res != 0):
    print("Error: yangrpc failed to parse cli command!")
    sys.exit(1)

yuma.val_dump_value(rpc_val, 1)

(res, reply_val) = yangrpc.rpc(conn, rpc_val)
if (res != 0):
    print("Error: yangrpc failed to execute rpc!")
    sys.exit(1)

yuma.val_dump_value(reply_val, 1)

print("Done.")
def main():
    print("""
#Description: Demonstrate that leaf values can be replaced.
#Procedure:
#1 - Create interface "foo" of type=ethernetCsmacd. Verify commit succeeds.
#2 - Replace type for interface "foo" with type=other. Read back the type after commit.
""")

    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--server",
        help=
        "server name e.g. 127.0.0.1 or server.com (127.0.0.1 if not specified)"
    )
    parser.add_argument("--user",
                        help="username e.g. admin ($USER if not specified)")
    parser.add_argument("--port", help="port e.g. 830 (830 if not specified)")
    parser.add_argument(
        "--password",
        help="password e.g. mypass123 (passwordless if not specified)")

    args = parser.parse_args()

    if (args.server == None or args.server == ""):
        server = "127.0.0.1"
    else:
        server = args.server

    if (args.port == None or args.port == ""):
        port = 830
    else:
        port = int(args.port)

    if (args.user == None or args.user == ""):
        user = os.getenv('USER')
    else:
        user = args.user

    if (args.password == None or args.password == ""):
        password = None
    else:
        password = args.password

    conn = yangrpc.connect(server, port, user, password,
                           os.getenv('HOME') + "/.ssh/id_rsa.pub",
                           os.getenv('HOME') + "/.ssh/id_rsa")
    if (conn == None):
        print("Error: yangrpc failed to connect!")
        return (-1)

    time.sleep(1)

    ok = yangcli(conn, '''delete /interfaces''').xpath('./ok')

    ok = yangcli(conn, '''commit''').xpath('./ok')
    assert (len(ok) == 1)

    ok = yangcli(
        conn,
        '''create /interfaces/interface -- name='foo' type='ethernetCsmacd' '''
    ).xpath('./ok')
    assert (len(ok) == 1)

    ok = yangcli(conn, '''commit''').xpath('./ok')
    assert (len(ok) == 1)

    result = yangcli(conn, "xget /interfaces")
    names = result.xpath('./data/interfaces/interface/name')
    for name in names:
        print name.text
    types = result.xpath('./data/interfaces/interface/type')
    for type in types:
        print type.text

    assert (len(types) == 1)
    assert (types[0].text == 'ianaift:ethernetCsmacd')

    ok = yangcli(
        conn,
        '''replace /interfaces/interface[name='foo']/type value='other' '''
    ).xpath('./ok')
    assert (len(ok) == 1)

    ok = yangcli(conn, '''commit''').xpath('./ok')
    assert (len(ok) == 1)

    result = yangcli(conn, "xget /interfaces")
    names = result.xpath('./data/interfaces/interface/name')
    for name in names:
        print name.text
    types = result.xpath('./data/interfaces/interface/type')
    for type in types:
        print type.text

    assert (len(types) == 1)
    assert (types[0].text == 'ianaift:other')

    result = yangcli(conn, "delete /interfaces").xpath('./ok')
    assert (len(ok) == 1)
    result = yangcli(conn, "commit").xpath('./ok')
    assert (len(ok) == 1)

    return (0)
def main():
    print("""
#Description: Validate leafs with failing when statements are removed from candidate
#Procedure:
#1 - Create /top/type = bar.
#2 - Create '/top/foo'.
#3 - Validate '/top/foo' is not present
""")

    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--server",
        help=
        "server name e.g. 127.0.0.1 or server.com (127.0.0.1 if not specified)"
    )
    parser.add_argument("--user",
                        help="username e.g. admin ($USER if not specified)")
    parser.add_argument("--port", help="port e.g. 830 (830 if not specified)")
    parser.add_argument(
        "--password",
        help="password e.g. mypass123 (passwordless if not specified)")

    args = parser.parse_args()

    if (args.server == None or args.server == ""):
        server = "127.0.0.1"
    else:
        server = args.server

    if (args.port == None or args.port == ""):
        port = 830
    else:
        port = int(args.port)

    if (args.user == None or args.user == ""):
        user = os.getenv('USER')
    else:
        user = args.user

    if (args.password == None or args.password == ""):
        password = None
    else:
        password = args.password

    conn = yangrpc.connect(server, port, user, password,
                           os.getenv('HOME') + "/.ssh/id_rsa.pub",
                           os.getenv('HOME') + "/.ssh/id_rsa")
    if (conn == None):
        print("Error: yangrpc failed to connect!")
        return (-1)

    time.sleep(1)
    print("hello")

    ok = yangcli(conn, '''create /top/child -- type=bar foo=1''').xpath('./ok')
    assert (len(ok) == 1)

    result = yangcli(conn, "xget-config source=candidate /top")
    foo = result.xpath('./data/top/child/foo')

    assert (len(foo) == 0)

    ok = yangcli(conn, '''create /top/child/bar value=1''').xpath('./ok')
    assert (len(ok) == 1)

    print("done")
    return (0)
Esempio n. 14
0
def main():
    print("""
#Description: Testcase for OpenDaylight interoperability.
#Procedure:
#1 - Create topology.
""")

    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--server",
        help=
        "server name e.g. 127.0.0.1 or server.com (127.0.0.1 if not specified)"
    )
    parser.add_argument("--user",
                        help="username e.g. admin ($USER if not specified)")
    parser.add_argument("--port", help="port e.g. 830 (830 if not specified)")
    parser.add_argument(
        "--password",
        help="password e.g. mypass123 (passwordless if not specified)")

    args = parser.parse_args()

    if (args.server == None or args.server == ""):
        server = "127.0.0.1"
    else:
        server = args.server

    if (args.port == None or args.port == ""):
        port = 830
    else:
        port = int(args.port)

    if (args.user == None or args.user == ""):
        user = os.getenv('USER')
    else:
        user = args.user

    if (args.password == None or args.password == ""):
        password = None
    else:
        password = args.password

    print("Connecting #1 ...")
    conn = yangrpc.connect(server, port, user, password,
                           os.getenv('HOME') + "/.ssh/id_rsa.pub",
                           os.getenv('HOME') + "/.ssh/id_rsa",
                           "--dump-session=tmp/nc-session-")
    if (conn == None):
        print("Error: yangrpc failed to connect!")
        return (-1)

    result = yangcli(
        conn,
        "delete /modules/module[name='right'][type='sal-netconf-connector']")

    result = yangcli(conn, "commit")
    ok = result.xpath('./ok')
    print(lxml.etree.tostring(result))
    assert (len(ok) == 1)

    result = yangcli(
        conn,
        "merge /modules/module[name='right'][type='sal-netconf-connector'] -- address=127.0.0.1 sal-netconf:port=4830 tcp-only=false username=demo password=demo sal-netconf:event-executor/type=netty-event-executor sal-netconf:event-executor/name=global-event-executor sal-netconf:binding-registry/type=binding-broker-osgi-registry sal-netconf:binding-registry/name=binding-osgi-broker sal-netconf:dom-registry/type=dom-broker-osgi-registry sal-netconf:dom-registry/name=dom-broker sal-netconf:client-dispatcher/type=netconf-client-dispatcher sal-netconf:client-dispatcher/name=global-netconf-dispatcher sal-netconf:processing-executor/type=threadpool sal-netconf:processing-executor/name=global-netconf-processing-executor sal-netconf:keepalive-executor/type=scheduled-threadpool sal-netconf:keepalive-executor/name=global-netconf-ssh-scheduled-executor"
    )
    ok = result.xpath('./ok')
    print(lxml.etree.tostring(result))
    assert (len(ok) == 1)
    result = yangcli(conn, "commit")
    ok = result.xpath('./ok')
    print(lxml.etree.tostring(result))
    assert (len(ok) == 1)

    return (0)
Esempio n. 15
0
from yangcli import yangcli
from lxml import etree
import yangrpc
import sys
import os

conn = yangrpc.connect(
    "127.0.0.1",
    830,
    os.getenv('USER'),
    None,
    os.getenv('HOME') + "/.ssh/id_rsa.pub",
    os.getenv('HOME') + "/.ssh/id_rsa",
)
if (conn == None):
    print("Error: yangrpc failed to connect!")
    sys.exit(1)

result = yangcli(conn, "commit")
assert (result.xpath('./ok'))
yangcli(conn, "replace /system/hostname value='ok3'")
yangcli(conn, "replace /system/location value='ok4'")
result = yangcli(conn, "commit")
assert (result.xpath('./ok'))

yangcli(conn, "replace /system/hostname value='error1'")
yangcli(conn, "replace /system/location value='ok5'")
result = yangcli(conn, "commit")
assert (result.xpath('./rpc-error'))
yangcli(conn, "discard-changes")
Esempio n. 16
0
def main():

    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--server",
        help=
        "server name e.g. 127.0.0.1 or server.com (127.0.0.1 if not specified)"
    )
    parser.add_argument("--user",
                        help="username e.g. admin ($USER if not specified)")
    parser.add_argument("--port", help="port e.g. 830 (830 if not specified)")
    parser.add_argument(
        "--password",
        help="password e.g. mypass123 (passwordless if not specified)")

    parser.add_argument("--operation",
                        help="One of {configure-nacm, create, replace, read}")
    parser.add_argument("--option", help="One of {foo, bar, baz}")

    args = parser.parse_args()

    print(
        """
#Description: Validate nacm --operation=%(operation)s --option=%(option)s
#Procedure:
#1 - Do %(operation)s.
""" % {
            'operation': args.operation,
            'option': args.option
        })

    if (args.server == None or args.server == ""):
        server = "127.0.0.1"
    else:
        server = args.server

    if (args.port == None or args.port == ""):
        port = 830
    else:
        port = int(args.port)

    if (args.user == None or args.user == ""):
        user = os.getenv('USER')
    else:
        user = args.user

    if (args.password == None or args.password == ""):
        password = None
    else:
        password = args.password

    conn = yangrpc.connect(server, port, user, password,
                           os.getenv('HOME') + "/.ssh/id_rsa.pub",
                           os.getenv('HOME') + "/.ssh/id_rsa")
    if (conn == None):
        print("Error: yangrpc failed to connect!")
        return (-1)

    if (args.operation == 'configure-nacm'):
        ok = yangcli(
            conn,
            '''create /nacm/groups/group[name='my-operators-group']/user-name value=%s'''
            % (user)).xpath('./ok')
        assert (len(ok) == 1)
        ok = yangcli(
            conn,
            '''create /nacm/rule-list[name='my-operators-rules'] -- group=my-operators-group'''
        ).xpath('./ok')
        assert (len(ok) == 1)
        ok = yangcli(
            conn,
            '''create /nacm/rule-list[name='my-operators-rules']/rule[name='my-foo-all-permit'] -- module-name=m1 path=/top/foo access-operations=* action=permit comment='With this rule the user can create /top/foo' '''
        ).xpath('./ok')
        assert (len(ok) == 1)
        ok = yangcli(
            conn,
            '''create /nacm/rule-list[name='my-operators-rules']/rule[name='my-baz-read-deny'] -- module-name=m1 path=/top/baz access-operations=read action=deny comment='With this rule the user can not read /top/baz' '''
        ).xpath('./ok')
        assert (len(ok) == 1)

        ok = yangcli(conn, '''commit''').xpath('./ok')
        assert (len(ok) == 1)
    elif (args.operation == 'get'):
        result = yangcli(conn, '''sget /top/%s''' % (args.option))
        value = result.xpath('./data/top/%s' % (args.option))
        print etree.tostring(result,
                             pretty_print=True,
                             inclusive_ns_prefixes=True)
        assert (len(value) == 1)
        assert (value[0].text == args.option)
    else:
        ok = yangcli(
            conn, '''%s /top/%s value=%s''' %
            (args.operation, args.option, args.option)).xpath('./ok')
        assert (len(ok) == 1)
        ok = yangcli(conn, '''commit''').xpath('./ok')
        assert (len(ok) == 1)

    print("done")
    return (0)
Esempio n. 17
0
def main():
    print("""
#Description: Using sub-interfaces configure vlan bridge.
#Procedure:
#1 - Create interface "xe0", "ge0", "ge1" of type=ethernetCsmacd.
#2 - Create sub-interface "xe0-green" - s-vlan-id=1000, "ge1-green" - c-vlan-id=10 of type=ethSubInterface.
#3 - Create VLAN bridge with "ge0", "ge1-green" and "xe0-green".
#4 - Commit.
""")

    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--server",
        help=
        "server name e.g. 127.0.0.1 or server.com (127.0.0.1 if not specified)"
    )
    parser.add_argument("--user",
                        help="username e.g. admin ($USER if not specified)")
    parser.add_argument("--port", help="port e.g. 830 (830 if not specified)")
    parser.add_argument(
        "--password",
        help="password e.g. mypass123 (passwordless if not specified)")

    args = parser.parse_args()

    if (args.server == None or args.server == ""):
        server = "127.0.0.1"
    else:
        server = args.server

    if (args.port == None or args.port == ""):
        port = 830
    else:
        port = int(args.port)

    if (args.user == None or args.user == ""):
        user = os.getenv('USER')
    else:
        user = args.user

    if (args.password == None or args.password == ""):
        password = None
    else:
        password = args.password

    conn = yangrpc.connect(server, port, user, password,
                           os.getenv('HOME') + "/.ssh/id_rsa.pub",
                           os.getenv('HOME') + "/.ssh/id_rsa",
                           "--dump-session=tmp/nc-session-")
    if (conn == None):
        print("Error: yangrpc failed to connect!")
        return (-1)

    time.sleep(1)

    ok = yangcli(conn, '''delete /vlans''').xpath('./ok')
    ok = yangcli(conn, '''delete /interfaces''').xpath('./ok')
    ok = yangcli(conn, '''commit''').xpath('./ok')
    assert (len(ok) == 1)

    yangcli_script = '''
create /interfaces/interface -- name='xe0' type='ethernetCsmacd'
create /interfaces/interface -- name='ge0' type='ethernetCsmacd'
create /interfaces/interface -- name='ge1' type='ethernetCsmacd'
create /interfaces/interface -- name='ge1-green' type=ethSubInterface parent-interface=ge0
create /interfaces/interface[name='ge1-green']/forwarding-mode value=layer-2-forwarding
create /interfaces/interface[name='ge1-green']/encapsulation/flexible/match/dot1q-vlan-tagged/outer-tag/dot1q-tag -- tag-type=c-vlan vlan-id=10
create /interfaces/interface -- name='xe0-green' type=ethSubInterface parent-interface=xe0
create /interfaces/interface[name='xe0-green']/forwarding-mode value=layer-2-forwarding
create /interfaces/interface[name='xe0-green']/encapsulation/flexible/match/dot1q-vlan-tagged/outer-tag/dot1q-tag -- tag-type=s-vlan vlan-id=1000
create /interfaces/interface[name='xe0-green']/encapsulation/flexible/match/dot1q-vlan-tagged/second-tag/dot1q-tag -- tag-type=c-vlan vlan-id=10
create /vlans/vlan -- name=green
create /vlans/vlan[name='green']/interface value=ge0
create /vlans/vlan[name='green']/interface value=ge1-green
create /vlans/vlan[name='green']/interface value=xe0-green
commit
'''
    yangcli_ok_script(conn, yangcli_script)

    result = yangcli(conn, "xget /interfaces")
    names = result.xpath('./data/interfaces/interface/name')
    for name in names:
        print name.text
    types = result.xpath('./data/interfaces/interface/type')
    for type in types:
        print type.text

    #cleanup


#	ok = yangcli(conn, '''delete /vlans''').xpath('./ok')
#	assert(len(ok)==1)
#	ok = yangcli(conn, '''delete /interfaces''').xpath('./ok')
#	assert(len(ok)==1)
#	ok = yangcli(conn, '''commit''').xpath('./ok')
#	assert(len(ok)==1)

    return (0)
def main():
    print("""
#Description: Demonstrate that leaf-list values can be replaced. Although the operation result is identical to either create or none.
#Procedure:
#1 - Create /system/dns-resolver/search entry with value 'foo'. Verify commit succeeds.
#2 - Create entry 'foo'.
#3 - Replace entry 'bar'. Read back the value after commit. Validate both 'foo' and 'bar' are present,
""")

    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--server",
        help=
        "server name e.g. 127.0.0.1 or server.com (127.0.0.1 if not specified)"
    )
    parser.add_argument("--user",
                        help="username e.g. admin ($USER if not specified)")
    parser.add_argument("--port", help="port e.g. 830 (830 if not specified)")
    parser.add_argument(
        "--password",
        help="password e.g. mypass123 (passwordless if not specified)")

    args = parser.parse_args()

    if (args.server == None or args.server == ""):
        server = "127.0.0.1"
    else:
        server = args.server

    if (args.port == None or args.port == ""):
        port = 830
    else:
        port = int(args.port)

    if (args.user == None or args.user == ""):
        user = os.getenv('USER')
    else:
        user = args.user

    if (args.password == None or args.password == ""):
        password = None
    else:
        password = args.password

    conn = yangrpc.connect(server, port, user, password,
                           os.getenv('HOME') + "/.ssh/id_rsa.pub",
                           os.getenv('HOME') + "/.ssh/id_rsa")
    if (conn == None):
        print("Error: yangrpc failed to connect!")
        return (-1)

    time.sleep(1)

    ok = yangcli(conn, '''delete /system''').xpath('./ok')

    ok = yangcli(conn, '''commit''').xpath('./ok')
    assert (len(ok) == 1)

    ok = yangcli(
        conn,
        '''create /system/dns-resolver/search value='foo' ''').xpath('./ok')
    assert (len(ok) == 1)

    ok = yangcli(conn, '''commit''').xpath('./ok')
    assert (len(ok) == 1)

    result = yangcli(conn, "xget /system")
    searches = result.xpath('./data/system/dns-resolver/search')
    for search in searches:
        print search.text

    assert (len(searches) == 1)
    assert (searches[0].text == 'foo')

    ok = yangcli(
        conn,
        '''replace /system/dns-resolver/search value='bar' ''').xpath('./ok')
    assert (len(ok) == 1)

    ok = yangcli(conn, '''commit''').xpath('./ok')
    assert (len(ok) == 1)

    result = yangcli(conn, "xget /system")
    searches = result.xpath('./data/system/dns-resolver/search')
    for search in searches:
        print search.text

    assert (len(searches) == 2)

    result = yangcli(conn, "delete /system").xpath('./ok')
    assert (len(ok) == 1)
    result = yangcli(conn, "commit").xpath('./ok')
    assert (len(ok) == 1)

    return (0)