Skip to content

Commit

Permalink
Merge pull request #34 from napalm-automation/develop
Browse files Browse the repository at this point in the history
Release 0.3.1
  • Loading branch information
dbarrosop committed Dec 29, 2016
2 parents fef2247 + 3af1c05 commit 61c343d
Show file tree
Hide file tree
Showing 8 changed files with 51 additions and 44 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,4 @@ env

test/unit/test_devices.py

report.json
22 changes: 8 additions & 14 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,9 @@
language: python

python:
- 2.7

- 2.7
install:
- pip install -r requirements-dev.txt
- pip install .

script:
- py.test
- pylama .

after_success:
- coveralls
- if [ $TRAVIS_TAG ]; then curl -X POST https://readthedocs.org/build/napalm; fi

- pip install tox-travis
- pip install coveralls
deploy:
provider: pypi
user: dbarroso
Expand All @@ -23,3 +12,8 @@ deploy:
on:
tags: true
branch: master
script:
- tox
after_success:
- coveralls
- if [ $TRAVIS_TAG ]; then curl -X POST https://readthedocs.org/build/napalm; fi
51 changes: 27 additions & 24 deletions napalm_fortios/fortios.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def is_alive(self):
'is_alive': self.device.ssh.get_transport().is_active()
}

def execute_command_with_vdom(self, command, vdom=None):
def _execute_command_with_vdom(self, command, vdom=None):
# If the user doesn't specify a particular vdom we use the default vdom for the object.
vdom = vdom or self.vdom

Expand All @@ -70,8 +70,8 @@ def execute_command_with_vdom(self, command, vdom=None):
# If there is no vdom we just execute the command
return self.device.execute_command(command)

def get_command_with_vdom(self, cmd, separator=':', auto=False, vdom=None):
output = self.execute_command_with_vdom(cmd, vdom)
def _get_command_with_vdom(self, cmd, separator=':', auto=False, vdom=None):
output = self._execute_command_with_vdom(cmd, vdom)

if auto:
if ':' in output[0]:
Expand Down Expand Up @@ -121,7 +121,7 @@ def compare_config(self):

def commit_config(self):
try:
self.execute_command_with_vdom('execute backup config flash commit_with_napalm')
self._execute_command_with_vdom('execute backup config flash commit_with_napalm')
self.device.commit()
self.discard_config()
except FailedCommit as e:
Expand All @@ -135,9 +135,9 @@ def discard_config(self):
self.device.load_config(in_candidate=True)

