timeplus.source
source
This module defines base source class
:copyright: (c) 2022 by Timeplus
:license: Apache2, see LICENSE for more details.
View Source
0""" 1source 2 3This module defines base source class 4:copyright: (c) 2022 by Timeplus 5:license: Apache2, see LICENSE for more details. 6""" 7 8import requests 9 10from timeplus.base import Base 11from timeplus.resource import ResourceBase 12 13 14class SourceConnection(Base): 15 """ 16 SourceConnection class defines source connection configuration 17 """ 18 19 def __init__(self): 20 Base.__init__(self) 21 self._set("auto_create", True) 22 23 def stream(self, *args): 24 return self.prop("stream_name", *args) 25 26 def auto_create(self, *args): 27 return self.prop("auto_create", *args) 28 29 def event_time_column(self, *args): 30 return self.prop("event_time_column", *args) 31 32 33class Source(ResourceBase): 34 """ 35 Source class defines source object 36 """ 37 38 _resource_name = "sources" 39 40 def __init__(self, env=None): 41 ResourceBase.__init__(self, env) 42 43 @classmethod 44 def build(cls, source, env=None): 45 obj = cls(env=env) 46 obj._data = source 47 return obj 48 49 def name(self, *args): 50 return self.prop("name", *args) 51 52 def connection(self, *args): 53 try: 54 return self.prop("connection_config", *args) 55 except Exception: 56 # TODO it is better to change connection_config to connection here 57 return self.prop("connection", *args) 58 59 def properties(self, *args): 60 return self.prop("properties", *args) 61 62 def type(self, *args): 63 return self.prop("type", *args) 64 65 def id(self): 66 return self.prop("id") 67 68 def stat(self): 69 self.get() 70 return self.connection()["stat"] 71 72 def start(self): 73 self.action("start") 74 return self 75 76 def stop(self): 77 self.action("stop") 78 return self 79 80 def preview(self, size=3): 81 url = f"{self._base_url}/source/preview" 82 self._logger.debug("post {}", url) 83 previewRequest = { 84 "properties": self.properties(), 85 "size": size, 86 "type": self.type(), 87 } 88 89 try: 90 r = requests.post( 91 url, 92 json=previewRequest, 93 headers=self._headers, 94 timeout=self._env.http_timeout(), 95 ) 96 if r.status_code < 200 or r.status_code > 299: 97 self._logger.error(f"failed to preview source {r.status_code} {r.text}") 98 else: 99 return r.json() 100 except Exception as e: 101 self._logger.error(f"failed to preivew {e}")
View Source
15class SourceConnection(Base): 16 """ 17 SourceConnection class defines source connection configuration 18 """ 19 20 def __init__(self): 21 Base.__init__(self) 22 self._set("auto_create", True) 23 24 def stream(self, *args): 25 return self.prop("stream_name", *args) 26 27 def auto_create(self, *args): 28 return self.prop("auto_create", *args) 29 30 def event_time_column(self, *args): 31 return self.prop("event_time_column", *args)
SourceConnection class defines source connection configuration
Inherited Members
View Source
34class Source(ResourceBase): 35 """ 36 Source class defines source object 37 """ 38 39 _resource_name = "sources" 40 41 def __init__(self, env=None): 42 ResourceBase.__init__(self, env) 43 44 @classmethod 45 def build(cls, source, env=None): 46 obj = cls(env=env) 47 obj._data = source 48 return obj 49 50 def name(self, *args): 51 return self.prop("name", *args) 52 53 def connection(self, *args): 54 try: 55 return self.prop("connection_config", *args) 56 except Exception: 57 # TODO it is better to change connection_config to connection here 58 return self.prop("connection", *args) 59 60 def properties(self, *args): 61 return self.prop("properties", *args) 62 63 def type(self, *args): 64 return self.prop("type", *args) 65 66 def id(self): 67 return self.prop("id") 68 69 def stat(self): 70 self.get() 71 return self.connection()["stat"] 72 73 def start(self): 74 self.action("start") 75 return self 76 77 def stop(self): 78 self.action("stop") 79 return self 80 81 def preview(self, size=3): 82 url = f"{self._base_url}/source/preview" 83 self._logger.debug("post {}", url) 84 previewRequest = { 85 "properties": self.properties(), 86 "size": size, 87 "type": self.type(), 88 } 89 90 try: 91 r = requests.post( 92 url, 93 json=previewRequest, 94 headers=self._headers, 95 timeout=self._env.http_timeout(), 96 ) 97 if r.status_code < 200 or r.status_code > 299: 98 self._logger.error(f"failed to preview source {r.status_code} {r.text}") 99 else: 100 return r.json() 101 except Exception as e: 102 self._logger.error(f"failed to preivew {e}")
Source class defines source object
View Source
81 def preview(self, size=3): 82 url = f"{self._base_url}/source/preview" 83 self._logger.debug("post {}", url) 84 previewRequest = { 85 "properties": self.properties(), 86 "size": size, 87 "type": self.type(), 88 } 89 90 try: 91 r = requests.post( 92 url, 93 json=previewRequest, 94 headers=self._headers, 95 timeout=self._env.http_timeout(), 96 ) 97 if r.status_code < 200 or r.status_code > 299: 98 self._logger.error(f"failed to preview source {r.status_code} {r.text}") 99 else: 100 return r.json() 101 except Exception as e: 102 self._logger.error(f"failed to preivew {e}")