def test_remote_file_preserve_permissions(self): remoter = self.remoter_cls() some_file = "/some/path/some.file" with remote_file(remoter=remoter, remote_path=some_file, preserve_ownership=False, preserve_permissions=True) as fobj: fobj.write("test data") assert remoter.command_to_run == f'stat -c "%a" {some_file}' assert f"chmod 644 {some_file}" == remoter.command_to_run
def test_remote_file(self): remoter = self.remoter_cls() some_file = "/some/path/some.file" with remote_file(remoter=remoter, remote_path=some_file) as fobj: fobj.write("test data") self.assertEqual(remoter.rf_src, some_file) self.assertEqual(remoter.sf_dst, "temporary") self.assertTrue(remoter.rf_dst.startswith("/tmp/sct")) self.assertTrue(remoter.rf_dst.endswith(os.path.basename(some_file))) self.assertEqual(remoter.rf_dst, remoter.sf_src) with open(remoter.sf_src) as fobj: self.assertEqual(fobj.read(), "test data") self.assertEqual(remoter.command_to_run, f"mv 'temporary' '{some_file}'")
def test_remote_file_preserve_readonly(self): remoter = self.remoter_cls() some_file = "/some/path/some.file" with remote_file(remoter=remoter, remote_path=some_file, preserve_ownership=False, preserve_permissions=True) as fobj: fobj.write(remoter.rf_data) assert remoter.command_to_run == f'stat -c "%a" {some_file}' self.assertEqual(remoter.rf_src, some_file) self.assertTrue(remoter.rf_dst.startswith("/tmp/sct")) self.assertTrue(remoter.rf_dst.endswith(os.path.basename(some_file))) self.assertEqual(remoter.sf_data, None)
def test_remote_file(self): remoter = self.remoter_cls() some_file = "/some/path/some.file" with remote_file(remoter=remoter, remote_path=some_file, preserve_ownership=False, preserve_permissions=False) as fobj: fobj.write("test data") self.assertEqual(remoter.rf_src, some_file) self.assertEqual(remoter.sf_dst, "temporary") self.assertTrue(remoter.rf_dst.startswith("/tmp/sct")) self.assertTrue(remoter.rf_dst.endswith(os.path.basename(some_file))) self.assertEqual(remoter.rf_dst, remoter.sf_src) self.assertEqual(remoter.sf_data, "test data") self.assertFalse(os.path.exists(remoter.sf_src)) self.assertEqual(remoter.command_to_run, f"mv 'temporary' '{some_file}'")
@cache def get_docker_hub_credentials() -> dict: LOGGER.info("Get Docker Hub credentials") return KeyStore().get_docker_hub_credentials() def docker_hub_login(remoter: CommandRunner) -> None: docker_info = remoter.run("docker info", ignore_status=True) if docker_info.failed: remoter.log.info( "Can't get docker info, probably there is no running Docker daemon on the host" ) return if match := re.search(r"^\s+Username: (.+)$", docker_info.stdout, re.MULTILINE): remoter.log.info("Docker daemon is already logged in as `%s'.", match.group(1)) return docker_hub_creds = get_docker_hub_credentials() password_file = remoter.run("mktemp").stdout.strip() with remote_file(remoter=remoter, remote_path=password_file) as fobj: fobj.write(docker_hub_creds["password"]) remoter.log.info("Login to Docker Hub as `%s'", docker_hub_creds["username"]) remoter.run( cmd= f"docker login --username {docker_hub_creds['username']} --password-stdin < '{password_file}'" ) remoter.run(f"rm '{password_file}'")