Пример #1
0
    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)
Пример #2
0
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
Пример #3
0
    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)