Auth to become (#33319)

* terminal.on_(de)?authorize -> terminal.on_(un)?become

* Update network_cli

* Readd on_(de)?authorize as wrappers

* Update tests
pull/31372/merge
Nathaniel Case 7 years ago committed by GitHub
parent 53d9f9ffae
commit a1da3dc997
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -144,11 +144,11 @@ class Connection(ConnectionBase):
messages = ['updating play_context for connection'] messages = ['updating play_context for connection']
if self._play_context.become is False and play_context.become is True: if self._play_context.become is False and play_context.become is True:
auth_pass = play_context.become_pass auth_pass = play_context.become_pass
self._terminal.on_authorize(passwd=auth_pass) self._terminal.on_become(passwd=auth_pass)
messages.append('authorizing connection') messages.append('authorizing connection')
elif self._play_context.become is True and not play_context.become: elif self._play_context.become is True and not play_context.become:
self._terminal.on_deauthorize() self._terminal.on_unbecome()
messages.append('deauthorizing connection') messages.append('deauthorizing connection')
self._play_context = play_context self._play_context = play_context
@ -196,9 +196,9 @@ class Connection(ConnectionBase):
self._terminal.on_open_shell() self._terminal.on_open_shell()
if self._play_context.become and self._play_context.become_method == 'enable': if self._play_context.become and self._play_context.become_method == 'enable':
display.vvvv('firing event: on_authorize', host=self._play_context.remote_addr) display.vvvv('firing event: on_become', host=self._play_context.remote_addr)
auth_pass = self._play_context.become_pass auth_pass = self._play_context.become_pass
self._terminal.on_authorize(passwd=auth_pass) self._terminal.on_become(passwd=auth_pass)
display.vvvv('ssh connection has completed successfully', host=self._play_context.remote_addr) display.vvvv('ssh connection has completed successfully', host=self._play_context.remote_addr)
self._connected = True self._connected = True

@ -91,7 +91,7 @@ class TerminalBase(with_metaclass(ABCMeta, object)):
""" """
pass pass
def on_authorize(self, passwd=None): def on_become(self, passwd=None):
"""Called when privilege escalation is requested """Called when privilege escalation is requested
:kwarg passwd: String containing the password :kwarg passwd: String containing the password
@ -103,7 +103,7 @@ class TerminalBase(with_metaclass(ABCMeta, object)):
""" """
pass pass
def on_deauthorize(self): def on_unbecome(self):
"""Called when privilege deescalation is requested """Called when privilege deescalation is requested
This method is called when the privilege changed from escalated This method is called when the privilege changed from escalated
@ -111,3 +111,15 @@ class TerminalBase(with_metaclass(ABCMeta, object)):
of this method to actually perform the deauthorization procedure of this method to actually perform the deauthorization procedure
""" """
pass pass
def on_authorize(self, passwd=None):
"""Deprecated method for privilege escalation
:kwarg passwd: String containing the password
"""
return self.on_become(passwd)
def on_deauthorize(self):
"""Deprecated method for privilege deescalation
"""
return self.on_unbecome()

@ -50,7 +50,7 @@ class TerminalModule(TerminalBase):
except AnsibleConnectionFailure: except AnsibleConnectionFailure:
raise AnsibleConnectionFailure('unable to disable terminal pager') raise AnsibleConnectionFailure('unable to disable terminal pager')
def on_authorize(self, passwd=None): def on_become(self, passwd=None):
if self._get_prompt().strip().endswith(b'#'): if self._get_prompt().strip().endswith(b'#'):
return return

@ -53,7 +53,7 @@ class TerminalModule(TerminalBase):
except AnsibleConnectionFailure: except AnsibleConnectionFailure:
raise AnsibleConnectionFailure('unable to set terminal parameters') raise AnsibleConnectionFailure('unable to set terminal parameters')
def on_authorize(self, passwd=None): def on_become(self, passwd=None):
if self._get_prompt().endswith(b'#'): if self._get_prompt().endswith(b'#'):
return return
@ -67,7 +67,7 @@ class TerminalModule(TerminalBase):
except AnsibleConnectionFailure: except AnsibleConnectionFailure:
raise AnsibleConnectionFailure('unable to elevate privilege to enable mode') raise AnsibleConnectionFailure('unable to elevate privilege to enable mode')
def on_deauthorize(self): def on_unbecome(self):
prompt = self._get_prompt() prompt = self._get_prompt()
if prompt is None: if prompt is None:
# if prompt is None most likely the terminal is hung up at a prompt # if prompt is None most likely the terminal is hung up at a prompt

@ -42,7 +42,7 @@ class TerminalModule(TerminalBase):
re.compile(br"'[^']' +returned error code: ?\d+"), re.compile(br"'[^']' +returned error code: ?\d+"),
] ]
def on_authorize(self, passwd=None): def on_become(self, passwd=None):
if self._get_prompt().endswith('#'): if self._get_prompt().endswith('#'):
return return
@ -60,7 +60,7 @@ class TerminalModule(TerminalBase):
except AnsibleConnectionFailure: except AnsibleConnectionFailure:
raise AnsibleConnectionFailure('unable to set terminal parameters') raise AnsibleConnectionFailure('unable to set terminal parameters')
def on_deauthorize(self): def on_unbecome(self):
prompt = self._get_prompt() prompt = self._get_prompt()
if prompt is None: if prompt is None:
# if prompt is None most likely the terminal is hung up at a prompt # if prompt is None most likely the terminal is hung up at a prompt

@ -51,7 +51,7 @@ class TerminalModule(TerminalBase):
except AnsibleConnectionFailure: except AnsibleConnectionFailure:
raise AnsibleConnectionFailure('unable to set terminal parameters') raise AnsibleConnectionFailure('unable to set terminal parameters')
def on_authorize(self, passwd=None): def on_become(self, passwd=None):
if self._get_prompt().endswith(b'#'): if self._get_prompt().endswith(b'#'):
return return
@ -65,7 +65,7 @@ class TerminalModule(TerminalBase):
except AnsibleConnectionFailure: except AnsibleConnectionFailure:
raise AnsibleConnectionFailure('unable to elevate privilege to enable mode') raise AnsibleConnectionFailure('unable to elevate privilege to enable mode')
def on_deauthorize(self): def on_unbecome(self):
prompt = self._get_prompt() prompt = self._get_prompt()
if prompt is None: if prompt is None:
# if prompt is None most likely the terminal is hung up at a prompt # if prompt is None most likely the terminal is hung up at a prompt

@ -67,7 +67,7 @@ class TerminalModule(TerminalBase):
except AnsibleConnectionFailure: except AnsibleConnectionFailure:
raise AnsibleConnectionFailure('unable to set terminal parameters') raise AnsibleConnectionFailure('unable to set terminal parameters')
def on_authorize(self, passwd=None): def on_become(self, passwd=None):
if self._get_prompt().endswith(b'#'): if self._get_prompt().endswith(b'#'):
return return
@ -87,7 +87,7 @@ class TerminalModule(TerminalBase):
msg = 'unable to elevate privilege to enable mode' msg = 'unable to elevate privilege to enable mode'
raise AnsibleConnectionFailure(msg) raise AnsibleConnectionFailure(msg)
def on_deauthorize(self): def on_unbecome(self):
prompt = self._get_prompt() prompt = self._get_prompt()
if prompt is None: if prompt is None:
# if prompt is None most likely the terminal is hung up at a prompt # if prompt is None most likely the terminal is hung up at a prompt

@ -55,7 +55,7 @@ class TerminalModule(TerminalBase):
except AnsibleConnectionFailure: except AnsibleConnectionFailure:
raise AnsibleConnectionFailure('unable to set terminal parameters') raise AnsibleConnectionFailure('unable to set terminal parameters')
def on_authorize(self, passwd=None): def on_become(self, passwd=None):
if self._get_prompt().endswith(b'#'): if self._get_prompt().endswith(b'#'):
return return
@ -69,7 +69,7 @@ class TerminalModule(TerminalBase):
except AnsibleConnectionFailure: except AnsibleConnectionFailure:
raise AnsibleConnectionFailure('unable to elevate privilege to enable mode') raise AnsibleConnectionFailure('unable to elevate privilege to enable mode')
def on_deauthorize(self): def on_unbecome(self):
prompt = self._get_prompt() prompt = self._get_prompt()
if prompt is None: if prompt is None:
# if prompt is None most likely the terminal is hung up at a prompt # if prompt is None most likely the terminal is hung up at a prompt

@ -52,7 +52,7 @@ class TerminalModule(TerminalBase):
except AnsibleConnectionFailure: except AnsibleConnectionFailure:
raise AnsibleConnectionFailure('unable to set terminal parameters') raise AnsibleConnectionFailure('unable to set terminal parameters')
def on_authorize(self, passwd=None): def on_become(self, passwd=None):
if self._get_prompt().endswith(b'#'): if self._get_prompt().endswith(b'#'):
return return
@ -68,7 +68,7 @@ class TerminalModule(TerminalBase):
except AnsibleConnectionFailure: except AnsibleConnectionFailure:
raise AnsibleConnectionFailure('unable to elevate privilege to enable mode') raise AnsibleConnectionFailure('unable to elevate privilege to enable mode')
def on_deauthorize(self): def on_unbecome(self):
prompt = self._get_prompt() prompt = self._get_prompt()
if prompt is None: if prompt is None:
# if prompt is None most likely the terminal is hung up at a prompt # if prompt is None most likely the terminal is hung up at a prompt

@ -48,7 +48,7 @@ class TerminalModule(TerminalBase):
except AnsibleConnectionFailure: except AnsibleConnectionFailure:
raise AnsibleConnectionFailure('unable to disable terminal pager') raise AnsibleConnectionFailure('unable to disable terminal pager')
def on_authorize(self, passwd=None): def on_become(self, passwd=None):
if self._get_prompt().strip().endswith(b'#'): if self._get_prompt().strip().endswith(b'#'):
return return
@ -64,7 +64,7 @@ class TerminalModule(TerminalBase):
except AnsibleConnectionFailure: except AnsibleConnectionFailure:
raise AnsibleConnectionFailure('unable to elevate privilege to enable mode') raise AnsibleConnectionFailure('unable to elevate privilege to enable mode')
def on_deauthorize(self): def on_unbecome(self):
prompt = self._get_prompt() prompt = self._get_prompt()
if prompt is None: if prompt is None:
# if prompt is None most likely the terminal is hung up at a prompt # if prompt is None most likely the terminal is hung up at a prompt

@ -74,7 +74,7 @@ class TestConnectionClass(unittest.TestCase):
conn._connect() conn._connect()
self.assertTrue(conn._terminal.on_open_shell.called) self.assertTrue(conn._terminal.on_open_shell.called)
self.assertFalse(conn._terminal.on_authorize.called) self.assertFalse(conn._terminal.on_become.called)
conn._play_context.become = True conn._play_context.become = True
conn._play_context.become_method = 'enable' conn._play_context.become_method = 'enable'
@ -82,7 +82,7 @@ class TestConnectionClass(unittest.TestCase):
conn._connected = False conn._connected = False
conn._connect() conn._connect()
conn._terminal.on_authorize.assert_called_with(passwd='password') conn._terminal.on_become.assert_called_with(passwd='password')
@patch("ansible.plugins.connection.paramiko_ssh.Connection.close") @patch("ansible.plugins.connection.paramiko_ssh.Connection.close")
def test_network_cli_close(self, mocked_super): def test_network_cli_close(self, mocked_super):

Loading…
Cancel
Save