Difference between revisions of "IETF 96 Hackcathon yuma123 project report"

From Yuma123 Wiki
Jump to navigationJump to search
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
==Overview==
 
==Overview==
===Q: What is yuma123?===
+
===Q1: What is yuma123?===
* BSD licensed evolved from the 2012 last release of Yuma as BSD licensed software.
+
* 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 buiianld)
+
* Follows net-snmp in terms of standard packaging and build tools (autoconf/automake, debian dev-tools)
   
===Q: How stable is it?===
+
===Q2: How stable is it?===
 
* It is used on commercial products (H1 switches from Transpacket AS)
 
* It is used on commercial products (H1 switches from Transpacket AS)
   
===Q: What are the project advantages?===
+
===Q3: What are the project advantages?===
 
* Lighter easier to build and install on mainstream debian/Ubuntu.
 
* 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.
 
* Focus on netconfd and yangcli and ease of development debian packaged modules for the server.
   
===Q: What are the project disadvantages?===
+
===Q4: What are the project disadvantages?===
 
* No restconf planned yet.
 
* No restconf planned yet.
 
* No YANG 1.1 support yet.
 
* No YANG 1.1 support yet.
Line 17: Line 17:
   
 
==Goals for IETF 96 Hackathon==
 
==Goals for IETF 96 Hackathon==
===[OK] Goal 0: Add mainstream distribution package repository support (ubuntu thrusty 14.04). Publish online both src and binary packages. apt-get install and apt-get source should work! Do it as simple as net-snmp!! Power to the people!!!===
+
===[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"
 
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 -
 
wget -O - http://yuma123.org/repos/yuma123.gpg.key | sudo apt-key add -
 
sudo apt-get update
 
sudo apt-get update
sudo apt-get install netconfd yangcli
+
sudo apt-get install netconfd yangcli netconfd-module-ietf-system netconfd-module-ietf-interfaces libyuma-perl python-yuma libyuma-dbg libyuma-dev
   
 
Installation complete!
 
Installation complete!
Line 34: Line 34:
   
 
Start netconfd:
 
Start netconfd:
netconfd --module=ietf-system --module=ietf-interfaces --user=$USER
+
netconfd --module=ietf-system --module=ietf-interfaces --superuser=$USER
   
 
Connect with yangcli:
 
Connect with yangcli:
Line 118: Line 118:
 
==Hello world netconf/YANG==
 
==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:
 
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.163.179 --user=hackathon --password=hackathon
+
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 [https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833187 submitted] for mainstream debian release.

Latest revision as of 13:18, 8 August 2016

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