Пример #1
0
    def test_creating_progressbar(self, click_patch):
        progressbar_mock = Mock()
        click_patch.progressbar.return_value = progressbar_mock

        actual = progressbar(100, 'this is a label')

        self.assertEquals(actual, progressbar_mock)

        click_patch.progressbar.assert_called_with(length=100, label='this is a label', show_pos=True)
Пример #2
0
    def test_creating_progressbar(self, click_patch):
        progressbar_mock = Mock()
        click_patch.progressbar.return_value = progressbar_mock

        actual = progressbar(100, "this is a label")

        self.assertEqual(actual, progressbar_mock)

        click_patch.progressbar.assert_called_with(length=100, label="this is a label", show_pos=True)
Пример #3
0
def unzip_from_uri(uri, layer_zip_path, unzip_output_dir, progressbar_label):
    """
    Download the LayerVersion Zip to the Layer Pkg Cache

    Parameters
    ----------
    uri str
        Uri to download from
    layer_zip_path str
        Path to where the content from the uri should be downloaded to
    unzip_output_dir str
        Path to unzip the zip to
    progressbar_label str
        Label to use in the Progressbar
    """
    try:
        get_request = requests.get(uri,
                                   stream=True,
                                   verify=os.environ.get(
                                       'AWS_CA_BUNDLE', True))

        with open(layer_zip_path, 'wb') as local_layer_file:
            file_length = int(get_request.headers['Content-length'])

            with progressbar(file_length, progressbar_label) as p_bar:
                # Set the chunk size to None. Since we are streaming the request, None will allow the data to be
                # read as it arrives in whatever size the chunks are received.
                for data in get_request.iter_content(chunk_size=None):
                    local_layer_file.write(data)
                    p_bar.update(len(data))

        # Forcefully set the permissions to 700 on files and directories. This is to ensure the owner
        # of the files is the only one that can read, write, or execute the files.
        unzip(layer_zip_path, unzip_output_dir, permission=0o700)

    finally:
        # Remove the downloaded zip file
        path_to_layer = Path(layer_zip_path)
        if path_to_layer.exists():
            path_to_layer.unlink()
Пример #4
0
def unzip_from_uri(uri, layer_zip_path, unzip_output_dir, progressbar_label):
    """
    Download the LayerVersion Zip to the Layer Pkg Cache

    Parameters
    ----------
    uri str
        Uri to download from
    layer_zip_path str
        Path to where the content from the uri should be downloaded to
    unzip_output_dir str
        Path to unzip the zip to
    progressbar_label str
        Label to use in the Progressbar
    """
    try:
        get_request = requests.get(uri, stream=True)

        with open(layer_zip_path, 'wb') as local_layer_file:
            file_length = int(get_request.headers['Content-length'])

            with progressbar(file_length, progressbar_label) as p_bar:
                # Set the chunk size to None. Since we are streaming the request, None will allow the data to be
                # read as it arrives in whatever size the chunks are received.
                for data in get_request.iter_content(chunk_size=None):
                    local_layer_file.write(data)
                    p_bar.update(len(data))

        # Forcefully set the permissions to 700 on files and directories. This is to ensure the owner
        # of the files is the only one that can read, write, or execute the files.
        unzip(layer_zip_path, unzip_output_dir, permission=0o700)

    finally:
        # Remove the downloaded zip file
        path_to_layer = Path(layer_zip_path)
        if path_to_layer.exists():
            path_to_layer.unlink()