def rollback(self):
output = self.execute_command_with_vdom('fnsysctl ls -l data2/config', vdom=None)
output = self._execute_command_with_vdom('fnsysctl ls -l data2/config', vdom=None)
rollback_file = output[-2].split()[-1]
rollback_config = self.execute_command_with_vdom(
rollback_config = self._execute_command_with_vdom(
'fnsysctl cat data2/config/{rollback_file}'.format(rollback_file))

self.device.load_config(empty_candidate=True)
Expand All @@ -159,7 +159,7 @@ def get_config(self, retrieve="all"):
get_candidate = retrieve == "all" or retrieve == "candidate"

if retrieve == "all" or get_running:
result = self.execute_command_with_vdom('show')
result = self._execute_command_with_vdom('show')
text_result = '\n'.join(result)

return {
Expand All @@ -176,14 +176,16 @@ def get_config(self, retrieve="all"):
}

def get_facts(self):
system_status = self.get_command_with_vdom('get system status', vdom='global')
performance_status = self.get_command_with_vdom('get system performance status',
vdom='global')
system_status = self._get_command_with_vdom('get system status', vdom='global')
performance_status = self._get_command_with_vdom('get system performance status',
vdom='global')

interfaces = self.execute_command_with_vdom('get system interface | grep ==', vdom='global')
interfaces = self._execute_command_with_vdom('get system interface | grep ==',
vdom='global')
interface_list = [x.split()[2] for x in interfaces if x.strip() is not '']

domain = self.get_command_with_vdom('get system dns | grep domain', vdom='global')['domain']
domain = self._get_command_with_vdom('get system dns | grep domain',
vdom='global')['domain']

return {
'vendor': unicode('Fortigate'),
Expand Down Expand Up @@ -218,12 +220,13 @@ def _get_unsupported_interfaces():
}

def get_interfaces(self):
cmd_data = self.execute_command_with_vdom('diagnose hardware deviceinfo nic', vdom='global')
cmd_data = self._execute_command_with_vdom('diagnose hardware deviceinfo nic',
vdom='global')

interface_list = [x.replace('\t', '') for x in cmd_data if x.startswith('\t')]
interface_statistics = {}
for interface in interface_list:
if_data = self.execute_command_with_vdom(
if_data = self._execute_command_with_vdom(
'diagnose hardware deviceinfo nic {}'.format(interface), vdom='global')
parsed_data = {}
if interface.startswith('mgmt'):
Expand Down Expand Up @@ -262,7 +265,7 @@ def _search_line_in_lines(search, lines):
return l

def get_firewall_policies(self):
cmd = self.execute_command_with_vdom('show firewall policy')
cmd = self._execute_command_with_vdom('show firewall policy')
policy = dict()
policy_id = None
default_policy = dict()
Expand Down Expand Up @@ -315,7 +318,7 @@ def get_bgp_neighbors(self):
command_received = 'get router info bgp neighbors {} received-routes | grep prefixes '
peers = dict()

bgp_sum = self.execute_command_with_vdom(command_sum)
bgp_sum = self._execute_command_with_vdom(command_sum)

re_neigh = re.compile("^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
neighbors = {n.split()[0]: n.split()[1:] for n in bgp_sum if re.match(re_neigh, n)}
Expand All @@ -340,7 +343,7 @@ def get_bgp_neighbors(self):
neighbor_dict['address_family']['ipv6'] = dict()

detail_output = [x.lower() for x in
self.execute_command_with_vdom(command_detail.format(neighbor))]
self._execute_command_with_vdom(command_detail.format(neighbor))]
m = re.search('remote router id (.+?)\n', '\n'.join(detail_output))
if m:
neighbor_dict['remote_id'] = unicode(m.group(1))
Expand All @@ -357,7 +360,7 @@ def get_bgp_neighbors(self):
t = [int(s) for s in text.split() if s.isdigit()][0]
neighbor_dict['address_family'][family][term] = t

received = self.execute_command_with_vdom(
received = self._execute_command_with_vdom(
command_received.format(neighbor))[0].split()
if len(received) > 0:
neighbor_dict['address_family'][family]['received_prefixes'] = received[-1]
Expand All @@ -374,7 +377,7 @@ def get_bgp_neighbors(self):
}

def get_interfaces_counters(self):
cmd = self.execute_command_with_vdom('fnsysctl ifconfig', vdom=None)
cmd = self._execute_command_with_vdom('fnsysctl ifconfig', vdom=None)
if_name = None
interface_counters = dict()
for line in cmd:
Expand Down Expand Up @@ -471,7 +474,7 @@ def get_temperature(temperature_lines, detail_block):
out = dict()

sensors_block = [parse_string(x) for x in
self.execute_command_with_vdom('execute sensor detail', vdom='global')
self._execute_command_with_vdom('execute sensor detail', vdom='global')
if x]

# temp
Expand All @@ -485,14 +488,14 @@ def get_temperature(temperature_lines, detail_block):
# cpu
out['cpu'] = get_cpu(
[x for x in
self.execute_command_with_vdom('get system performance status | grep CPU',
vdom='global')[1:] if x])
self._execute_command_with_vdom('get system performance status | grep CPU',
vdom='global')[1:] if x])

# memory
memory_command = 'diag hard sys mem | grep Mem:'
t = [x for x in
re.split('\s+', self.execute_command_with_vdom(memory_command,
vdom='global')[0]) if x]
re.split('\s+', self._execute_command_with_vdom(memory_command,
vdom='global')[0]) if x]
out['memory'] = get_memory(t)

# power, not implemented
Expand Down
1 change: 0 additions & 1 deletion report.json

This file was deleted.

1 change: 1 addition & 0 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
coveralls
pytest
pytest-cov
pytest-json
Expand Down
8 changes: 4 additions & 4 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
[pylama]
linters = mccabe,pep8,pyflakes
ignore = D203,C901
skip = build/*,.tox/*

[pylama:pep8]
max_line_length = 100

[tool:pytest]
addopts = --cov=./ -vs
[pytest]
addopts = --cov=napalm_fortios --cov-report term-missing -vs --pylama
json_report = report.json
jsonapi = true

[coverage:run]
include =
napalm_fortios/*
source = napalm_fortios
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

setup(
name="napalm-fortios",
version="0.3.0",
version="0.3.1",
packages=find_packages(),
author="David Barroso",
author_email="dbarrosop@dravetech.com",
Expand Down
9 changes: 9 additions & 0 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[tox]
envlist = py27

[testenv]
deps =
-rrequirements-dev.txt

commands=
py.test

0 comments on commit 61c343d

Please sign in to comment.