class KustoStreamingIngestClient(BaseIngestClient): """Kusto streaming ingest client for Python. KustoStreamingIngestClient works with both 2.x and 3.x flavors of Python. All primitive types are supported. Tests are run using pytest. """ def __init__(self, kcsb: Union[KustoConnectionStringBuilder, str]): """Kusto Streaming Ingest Client constructor. :param KustoConnectionStringBuilder kcsb: The connection string to initialize KustoClient. """ self._kusto_client = KustoClient(kcsb) def set_proxy(self, proxy_url: str): self._kusto_client.set_proxy(proxy_url) def ingest_from_file(self, file_descriptor: Union[FileDescriptor, str], ingestion_properties: IngestionProperties) -> IngestionResult: """Ingest from local files. :param file_descriptor: a FileDescriptor to be ingested. :param azure.kusto.ingest.IngestionProperties ingestion_properties: Ingestion properties. """ stream_descriptor = StreamDescriptor.from_file_descriptor(file_descriptor) with stream_descriptor.stream: return self.ingest_from_stream(stream_descriptor, ingestion_properties) def ingest_from_stream(self, stream_descriptor: Union[StreamDescriptor, IO[AnyStr]], ingestion_properties: IngestionProperties) -> IngestionResult: """Ingest from io streams. :param azure.kusto.ingest.StreamDescriptor stream_descriptor: An object that contains a description of the stream to be ingested. :param azure.kusto.ingest.IngestionProperties ingestion_properties: Ingestion properties. """ return self._ingest_from_stream_with_client_request_id(stream_descriptor, ingestion_properties, None) def _ingest_from_stream_with_client_request_id( self, stream_descriptor: Union[StreamDescriptor, IO[AnyStr]], ingestion_properties: IngestionProperties, client_request_id: Optional[str] ) -> IngestionResult: stream_descriptor = BaseIngestClient._prepare_stream(stream_descriptor, ingestion_properties) additional_properties = None if client_request_id: additional_properties = ClientRequestProperties() additional_properties.client_request_id = client_request_id self._kusto_client.execute_streaming_ingest( ingestion_properties.database, ingestion_properties.table, stream_descriptor.stream, ingestion_properties.format.name, additional_properties, mapping_name=ingestion_properties.ingestion_mapping_reference, ) return IngestionResult(IngestionStatus.SUCCESS, ingestion_properties.database, ingestion_properties.table, stream_descriptor.source_id)
def test_proxy_token_providers(self, mock_get, proxy_kcsb): """Test query V2.""" proxy = "https://my_proxy.sample" kcsb, auth_supports_proxy = proxy_kcsb client = KustoClient(kcsb) client.set_proxy(proxy) assert client._proxy_url == proxy expected_dict = {"http": proxy, "https": proxy} if not auth_supports_proxy: return assert client._aad_helper.token_provider._proxy_dict == expected_dict assert client._session.proxies == expected_dict CloudSettings._cloud_cache.clear() client._aad_helper.token_provider._init_resources() mock_get.assert_called_with( "https://somecluster.kusto.windows.net/v1/rest/auth/metadata", proxies=expected_dict)