do not install global url openers + fix multiple tomcat instances
paulfantom committed
Aug 6, 2016 at 15:49 UTC
3f3bd52dbd1717456a00fdeff0f2eeec759dd579
2 files changed
+15
-12
python.d/python_modules/base.py
+8
-5
@@ -412,7 +412,7 @@ class UrlService(SimpleService):
412
413
def __add_openers(self):
414
# TODO add error handling
415
- opener = urllib2.build_opener()
415
+ self.opener = urllib2.build_opener()
416
417
# Proxy handling
418
# TODO currently self.proxies isn't parsed from configuration file
@@ -439,9 +439,10 @@ class UrlService(SimpleService):
439
if self.user is not None and self.password is not None:
440
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
441
passman.add_password(None, self.url, self.user, self.password)
442
- opener.add_handler(urllib2.HTTPBasicAuthHandler(passman))
442
+ self.opener.add_handler(urllib2.HTTPBasicAuthHandler(passman))
443
+ self.debug("Enabling HTTP basic auth")
444
444
- urllib2.install_opener(opener)
445
+ #urllib2.install_opener(opener)
446
447
def _get_raw_data(self):
448
"""
@@ -450,7 +451,8 @@ class UrlService(SimpleService):
451
"""
452
raw = None
453
try:
453
- f = urllib2.urlopen(self.url, timeout=self.update_every * 2)
454
+ f = self.opener.open(self.url, timeout=self.update_every * 2)
455
+ # f = urllib2.urlopen(self.url, timeout=self.update_every * 2)
456
except Exception as e:
457
self.error(str(e))
458
return None
@@ -488,7 +490,8 @@ class UrlService(SimpleService):
490
491
self.__add_openers()
492
491
- if self._get_data() is None or len(self._get_data()) == 0:
493
+ test = self._get_data()
494
+ if test is None or len(test) == 0:
495
return False
496
else:
497
return True
python.d/tomcat.chart.py
+7
-7
@@ -66,7 +66,8 @@ class Service(UrlService):
66
if self.port == 0:
67
self.port = 80
68
69
- if self._get_data() is None or len(self._get_data()) == 0:
69
+ test = self._get_data()
70
+ if test is None or len(test) == 0:
71
return False
72
else:
73
return True
@@ -81,13 +82,12 @@ class Service(UrlService):
82
try:
83
data = ET.fromstring(raw)
84
except ET.ParseError as e:
84
- #if e.code == errors.codes[errors.XML_ERROR_JUNK_AFTER_DOC_ELEMENT]:
85
+ # if e.code == errors.codes[errors.XML_ERROR_JUNK_AFTER_DOC_ELEMENT]:
86
if e.code == 9:
86
- # cut rest of invalid string
87
- pos = 0
88
- for i in range(e.position[0] - 1):
89
- pos += raw.find('\n', pos)
90
- raw = raw[:47604 + pos + e.position[0] - 1]
87
+ end = raw.find('</status>')
88
+ end += 9
89
+ raw = raw[:end]
90
+ self.debug(raw)
91
data = ET.fromstring(raw)
92
else:
93
raise Exception(e)