]> arthur.barton.de Git - netdata.git/commitdiff
add option to connect to unix socket with `SocketService`
authorpaulfantom <paulfantom@gmail.com>
Fri, 8 Jul 2016 09:32:22 +0000 (11:32 +0200)
committerpaulfantom <paulfantom@gmail.com>
Fri, 8 Jul 2016 09:32:22 +0000 (11:32 +0200)
python.d/hddtemp.chart.py
python.d/python_modules/base.py
python.d/squid.chart.py

index fac2ec6a167c93862d636922a732645cbdb6b79c..d0b53fc50d167b45821225a3bc20afdd0a0af4c0 100644 (file)
@@ -2,7 +2,7 @@
 # Description: hddtemp netdata python.d module
 # Author: Pawel Krupa (paulfantom)
 
-from base import NetSocketService
+from base import SocketService
 
 # default module values (can be overridden per job in `config`)
 #update_every = 2
@@ -29,9 +29,9 @@ CHARTS = {
 }
 
 
-class Service(NetSocketService):
+class Service(SocketService):
     def __init__(self, configuration=None, name=None):
-        NetSocketService.__init__(self, configuration=configuration, name=name)
+        SocketService.__init__(self, configuration=configuration, name=name)
         self.request = ""
         self.host = "127.0.0.1"
         self.port = 7634
index eebc78ee3611c16e1ba6aa211c6800366e891f07..2e43a553347a612d34b1162b1856e29bea940e74 100644 (file)
@@ -432,11 +432,12 @@ class UrlService(SimpleService):
             return False
 
 
-class NetSocketService(SimpleService):
+class SocketService(SimpleService):
     def __init__(self, configuration=None, name=None):
         self.host = "localhost"
         self.port = None
         self.sock = None
+        self.unix_socket = ""
         self.request = ""
         SimpleService.__init__(self, configuration=configuration, name=name)
 
@@ -447,10 +448,16 @@ class NetSocketService(SimpleService):
         """
         if self.sock is None:
             try:
-                sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-                sock.settimeout(self.update_every)
-                sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-                sock.connect((self.host, self.port))
+                if len(self.unix_socket) == 0:
+                    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+                    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+                    sock.settimeout(self.update_every)
+                    sock.connect((self.host, self.port))
+                else:
+                    sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
+                    sock.settimeout(self.update_every)
+                    sock.connect(self.unix_socket)
+
             except Exception as e:
                 self.error(e)
                 self.sock = None
@@ -492,13 +499,17 @@ class NetSocketService(SimpleService):
         else:
             self.name = str(self.name)
         try:
-            self.host = str(self.configuration['host'])
-        except (KeyError, TypeError):
-            self.error("No host specified. Using: '" + self.host + "'")
-        try:
-            self.port = int(self.configuration['port'])
+            self.unix_socket = int(self.configuration['unix_socket'])
         except (KeyError, TypeError):
-            self.error("No port specified. Using: '" + str(self.port) + "'")
+            self.error("No unix socket specified. Trying TCP/IP socket.")
+            try:
+                self.host = str(self.configuration['host'])
+            except (KeyError, TypeError):
+                self.error("No host specified. Using: '" + self.host + "'")
+            try:
+                self.port = int(self.configuration['port'])
+            except (KeyError, TypeError):
+                self.error("No port specified. Using: '" + str(self.port) + "'")
         try:
             self.request = str(self.configuration['request'])
         except (KeyError, TypeError):
index f68ce7e57c9950d1223be0fc628a4a9481cf8b18..71327c6ebcd288e0df0d9452fcb1a3e2b10c1d8f 100644 (file)
@@ -2,7 +2,7 @@
 # Description: squid netdata python.d module
 # Author: Pawel Krupa (paulfantom)
 
-from base import NetSocketService
+from base import SocketService
 
 # default module values (can be overridden per job in `config`)
 # update_every = 2
@@ -42,9 +42,9 @@ CHARTS = {
 }
 
 
-class Service(NetSocketService):
+class Service(SocketService):
     def __init__(self, configuration=None, name=None):
-        NetSocketService.__init__(self, configuration=configuration, name=name)
+        SocketService.__init__(self, configuration=configuration, name=name)
         self.request = ""
         self.host = "localhost"
         self.port = 3128