示例#1
0
 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
示例#2
0
 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}'")