This is an automated email from the ASF dual-hosted git repository. turbaszek pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/master by this push: new 0bf330b Add get_blobs_list method to WasbHook (#9950) 0bf330b is described below commit 0bf330ba8681c417fd5a10b3ba01c75600dc5f2e Author: jayrumi <jrumyant...@gmail.com> AuthorDate: Fri Jul 24 15:39:23 2020 +0300 Add get_blobs_list method to WasbHook (#9950) --- airflow/providers/microsoft/azure/hooks/wasb.py | 17 +++++++++++++++++ tests/providers/microsoft/azure/hooks/test_wasb.py | 10 ++++++++++ 2 files changed, 27 insertions(+) diff --git a/airflow/providers/microsoft/azure/hooks/wasb.py b/airflow/providers/microsoft/azure/hooks/wasb.py index 32f9b57..3c91cf3 100644 --- a/airflow/providers/microsoft/azure/hooks/wasb.py +++ b/airflow/providers/microsoft/azure/hooks/wasb.py @@ -88,6 +88,23 @@ class WasbHook(BaseHook): num_results=1, **kwargs) return len(list(matches)) > 0 + def get_blobs_list(self, container_name: str, prefix: str, **kwargs): + """ + Return a list of blobs from path defined in prefix param + + :param container_name: Name of the container. + :type container_name: str + :param prefix: Prefix of the blob. + :type prefix: str + :param kwargs: Optional keyword arguments that + `BlockBlobService.list_blobs()` takes (num_results, include, + delimiter, marker, timeout) + :type kwargs: object + :return: List of blobs. + :rtype: list(azure.storage.common.models.ListGenerator) + """ + return self.connection.list_blobs(container_name, prefix, **kwargs) + def load_file(self, file_path, container_name, blob_name, **kwargs): """ Upload a file to Azure Blob Storage. diff --git a/tests/providers/microsoft/azure/hooks/test_wasb.py b/tests/providers/microsoft/azure/hooks/test_wasb.py index 46fe8e5..87b1c44 100644 --- a/tests/providers/microsoft/azure/hooks/test_wasb.py +++ b/tests/providers/microsoft/azure/hooks/test_wasb.py @@ -188,3 +188,13 @@ class TestWasbHook(unittest.TestCase): is_prefix=True, ignore_if_missing=False ) self.assertIsInstance(context.exception, AirflowException) + + @mock.patch('airflow.providers.microsoft.azure.hooks.wasb.BlockBlobService', + autospec=True) + def test_get_blobs_list(self, mock_service): + mock_instance = mock_service.return_value + hook = WasbHook(wasb_conn_id='wasb_test_sas_token') + hook.get_blobs_list('container', 'prefix', num_results=1, timeout=3) + mock_instance.list_blobs.assert_called_once_with( + 'container', 'prefix', num_results=1, timeout=3 + )