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}")
#   class SourceConnection(timeplus.base.Base):
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

#   SourceConnection()
View Source
20    def __init__(self):
21        Base.__init__(self)
22        self._set("auto_create", True)
#   def stream(self, *args):
View Source
24    def stream(self, *args):
25        return self.prop("stream_name", *args)
#   def auto_create(self, *args):
View Source
27    def auto_create(self, *args):
28        return self.prop("auto_create", *args)
#   def event_time_column(self, *args):
View Source
30    def event_time_column(self, *args):
31        return self.prop("event_time_column", *args)
Inherited Members
timeplus.base.Base
prop
data
id
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

#   Source(env=None)
View Source
41    def __init__(self, env=None):
42        ResourceBase.__init__(self, env)
#  
@classmethod
def build(cls, source, env=None):
View Source
44    @classmethod
45    def build(cls, source, env=None):
46        obj = cls(env=env)
47        obj._data = source
48        return obj
#   def name(self, *args):
View Source
50    def name(self, *args):
51        return self.prop("name", *args)
#   def connection(self, *args):
View Source
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)
#   def properties(self, *args):
View Source
60    def properties(self, *args):
61        return self.prop("properties", *args)
#   def type(self, *args):
View Source
63    def type(self, *args):
64        return self.prop("type", *args)
#   def id(self):
View Source
66    def id(self):
67        return self.prop("id")
#   def stat(self):
View Source
69    def stat(self):
70        self.get()
71        return self.connection()["stat"]
#   def start(self):
View Source
73    def start(self):
74        self.action("start")
75        return self
#   def stop(self):
View Source
77    def stop(self):
78        self.action("stop")
79        return self
#   def preview(self, size=3):
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}")