Beispiel #1
0
    def backup(self):
        assert self.cmd
        assert self.container
        assert self.filename

        archivate.archivate_container_cmd_output(
            self.archive, self.container, self.cmd, self.filename)
Beispiel #2
0
    def backup(self):
        assert self.cmd
        assert self.container
        assert self.filename

        archivate.archivate_container_cmd_output(
            self.archive, self.container, self.cmd, self.filename)
Beispiel #3
0
 def backup(self):
     assert self.container
     assert self.backup_directory
     stdout, _ = docker.run_in_container(
         self.container, ["find", self.backup_directory, "-type", "f"],
         stdout=subprocess.PIPE)
     filenames = stdout.strip().split()
     for filename in filenames:
         filename = filename[len(self.backup_directory):].lstrip("\/")
         if filename in self.banned_files:
             continue
         if self.allowed_files is not None \
                 and filename not in self.allowed_files:
             continue
         path = os.path.join(self.backup_directory, filename)
         archivate.archivate_container_cmd_output(
             self.archive, self.container, ["cat", path],
             "{0}/{1}".format(self.container, filename))
Beispiel #4
0
 def backup(self):
     assert self.container
     assert self.backup_directory
     stdout, _ = docker.run_in_container(
         self.container,
         ["find", self.backup_directory, "-type", "f"],
         stdout=subprocess.PIPE)
     filenames = stdout.strip().split()
     for filename in filenames:
         filename = filename[len(self.backup_directory):].lstrip("\/")
         if filename in self.banned_files:
             continue
         if self.allowed_files is not None \
                 and filename not in self.allowed_files:
             continue
         path = os.path.join(self.backup_directory, filename)
         archivate.archivate_container_cmd_output(
             self.archive,
             self.container,
             ["cat", path],
             "{0}/{1}".format(self.container, filename)
         )
Beispiel #5
0
def test_archivate_container_cmd_output(mocker):
    test_archive = mocker.Mock()
    container = "test_container"
    cmd = ["test", "cmd"]
    filename = "archive_path"
    output_data = "output_data"
    docker_runnner = mocker.patch(
        "octane.util.docker.run_in_container",
        return_value=(output_data, None))
    io_mock = mocker.patch("io.BytesIO", return_value=io.BytesIO())
    mock_tar = mocker.patch("tarfile.TarInfo")
    archivate.archivate_container_cmd_output(
        test_archive, container, cmd, filename)

    docker_runnner.assert_called_once_with(
        container, cmd, stdout=subprocess.PIPE)
    io_mock.assert_called_once_with()
    mock_tar.assert_called_once_with(filename)
    tar_info = mock_tar.return_value
    assert tar_info.size == len(output_data)
    test_archive.addfile.assert_called_once_with(
        tar_info, io_mock.return_value)
    assert io_mock.return_value.getvalue() == output_data