Skip to content
Snippets Groups Projects
Commit 1e00fd16 authored by israelad's avatar israelad
Browse files

Integrate sshproxy layer so netutil actions can be run against a remote host

Fix lint errors

Signed-off-by: default avatarAdam Israel <adam.israel@canonical.com>
parent 27aa41dd
No related branches found
No related tags found
No related merge requests found
repo: git@github.com:AdamIsrael/layer-netutils.git
includes: ['layer:basic'] # if you use any interfaces, add them here
includes: ['layer:basic', 'layer:sshproxy']
options:
basic:
packages:
- traceroute
- nmap
- iperf3
from charmhelpers.core.hookenv import (
config,
status_set,
action_get,
action_set,
action_fail,
log,
)
from charms.reactive import (
......@@ -13,8 +11,7 @@ from charms.reactive import (
set_state as set_flag,
remove_state as remove_flag,
)
import subprocess
import charms.sshproxy
@when_not('netutils.ready')
......@@ -22,6 +19,7 @@ def ready():
status_set('active', 'Ready!')
set_flag('netutils.ready')
@when('actions.dig')
def dig():
err = ''
......@@ -40,7 +38,7 @@ def dig():
if nstype:
cmd += " -t {}".format(nstype)
result, err = _run(cmd)
result, err = charms.sshproxy._run(cmd)
except:
action_fail('dig command failed:' + err)
else:
......@@ -48,11 +46,14 @@ def dig():
finally:
remove_flag('actions.dig')
@when('actions.nmap')
def nmap():
err = ''
try:
result, err = _run('nmap {}'.format(action_get('destination')))
result, err = charms.sshproxy._run(
'nmap {}'.format(action_get('destination'))
)
except:
action_fail('nmap command failed:' + err)
else:
......@@ -65,7 +66,7 @@ def nmap():
def ping():
err = ''
try:
result, err = _run('ping -qc {} {}'.format(
result, err = charms.sshproxy._run('ping -qc {} {}'.format(
action_get('count'), action_get('destination'))
)
......@@ -78,11 +79,15 @@ def ping():
remove_flag('actions.ping')
@when('actions.traceroute')
def traceroute():
try:
result, err = _run('traceroute -m {} {}'.format(action_get('hops'), action_get('destination')))
result, err = charms.sshproxy._run(
'traceroute -m {} {}'.format(
action_get('hops'),
action_get('destination')
)
)
except:
action_fail('traceroute command failed')
else:
......@@ -90,22 +95,3 @@ def traceroute():
action_set({'output': result})
finally:
remove_flag('actions.traceroute')
def _run(cmd, env=None):
if isinstance(cmd, str):
cmd = cmd.split() if ' ' in cmd else [cmd]
log(cmd)
p = subprocess.Popen(cmd,
env=env,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
retcode = p.poll()
if retcode > 0:
raise subprocess.CalledProcessError(returncode=retcode,
cmd=cmd,
output=stderr.decode("utf-8").strip())
return (stdout.decode('utf-8'), stderr.decode('utf-8'))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment