def test_calling_context_hostname(self): # with no username specified with Sultan.load(hostname='google.com') as sultan: user = getpass.getuser() self.assertEqual(str(sultan.ls("-lah", "/home")), "ssh %[email protected] 'ls -lah /home;'" % user) # local user with Sultan.load(hostname='google.com', user=getpass.getuser()) as sultan: user = getpass.getuser() self.assertEqual(str(sultan.ls("-lah", "/home")), "ssh %[email protected] 'ls -lah /home;'" % user) # different user with Sultan.load(hostname='google.com', user="******") as sultan: user = "******" self.assertEqual(str(sultan.ls("-lah", "/home")), "ssh %[email protected] 'ls -lah /home;'" % user) # different user as sudo with Sultan.load(hostname='google.com', user="******", sudo=True) as sultan: user = "******" self.assertEqual(str(sultan.ls("-lah", "/home")), "ssh %[email protected] 'sudo su - obama -c \'ls -lah /home;\''" % user) # different port and different user as sudo config = SSHConfig(port=2345) with Sultan.load(hostname='google.com', user='******', sudo=True, ssh_config=config) as sultan: user = '******' self.assertEqual(str(sultan.ls('-lah', '/home')), "ssh -p 2345 %[email protected] 'sudo su - obama -c \'ls -lah /home;\''" % user)
def run_ssh_cmd(host_server, sshkey, cmd): config = SSHConfig(identity_file=sshkey, option='StrictHostKeyChecking=no') with Sultan.load(user='******', hostname=host_server, ssh_config=config) as s: result = eval('s.{}.run()'.format(cmd)) if 'deploy_galahad' in str(cmd): logger.info('\nstdout: {}\nstderr: {}\nsuccess: {}'.format( pformat(result.stdout), pformat(result.stderr), pformat(result.is_success))) logger.info('\nstdout: {}\nstderr: {}\nsuccess: {}'.format( pformat(result.stdout), pformat(result.stderr), pformat(result.is_success))) assert result.rc == 0 return result
def test_calling_context(self): sultan = Sultan.load(cwd='/tmp', test_key='test_val') self.assertEqual(sultan.current_context, { 'cwd': '/tmp', 'env': None, 'sudo': False, 'logging': True, 'test_key': 'test_val', 'user': getpass.getuser(), 'hostname': None, 'ssh_config': '', 'src': None }) # cwd with Sultan.load(cwd='/tmp') as sultan: self.assertEqual(sultan.current_context, { 'cwd': '/tmp', 'env': None, 'sudo': False, 'logging': True, 'user': getpass.getuser(), 'hostname': None, 'ssh_config': '', 'src': None }) # sudo with Sultan.load(cwd='/tmp', sudo=True) as sultan: self.assertEqual(sultan.current_context, { 'cwd': '/tmp', 'env': None, 'sudo': True, 'logging': True, 'user': getpass.getuser(), 'hostname': None, 'ssh_config': '', 'src': None }) with Sultan.load(cwd='/tmp', sudo=False, user="******") as sultan: self.assertEqual(sultan.current_context, { 'cwd': '/tmp', 'env': None, 'sudo': False, 'logging': True, 'user': '******', 'hostname': None, 'ssh_config': '', 'src': None }) with Sultan.load(sudo=True) as sultan: self.assertEqual(sultan.current_context, { 'cwd': None, 'env': None, 'sudo': True, 'logging': True, 'user': getpass.getuser(), 'hostname': None, 'ssh_config': '', 'src': None }) # hostname with Sultan.load(hostname='localhost') as sultan: self.assertEqual(sultan.current_context, { 'cwd': None, 'env': None, 'sudo': False, 'logging': True, 'user': getpass.getuser(), 'hostname': 'localhost', 'ssh_config': '', 'src': None }) # set environment with Sultan.load(env={'path': ''}) as sultan: self.assertEqual(sultan.current_context, { 'cwd': None, 'env': {'path': ''}, 'sudo': False, 'logging': True, 'user': getpass.getuser(), 'hostname': None, 'ssh_config': '', 'src': None }) # set port config = SSHConfig(port=2222) with Sultan.load(ssh_config=config) as sultan: self.assertEqual(sultan.current_context, { 'cwd': None, 'env': None, 'sudo': False, 'logging': True, 'user': getpass.getuser(), 'hostname': None, 'ssh_config': '-p 2222', 'src': None }) # set src filehandle, filepath = tempfile.mkstemp() try: with Sultan.load(src=filepath) as s: self.assertEqual(s.current_context, { 'cwd': None, 'env': None, 'sudo': False, 'logging': True, 'user': getpass.getuser(), 'hostname': None, 'ssh_config': '', 'src': filepath }) finally: if os.path.exists(filepath): os.unlink(filepath)