mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-31 05:18:18 +00:00
feat(ingestion): test GMS connections before ingestion (#2946)
This commit is contained in:
parent
49093ea1ce
commit
f08cf11a4d
@ -9,6 +9,7 @@ from typing import Any, List, Optional, Union
|
||||
import requests
|
||||
from requests.exceptions import HTTPError, RequestException
|
||||
|
||||
from datahub import __package_name__
|
||||
from datahub.configuration.common import OperationalError
|
||||
from datahub.metadata.com.linkedin.pegasus2avro.mxe import MetadataChangeEvent
|
||||
from datahub.metadata.com.linkedin.pegasus2avro.usage import UsageAggregation
|
||||
@ -81,6 +82,15 @@ class DatahubRestEmitter:
|
||||
if token:
|
||||
self._session.headers.update({"Authorization": f"Bearer {token}"})
|
||||
|
||||
def test_connection(self) -> None:
|
||||
response = self._session.get(f"{self._gms_server}/config")
|
||||
response.raise_for_status()
|
||||
config: dict = response.json()
|
||||
if config.get("noCode") != "true":
|
||||
raise ValueError(
|
||||
f"This version of {__package_name__} requires GMS v0.8.0 or higher"
|
||||
)
|
||||
|
||||
def emit(self, item: Union[MetadataChangeEvent, UsageAggregation]) -> None:
|
||||
if isinstance(item, UsageAggregation):
|
||||
return self.emit_usage(item)
|
||||
|
@ -30,6 +30,7 @@ class DatahubRestSink(Sink):
|
||||
self.config = config
|
||||
self.report = SinkReport()
|
||||
self.emitter = DatahubRestEmitter(self.config.server, self.config.token)
|
||||
self.emitter.test_connection()
|
||||
|
||||
@classmethod
|
||||
def create(cls, config_dict: dict, ctx: PipelineContext) -> "DatahubRestSink":
|
||||
|
Loading…
x
Reference in New Issue
Block a user