feature to localize prompt search login to iosxr shared module
this localizes the cli prompt search logic to the iosxr shared module instead of using the common regexp list in shell.py
This commit is contained in:
parent
73c3f35112
commit
39a576697d
1 changed files with 21 additions and 3 deletions
|
@ -27,6 +27,21 @@ NET_COMMON_ARGS = dict(
|
||||||
provider=dict()
|
provider=dict()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
CLI_PROMPTS_RE = [
|
||||||
|
re.compile(r"[\r\n]?[\w+\-\.:\/\[\]]+(?:\([^\)]+\)){,3}(?:>|#) ?$"),
|
||||||
|
re.compile(r"\[\w+\@[\w\-\.]+(?: [^\]])\] ?[>#\$] ?$")
|
||||||
|
]
|
||||||
|
|
||||||
|
CLI_ERRORS_RE = [
|
||||||
|
re.compile(r"% ?Error"),
|
||||||
|
re.compile(r"% ?Bad secret"),
|
||||||
|
re.compile(r"invalid input", re.I),
|
||||||
|
re.compile(r"(?:incomplete|ambiguous) command", re.I),
|
||||||
|
re.compile(r"connection timed out", re.I),
|
||||||
|
re.compile(r"[^\r\n]+ not found", re.I),
|
||||||
|
re.compile(r"'[^']' +returned error code: ?\d+"),
|
||||||
|
]
|
||||||
|
|
||||||
def to_list(val):
|
def to_list(val):
|
||||||
if isinstance(val, (list, tuple)):
|
if isinstance(val, (list, tuple)):
|
||||||
return list(val)
|
return list(val)
|
||||||
|
@ -48,9 +63,9 @@ class Cli(object):
|
||||||
username = self.module.params['username']
|
username = self.module.params['username']
|
||||||
password = self.module.params['password']
|
password = self.module.params['password']
|
||||||
|
|
||||||
self.shell = Shell()
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
self.shell = Shell(kickstart=False, prompts_re=CLI_PROMPTS_RE,
|
||||||
|
errors_re=CLI_ERRORS_RE)
|
||||||
self.shell.open(host, port=port, username=username, password=password)
|
self.shell.open(host, port=port, username=username, password=password)
|
||||||
except Exception, exc:
|
except Exception, exc:
|
||||||
msg = 'failed to connecto to %s:%s - %s' % (host, port, str(exc))
|
msg = 'failed to connecto to %s:%s - %s' % (host, port, str(exc))
|
||||||
|
@ -98,7 +113,10 @@ class NetworkModule(AnsibleModule):
|
||||||
return responses
|
return responses
|
||||||
|
|
||||||
def execute(self, commands, **kwargs):
|
def execute(self, commands, **kwargs):
|
||||||
return self.connection.send(commands)
|
try:
|
||||||
|
return self.connection.send(commands)
|
||||||
|
except ShellError, exc:
|
||||||
|
self.fail_json(msg=exc.message, command=exc.command)
|
||||||
|
|
||||||
def disconnect(self):
|
def disconnect(self):
|
||||||
self.connection.close()
|
self.connection.close()
|
||||||
|
|
Loading…
Reference in a new issue