Skip to content

Commit

Permalink
Merge pull request #243 from attila123/examples_juniper_various_impro…
Browse files Browse the repository at this point in the history
…vements

examples/juniper various improvements (issue #236 plus more):
  • Loading branch information
einarnn committed Jun 21, 2018
2 parents 23df9a7 + a7ac610 commit b845d1e
Show file tree
Hide file tree
Showing 27 changed files with 511 additions and 354 deletions.
38 changes: 22 additions & 16 deletions examples/juniper/command-jnpr.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,37 @@
#!/usr/bin/env python
import logging
import sys

from ncclient import manager


def connect(host, port, user, password):
conn = manager.connect(host=host,
port=port,
username=user,
password=password,
timeout=10,
device_params = {'name':'junos'},
hostkey_verify=False)

print 'show system users'
print '*' * 30
port=port,
username=user,
password=password,
timeout=60,
device_params={'name': 'junos'},
hostkey_verify=False)

logging.info('show system users')
logging.info('*' * 30)
result = conn.command(command='show system users', format='text')
print result.tostring
logging.info(result)

print 'show version'
print '*' * 30
logging.info('show version')
logging.info('*' * 30)
result = conn.command('show version', format='text')
print result.xpath('output')[0].text
logging.info(result.xpath('output')[0].text)

print 'bgp summary'
print '*' * 30
logging.info('bgp summary')
logging.info('*' * 30)
result = conn.command('show bgp summary')
print result.tostring
logging.info(result)


if __name__ == '__main__':
LOG_FORMAT = '%(asctime)s %(levelname)s %(filename)s:%(lineno)d %(message)s'
logging.basicConfig(stream=sys.stdout, level=logging.INFO, format=LOG_FORMAT)

connect('router', '22', 'netconf', 'juniper!')
26 changes: 15 additions & 11 deletions examples/juniper/compare-config-jnpr.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,25 @@
#!/usr/bin/env python
import logging

from ncclient import manager
from ncclient.xml_ import *

import time

def connect(host, port, user, password, source):
def connect(host, port, user, password):
conn = manager.connect(host=host,
port=port,
username=user,
password=password,
timeout=10,
device_params = {'name':'junos'},
hostkey_verify=False)
port=port,
username=user,
password=password,
timeout=60,
device_params={'name': 'junos'},
hostkey_verify=False)

compare_config_result = conn.compare_configuration(rollback=3)
logging.info(compare_config_result)

compare_config = conn.compare_configuration(rollback=3)
print compare_config.tostring

if __name__ == '__main__':
connect('router', 830, 'netconf', 'juniper!', 'candidate')
LOG_FORMAT = '%(asctime)s %(levelname)s %(filename)s:%(lineno)d %(message)s'
logging.basicConfig(stream=sys.stdout, level=logging.INFO, format=LOG_FORMAT)

connect('router', 830, 'netconf', 'juniper!')
38 changes: 23 additions & 15 deletions examples/juniper/delete-config-jnpr.py
Original file line number Diff line number Diff line change
@@ -1,33 +1,41 @@
#!/usr/bin/env python
import logging

from ncclient import manager
from ncclient.xml_ import *

def connect(host, port, user, password, source):

def connect(host, port, user, password):
conn = manager.connect(host=host,
port=port,
username=user,
password=password,
timeout=10,
device_params = {'name':'junos'},
hostkey_verify=False)
port=port,
username=user,
password=password,
timeout=60,
device_params={'name': 'junos'},
hostkey_verify=False)

template = """<system><scripts><commit><file delete="delete"><name>test.slax</name></file></commit></scripts></system>"""
template = """<system><scripts><commit>
<file delete="delete"><name>test.slax</name></file>
</commit></scripts></system>"""

conn.lock()
config = to_ele(template)
send_config = conn.load_configuration(config=config)
print send_config.tostring
load_config_result = conn.load_configuration(config=config)
logging.info(load_config_result)

check_config = conn.validate()
print check_config.tostring
validate_result = conn.validate()
logging.info(validate_result)

compare_config = conn.compare_configuration()
print compare_config.tostring
compare_config_result = conn.compare_configuration()
logging.info(compare_config_result)

conn.commit()
conn.unlock()
conn.close_session()


if __name__ == '__main__':
connect('router', 830, 'netconf', 'juniper!', 'candidate')
LOG_FORMAT = '%(asctime)s %(levelname)s %(filename)s:%(lineno)d %(message)s'
logging.basicConfig(stream=sys.stdout, level=logging.INFO, format=LOG_FORMAT)

connect('router', 830, 'netconf', 'juniper!')
63 changes: 33 additions & 30 deletions examples/juniper/edit-config-bgp-peer.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,33 @@
from ncclient import manager
from ncclient.xml_ import *

FORMAT = '%(asctime)-15s %(message)s'
logging.basicConfig(format=FORMAT)

def connect(host, port, user, password, source):
def connect(host, port, user, password):
conn = manager.connect(host=host,
port=port,
username=user,
password=password,
timeout=10,
device_params = {'name':'junos'},
hostkey_verify=False)
port=port,
username=user,
password=password,
timeout=60,
device_params={'name': 'junos'},
hostkey_verify=False)

print 'locking configuration'
lock = conn.lock()
logging.info('locking configuration')
lock_result = conn.lock()
logging.info(lock_result)

peers = {
'10.1.1.1':'65001',
'10.2.1.1':'65002',
'10.3.1.1':'65003',
'10.4.1.1':'65004',
'10.5.1.1':'65005'
'10.1.1.1': '65001',
'10.2.1.1': '65002',
'10.3.1.1': '65003',
'10.4.1.1': '65004',
'10.5.1.1': '65005'
}

# build configuration element
config = new_ele('protocols')
config_bgp = sub_ele(config, 'bgp')
config_group = sub_ele(config_bgp, 'group')
# TODO: unused variable! Is this example broken?
config_group_name = sub_ele(config_group, 'name').text = 'NETCONF_GROUP'
sub_ele(config_group, 'multipath')
sub_ele(config_group, 'local-address').text = '10.0.0.1'
Expand All @@ -40,25 +40,28 @@ def connect(host, port, user, password, source):
sub_ele(config_neighbor, 'name').text = peer
sub_ele(config_neighbor, 'peer-as').text = peers[peer]

send_config = conn.load_configuration(config=config)
print send_config.tostring
load_config_result = conn.load_configuration(config=config)
logging.info(load_config_result)

check_config = conn.validate()
print check_config.tostring
validate_result = conn.validate()
logging.info(validate_result)

compare_config = conn.compare_configuration()
print compare_config.tostring
compare_config_result = conn.compare_configuration()
logging.info(compare_config_result)

commit_config = conn.commit()
print 'committed configuration'
conn.commit()
logging.info('committed configuration')

discard_changes_result = conn.discard_changes()
logging.info(discard_changes_result)

discard_changes = conn.discard_changes()
print discard_changes.tostring
logging.info('unlocking configuration')
unlock_result = conn.unlock()
logging.info(unlock_result)

print 'unlocking configuration'
unlock = conn.unlock()
print unlock.tostring

if __name__ == '__main__':
connect('router', 830, 'netconf', 'juniper!', 'candidate')
LOG_FORMAT = '%(asctime)s %(levelname)s %(filename)s:%(lineno)d %(message)s'
logging.basicConfig(stream=sys.stdout, level=logging.INFO, format=LOG_FORMAT)

connect('router', 830, 'netconf', 'juniper!')
38 changes: 24 additions & 14 deletions examples/juniper/edit-config-jnpr-json.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
#!/usr/bin/env python

import json
import logging
import sys

from ncclient import manager

def connect(host, user, password):

def connect(host, port, user, password):
conn = manager.connect(host=host,
username=user,
password=password,
timeout=10,
device_params = {'name':'junos'},
hostkey_verify=False)
port=port,
username=user,
password=password,
timeout=60,
device_params={'name': 'junos'},
hostkey_verify=False)

conn.lock()

# configuration as a json encoded string
# TODO: this example (and possibly the ncclient library implementation?) is broken!
# class LoadConfiguration in operations/third_party/juniper/rpc.py would expect 'configuration-json' element to be
# used. Changing "configuration" to "configuration-json" in the 2 occasions below: still does not work!
location = """
{
"configuration": {
Expand All @@ -32,18 +38,22 @@ def connect(host, user, password):
config_json['configuration']['system']['location']['rack'] = "1117"
config = json.dumps(config_json)

send_config = conn.load_configuration(format='json', config=config)
print send_config.tostring
load_config_result = conn.load_configuration(format='json', config=config)
logging.info(load_config_result)

check_config = conn.validate()
print check_config.tostring
validate_result = conn.validate()
logging.info(validate_result)

compare_config = conn.compare_configuration()
print compare_config.tostring
compare_config_result = conn.compare_configuration()
logging.info(compare_config_result)

conn.commit()
conn.unlock()
conn.close_session()


if __name__ == '__main__':
connect('router', 'netconf', 'juniper!')
LOG_FORMAT = '%(asctime)s %(levelname)s %(filename)s:%(lineno)d %(message)s'
logging.basicConfig(stream=sys.stdout, level=logging.INFO, format=LOG_FORMAT)

connect('router', '22', 'netconf', 'juniper!')
38 changes: 24 additions & 14 deletions examples/juniper/edit-config-jnpr-set.py
Original file line number Diff line number Diff line change
@@ -1,38 +1,48 @@
#!/usr/bin/env python
import sys

import logging

from ncclient import manager

def connect(host, user, password):

def connect(host, port, user, password):
conn = manager.connect(host=host,
username=user,
password=password,
timeout=10,
device_params = {'name':'junos'},
hostkey_verify=False)
port=port,
username=user,
password=password,
timeout=60,
device_params={'name': 'junos'},
hostkey_verify=False)

conn.lock()

# configuration as a string
send_config = conn.load_configuration(action='set', config='set system host-name foo')
load_config_result = conn.load_configuration(action='set', config='set system host-name foo')
logging.info(load_config_result)

# configuration as a list
location = []
location.append('set system location building "Main Campus, C"')
location.append('set system location floor 15')
location.append('set system location rack 1117')

send_config = conn.load_configuration(action='set', config=location)
print send_config.tostring
load_config_result = conn.load_configuration(action='set', config=location)
logging.info(load_config_result)

check_config = conn.validate()
print check_config.tostring
validate_result = conn.validate()
logging.info(validate_result)

compare_config = conn.compare_configuration()
print compare_config.tostring
compare_config_result = conn.compare_configuration()
logging.info(compare_config_result)

conn.commit()
conn.unlock()
conn.close_session()


if __name__ == '__main__':
connect('router', 'netconf', 'juniper!')
LOG_FORMAT = '%(asctime)s %(levelname)s %(filename)s:%(lineno)d %(message)s'
logging.basicConfig(stream=sys.stdout, level=logging.INFO, format=LOG_FORMAT)

connect('router', '22', 'netconf', 'juniper!')

0 comments on commit b845d1e

Please sign in to comment.