IETF 96 Hackcathon yuma123 project report
From Yuma123 Wiki
Jump to navigationJump to searchContents
- 1 Overview
- 2 Goals for IETF 96 Hackathon
- 2.1 [OK] Goal 0: Add mainstream distribution package repository support (ubuntu trusty 14.04). Publish online both src and binary packages. apt-get install and apt-get source should work! Do it as simple as installing net-snmp!! Power to the people!!!
- 2.2 [OK] Goal 1: Design a simplified client application API for development of scripted configuration and monitoring tools: yangrpc
- 2.3 [OK] Goal 2: Add support for yangcli style scripting to perl and python
- 2.4 [OK] Goal 3: Add python and perl modules exporting the yuma API and the yangrpc API with the yangcli wrapper.
- 2.5 [NO] Goal 4: Add multi-client session support to yuma123
- 2.6 [OK] Goal 5: Publish IETF 96 Hackathon report (this) on http://yuma123.org/wiki
- 3 Hello world netconf/YANG
- 4 Post-Event Wrap Up Report
Overview
Q1: What is yuma123?
- BSD licensed evolved from the 2012 last release of Yuma (YumaWorks) as BSD licensed software.
- Follows net-snmp in terms of standard packaging and build tools (autoconf/automake, debian dev-tools)
Q2: How stable is it?
- It is used on commercial products (H1 switches from Transpacket AS)
Q3: What are the project advantages?
- Lighter easier to build and install on mainstream debian/Ubuntu.
- Focus on netconfd and yangcli and ease of development debian packaged modules for the server.
Q4: What are the project disadvantages?
- No restconf planned yet.
- No YANG 1.1 support yet.
- Less focus on schema conversion tools and template generation.
Goals for IETF 96 Hackathon
[OK] Goal 0: Add mainstream distribution package repository support (ubuntu trusty 14.04). Publish online both src and binary packages. apt-get install and apt-get source should work! Do it as simple as installing net-snmp!! Power to the people!!!
sudo add-apt-repository "deb http://yuma123.org/repos/apt/ubuntu trusty main" wget -O - http://yuma123.org/repos/yuma123.gpg.key | sudo apt-key add - sudo apt-get update sudo apt-get install netconfd yangcli netconfd-module-ietf-system netconfd-module-ietf-interfaces libyuma-perl python-yuma libyuma-dbg libyuma-dev
Installation complete! ... Configure ssh for netconf:
sudo su echo "Port 830" >> /etc/ssh/sshd_config echo "Subsystem netconf /usr/sbin/netconf-subsystem" >> /etc/ssh/sshd_config service ssh restart exit
Start netconfd:
netconfd --module=ietf-system --module=ietf-interfaces --superuser=$USER
Connect with yangcli:
yangcli --server=127.0.0.1 --user=$USER
...
yangcli vladimir@127.0.0.1> create /system/location Filling optional leaf /system/location: Enter string value for leaf <location> yangcli vladimir@127.0.0.1:create> Berlin RPC OK Reply 1 for session 1: yangcli vladimir@127.0.0.1> commit RPC OK Reply 2 for session 1: yangcli vladimir@127.0.0.1> xget /system RPC Data Reply 3 for session 1: rpc-reply { data { system { location Berlin } } }
[OK] Goal 1: Design a simplified client application API for development of scripted configuration and monitoring tools: yangrpc
netconf/src/yangrpc/yangrpc.h:
int yangrpc_init(int argc, char* argv[]); yangrpc_cb_t* yangrpc_connect(char* server, uint16_t port, char* user, char* password, char* publick_key, char* private_key); status_t yangrpc_parse_cli(yangrpc_cb_t *server_cb, char* cli_cmd_str, val_value_t** request_val); status_t yangrpc_exec(yangrpc_cb_t *server_cb, val_value_t* request_val, val_value_t** reply_val); void yangrpc_close(yangrpc_cb_t *yangrpc_cb);
[OK] Goal 2: Add support for yangcli style scripting to perl and python
netconf/python/example-yangcli/python-yangcli-example.py:
from yangcli import yangcli from lxml import etree 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) names = yangcli(conn, "xget /interfaces-state").xpath('./data/interfaces-state/interface/name') for name in names: print name.text print("Done.")
netconf/perl/example-yangcli/perl-yangcli-example.pl:
use yuma; use yangrpc; use yangcli; use XML::LibXML; my $conn = yangrpc::connect("127.0.0.1", 830, "root", "mysecretpass","/root/.ssh/id_rsa","/root/.ssh/id_rsa.pub"); defined($conn) || die "Error: yangrpc failed to connect!"; my @names = yangcli::yangcli($conn, "xget /interfaces-state")->findnodes("./rpc-reply/data/interfaces-state/interface/name"); for my $name (@names) { print $name->textContent()."\n"; } print("Done.\n");
[OK] Goal 3: Add python and perl modules exporting the yuma API and the yangrpc API with the yangcli wrapper.
yangcli --server=31.133.137.254 --user=phablet --password="mysecretpass" --run-command="xget /" --batch-mode yangcli-python --server=31.133.137.254 --user=phablet --password="mysecetpass" --run-command="xget /" --batch-mode yangcli-perl --server=31.133.137.254 --user=phablet --password="mysecretpass" --run-command="xget /" --batch-mode
[NO] Goal 4: Add multi-client session support to yuma123
[OK] Goal 5: Publish IETF 96 Hackathon report (this) on http://yuma123.org/wiki
Hello world netconf/YANG
Everyone who is interested can connect to a Ubuntu phone running the yuma123 netconfd server and template module packages ietf-system and ietf-interfaces:
yangcli --server=31.133.162.79 --user=hackathon --password=hackathon
Post-Event Wrap Up Report
- The summary report of the IETF 96 hackathon https://www.ietf.org/proceedings/96/slides/slides-96-hackathon-23.pdf
- p. 4 coding
- p. 7 winning the "Most Importance to IETF project award"
- Participation in the IETF 96 meeting of the netmod group on Monday.
- The debian package for yuma123 developed during the course of the hackathon is submitted for mainstream debian release.