Skip to content

Commit

Permalink
Merge pull request #11 from omaralghussein/master
Browse files Browse the repository at this point in the history
fix juniper CLI mode
  • Loading branch information
Ali-aqrabawi committed Jul 30, 2019
2 parents 039afae + cc27e3f commit cba7a01
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 10 deletions.
4 changes: 2 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,12 @@ Example of interacting with Cisco IOS devices:
dev1 = { 'username' : 'user',
'password' : 'pass',
'device_type': 'cisco_ios',
'host': 'ip address',
'ip': 'ip address',
}
dev2 = { 'username' : 'user',
'password' : 'pass',
'device_type': 'cisco_ios',
'host': 'ip address',
'ip': 'ip address',
}
devices = [dev1, dev2]
tasks = [task(dev) for dev in devices]
Expand Down
14 changes: 8 additions & 6 deletions aionet/vendors/devices/base_junos.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,15 +72,17 @@ async def _set_base_prompt(self):
# Strip off trailing terminator
if "@" in prompt:
prompt = prompt.split("@")[1]
self._base_prompt = prompt
self.device_prompt = prompt
delimiters = map(re.escape, type(self)._delimiter_list)
delimiters = r"|".join(delimiters)
base_prompt = re.escape(self._base_prompt[:12])
base_prompt = re.escape(self.device_prompt[:12])
pattern = type(self)._pattern
self._base_pattern = pattern.format(delimiters=delimiters)
self._logger.debug("Base Prompt: %s" % self._base_prompt)
self._logger.debug("Base Pattern: %s" % self._base_pattern)
return self._base_prompt
base_pattern = pattern.format(delimiters=delimiters)
self._logger.debug("Base Prompt: %s" % self.device_prompt)
self._logger.debug("Base Pattern: %s" % base_pattern)
self.prompt_pattern = base_pattern
self._conn.set_base_pattern(base_pattern)
return self.device_prompt

async def send_config_set(
self,
Expand Down
20 changes: 18 additions & 2 deletions aionet/vendors/devices/juniper/juniper_junos.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from aionet.vendors.terminal_modes.juniper import CliMode
from aionet.vendors.terminal_modes.juniper import CliMode,ConfigMode
from aionet.vendors.devices.base_junos import BAseJunOSDevice


Expand All @@ -15,12 +15,28 @@ def __init__(self, *args, **kwargs):
device=self
)

self.config_mode = ConfigMode(
enter_command=type(self)._config_command,
check_string=type(self)._config_check,
exit_command='exit',
device=self,
parent=self.cli_mode

)

_cli_check = ">"
"""Checking string for shell mode"""

_cli_command = "cli"
"""Command for entering to cli mode"""

_config_check = "#"
"""Checking string for shell mode"""

_config_command = "configure"
"""Command for entering to cli mode"""

async def _session_preparation(self):
await self.cli_mode()
await super()._session_preparation()
await self.cli_mode()

9 changes: 9 additions & 0 deletions aionet/vendors/terminal_modes/juniper.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,15 @@


class ConfigMode(CiscoConfigMode):
async def check(self, force=False):
"""Check if are in configuration mode. Return boolean"""
if self.device.current_terminal is not None and not force:
if self.device.current_terminal == self:
return True
await self.device.send_new_line()
output = await self.device.send_new_line()

return self._check_string in output
pass


Expand Down

0 comments on commit cba7a01

Please sign in to comment.