def test_run_script_with_env_target_host_in_env(self): handle, script = self.mkstemp(dir=self.temp_dir) with os.fdopen(handle, "w") as fd: fd.writelines([ "#!/bin/sh\n", 'if [ "$__object" ]; then echo $__object; else echo no_env; fi\n' ]) os.chmod(script, 0o755) handle, remote_exec_path = self.mkstemp(dir=self.temp_dir) with os.fdopen(handle, 'w') as fd: fd.writelines(["#!/bin/sh\n", 'shift; cmd=$1; shift; $cmd "$@"\n']) os.chmod(remote_exec_path, 0o755) remote_exec = remote_exec_path remote_copy = "echo" r = remote.Remote(self.target_host, base_path=self.base_path, remote_exec=remote_exec, remote_copy=remote_copy) output = r.run_script(script, return_output=True) self.assertEqual(output, "no_env\n") handle, remote_exec_path = self.mkstemp(dir=self.temp_dir) with os.fdopen(handle, 'w') as fd: fd.writelines(["#!/bin/sh\n", 'shift; cmd=$1; eval $cmd\n']) os.chmod(remote_exec_path, 0o755) remote_exec = remote_exec_path env = { '__object': 'test_object', } r = remote.Remote(self.target_host, base_path=self.base_path, remote_exec=remote_exec, remote_copy=remote_copy) output = r.run_script(script, env=env, return_output=True) self.assertEqual(output, "test_object\n")
def setUp(self): self.temp_dir = self.mkdtemp() self.local_path = os.path.join(self.temp_dir, "local") self.remote_base_path = os.path.join(self.temp_dir, "remote") os.makedirs(self.remote_base_path) self.local = local.Local( target_host=self.target_host, base_path=self.local_path, exec_path=test.cdist_exec_path, add_conf_dirs=[conf_dir], ) self.local.create_files_dirs() self.remote = remote.Remote( target_host=self.target_host, remote_exec=self.remote_exec, remote_copy=self.remote_copy, base_path=self.remote_base_path) self.remote.create_files_dirs() self.explorer = explorer.Explorer( self.target_host, self.local, self.remote)
def setUp(self): self.local_dir = self.mkdtemp() self.hostdir = cdist.str_hash(self.target_host[0]) self.host_base_path = os.path.join(self.local_dir, self.hostdir) self.local = local.Local(target_host=self.target_host, target_host_tags=self.target_host_tags, base_root_path=self.host_base_path, host_dir_name=self.hostdir, exec_path=cdist.test.cdist_exec_path, add_conf_dirs=[conf_dir]) self.local.create_files_dirs() self.remote_dir = self.mkdtemp() remote_exec = self.remote_exec remote_copy = self.remote_copy self.remote = remote.Remote(target_host=self.target_host, remote_exec=remote_exec, remote_copy=remote_copy, base_path=self.remote_dir) self.remote.create_files_dirs() self.code = code.Code(self.target_host, self.local, self.remote) self.cdist_type = core.CdistType(self.local.type_path, '__dump_environment') self.cdist_object = core.CdistObject(self.cdist_type, self.local.object_path, 'whatever', self.local.object_marker_name) self.cdist_object.create()
def setUp(self): self.temp_dir = self.mkdtemp() self.local_path = os.path.join(self.temp_dir, "local") hostdir = cdist.str_hash(self.target_host[0]) base_root_path = os.path.join(self.local_path, hostdir) self.remote_base_path = os.path.join(self.temp_dir, "remote") os.makedirs(self.remote_base_path) self.local = local.Local( target_host=self.target_host, target_host_tags=self.target_host_tags, base_root_path=base_root_path, host_dir_name=hostdir, exec_path=test.cdist_exec_path, add_conf_dirs=[conf_dir], ) self.local.create_files_dirs() self.remote = remote.Remote(target_host=self.target_host, remote_exec=self.remote_exec, remote_copy=self.remote_copy, base_path=self.remote_base_path) self.remote.create_files_dirs() self.explorer = explorer.Explorer(self.target_host, self.local, self.remote)
def setUp(self): self.local_dir = self.mkdtemp() self.local = local.Local(target_host=self.target_host, base_path=self.local_dir, exec_path=cdist.test.cdist_exec_path, add_conf_dirs=[conf_dir]) self.local.create_files_dirs() self.remote_dir = self.mkdtemp() remote_exec = self.remote_exec remote_copy = self.remote_copy self.remote = remote.Remote(target_host=self.target_host, remote_exec=remote_exec, remote_copy=remote_copy, base_path=self.remote_dir) self.remote.create_files_dirs() self.code = code.Code(self.target_host, self.local, self.remote) self.cdist_type = core.CdistType(self.local.type_path, '__dump_environment') self.cdist_object = core.CdistObject(self.cdist_type, self.local.object_path, 'whatever') self.cdist_object.create()
def setUp(self): self.target_host = 'localhost' self.local_base_path = local_base_path self.out_path = self.mkdtemp() self.local = local.Local(self.target_host, self.local_base_path, self.out_path) self.local.create_directories() self.remote_base_path = self.mkdtemp() self.user = getpass.getuser() remote_exec = "ssh -o User=%s -q" % self.user remote_copy = "scp -o User=%s -q" % self.user self.remote = remote.Remote(self.target_host, self.remote_base_path, remote_exec, remote_copy) self.code = code.Code(self.target_host, self.local, self.remote) self.cdist_type = core.CdistType(self.local.type_path, '__dump_environment') self.cdist_object = core.CdistObject(self.cdist_type, self.local.object_path, 'whatever') self.cdist_object.create() self.log = logging.getLogger("cdist")
def setUp(self): self.temp_dir = self.mkdtemp() self.target_host = 'localhost' self.base_path = self.temp_dir user = getpass.getuser() remote_exec = "ssh -o User=%s -q" % user remote_copy = "scp -o User=%s -q" % user self.remote = remote.Remote(self.target_host, self.base_path, remote_exec, remote_copy)
def test_run_target_host_in_env(self): handle, remote_exec_path = self.mkstemp(dir=self.temp_dir) with os.fdopen(handle, 'w') as fd: fd.writelines(["#!/bin/sh\n", "echo $__target_host"]) os.chmod(remote_exec_path, 0o755) remote_exec = remote_exec_path remote_copy = "echo" r = remote.Remote(self.target_host, self.base_path, remote_exec, remote_copy) self.assertEqual(r.run('/bin/true', return_output=True), "%s\n" % self.target_host)
def setUp(self): # logging.root.setLevel(logging.TRACE) save_output_streams = False self.temp_dir = self.mkdtemp() self.local_dir = os.path.join(self.temp_dir, "local") self.hostdir = cdist.str_hash(self.target_host[0]) self.host_base_path = os.path.join(self.local_dir, self.hostdir) os.makedirs(self.host_base_path) self.local = local.Local(target_host=self.target_host, target_host_tags=None, base_root_path=self.host_base_path, host_dir_name=self.hostdir, exec_path=cdist.test.cdist_exec_path, add_conf_dirs=[conf_dir], save_output_streams=save_output_streams) self.local.create_files_dirs() self.remote_dir = self.mkdtemp() remote_exec = self.remote_exec remote_copy = self.remote_copy self.remote = remote.Remote( target_host=self.target_host, remote_exec=remote_exec, remote_copy=remote_copy, base_path=self.remote_dir, stdout_base_path=self.local.stdout_base_path, stderr_base_path=self.local.stderr_base_path, save_output_streams=save_output_streams) self.remote.create_files_dirs() self.code = code.Code(self.target_host, self.local, self.remote) self.manifest = manifest.Manifest(self.target_host, self.local) self.cdist_type = core.CdistType(self.local.type_path, '__write_to_stdout_and_stderr') self.cdist_object = core.CdistObject(self.cdist_type, self.local.object_path, self.local.object_marker_name, '') self.cdist_object.create() self.output_dirs = { 'object': { 'stdout': os.path.join(self.cdist_object.absolute_path, 'stdout'), 'stderr': os.path.join(self.cdist_object.absolute_path, 'stderr'), }, 'init': { 'stdout': os.path.join(self.local.base_path, 'stdout'), 'stderr': os.path.join(self.local.base_path, 'stderr'), }, }
def _init_remote(self, remote_copy, remote_exec): self.remote_base_path = os.environ.get('__cdist_remote_out_dir', "/var/lib/cdist") self.remote_copy = remote_copy self.remote_exec = remote_exec os.environ['__remote_copy'] = self.remote_copy os.environ['__remote_exec'] = self.remote_exec self.remote = remote.Remote(self.target_host, self.remote_base_path, self.remote_exec, self.remote_copy)
def create_remote(self, *args, **kwargs): if not args: args = (self.target_host, ) kwargs.setdefault('base_path', self.base_path) user = getpass.getuser() kwargs.setdefault('remote_exec', 'ssh -o User={} -q'.format(user)) kwargs.setdefault('remote_copy', 'scp -o User={} -q'.format(user)) if 'stdout_base_path' not in kwargs: stdout_path = os.path.join(self.temp_dir, 'stdout') os.makedirs(stdout_path, exist_ok=True) kwargs['stdout_base_path'] = stdout_path if 'stderr_base_path' not in kwargs: stderr_path = os.path.join(self.temp_dir, 'stderr') os.makedirs(stderr_path, exist_ok=True) kwargs['stderr_base_path'] = stderr_path return remote.Remote(*args, **kwargs)
def setUp(self): self.temp_dir = self.mkdtemp() self.target_host = ( 'localhost', 'localhost', 'localhost', ) # another temp dir for remote base path self.base_path = self.mkdtemp() user = getpass.getuser() remote_exec = "ssh -o User=%s -q" % user remote_copy = "scp -o User=%s -q" % user self.remote = remote.Remote(self.target_host, base_path=self.base_path, remote_exec=remote_exec, remote_copy=remote_copy)
def setUp(self): self.target_host = 'localhost' self.local_base_path = local_base_path self.out_path = self.mkdtemp() self.local = local.Local(self.target_host, self.local_base_path, self.out_path) self.local.create_directories() self.remote_base_path = self.mkdtemp() self.user = getpass.getuser() remote_exec = "ssh -o User=%s -q" % self.user remote_copy = "scp -o User=%s -q" % self.user self.remote = remote.Remote(self.target_host, self.remote_base_path, remote_exec, remote_copy) self.explorer = explorer.Explorer(self.target_host, self.local, self.remote) self.log = logging.getLogger(self.target_host)
def __init__(self, target_host, initial_manifest=False, base_path=False, exec_path=sys.argv[0], debug=False): self.debug = debug self.target_host = target_host # Only required for testing self.exec_path = exec_path # Context logging self.log = logging.getLogger(self.target_host) self.log.addFilter(self) # Local base directory self.base_path = (base_path or os.path.abspath( os.path.join(os.path.dirname(__file__), os.pardir, os.pardir))) # Local temp directory # FIXME: if __cdist_out_dir can be given from the outside, the same directory will be used for all hosts if '__cdist_out_dir' in os.environ: self.out_path = os.environ['__cdist_out_dir'] self.temp_dir = None else: self.temp_dir = tempfile.mkdtemp() self.out_path = os.path.join(self.temp_dir, "out") self.local = local.Local(self.target_host, self.base_path, self.out_path) self.initial_manifest = (initial_manifest or os.path.join( self.local.manifest_path, "init")) # Remote self.remote_base_path = os.environ.get('__cdist_remote_out_dir', "/var/lib/cdist") self.remote_exec = os.environ.setdefault('__remote_exec', "ssh -o User=root -q") self.remote_copy = os.environ.setdefault('__remote_copy', "scp -o User=root -q") self.remote = remote.Remote(self.target_host, self.remote_base_path, self.remote_exec, self.remote_copy)