Merge lp:~bloodearnest/conn-check/ipv6 into lp:conn-check

Proposed by Simon Davy
Status: Merged
Approved by: Simon Davy
Approved revision: 139
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: lp:~bloodearnest/conn-check/ipv6
Merge into: lp:conn-check
Diff against target: 103 lines (+22/-23)
2 files modified
Makefile (+2/-1)
conn_check/checks.py (+20/-22)
To merge this branch: bzr merge lp:~bloodearnest/conn-check/ipv6
Reviewer Review Type Date Requested Status
Simon Davy (community) Approve
Tom Wardill (community) Approve
Wes Mason (community) Approve
Review via email: mp+347357@code.launchpad.net

Commit message

Use newer HostnameEndpoint api for tcp checks, which supports ipv6.

Note: udp checks still don't support ipv6, as that is more complex, and of less use, given that very few services (only txstatsd to my knowledge) support the response required.

To post a comment you must log in.
Revision history for this message
Wes Mason (wesmason) wrote :

lgtm

review: Approve
Revision history for this message
Tom Wardill (twom) :
review: Approve
Revision history for this message
Otto Co-Pilot (otto-copilot) wrote :
Revision history for this message
Otto Co-Pilot (otto-copilot) wrote :
Revision history for this message
Otto Co-Pilot (otto-copilot) wrote :
lp:~bloodearnest/conn-check/ipv6 updated
139. By Simon Davy

separte pip/setuptools upgrade

Revision history for this message
Simon Davy (bloodearnest) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'Makefile'
--- Makefile 2018-01-29 17:27:38 +0000
+++ Makefile 2018-06-04 15:00:56 +0000
@@ -12,7 +12,8 @@
12 virtualenv $(ENV)12 virtualenv $(ENV)
1313
14build: $(ENV)14build: $(ENV)
15 $(ENV)/bin/pip install -U setuptools pip15 $(ENV)/bin/pip install -U pip
16 $(ENV)/bin/pip install -U setuptools
16 $(ENV)/bin/pip install -r devel-requirements.txt17 $(ENV)/bin/pip install -r devel-requirements.txt
17 $(ENV)/bin/python setup.py develop18 $(ENV)/bin/python setup.py develop
1819
1920
=== modified file 'conn_check/checks.py'
--- conn_check/checks.py 2018-01-29 14:07:24 +0000
+++ conn_check/checks.py 2018-06-04 15:00:56 +0000
@@ -1,11 +1,10 @@
1from __future__ import print_function1from __future__ import print_function
2from future import standard_library2from future import standard_library
3standard_library.install_aliases()3standard_library.install_aliases() # NOQA
4
5from io import StringIO
64
7from email.mime.text import MIMEText5from email.mime.text import MIMEText
8import glob6import glob
7from io import StringIO
9import os8import os
10from pkg_resources import resource_stream9from pkg_resources import resource_stream
11import sys10import sys
@@ -21,9 +20,12 @@
21 Deferred,20 Deferred,
22 inlineCallbacks,21 inlineCallbacks,
23 )22 )
23from twisted.internet.endpoints import HostnameEndpoint, wrapClientTLS
24from twisted.internet.ssl import optionsForClientTLS
24from twisted.internet.protocol import (25from twisted.internet.protocol import (
25 ClientCreator,26 ClientCreator,
26 DatagramProtocol,27 DatagramProtocol,
28 Factory,
27 Protocol,29 Protocol,
28 )30 )
29from twisted.mail.smtp import ESMTPSenderFactory31from twisted.mail.smtp import ESMTPSenderFactory
@@ -31,6 +33,7 @@
3133
32from txrequests import Session34from txrequests import Session
33from requests.auth import HTTPDigestAuth35from requests.auth import HTTPDigestAuth
36from requests.exceptions import ConnectionError, SSLError
3437
35try:38try:
36 from requests.packages.urllib3 import disable_warnings39 from requests.packages.urllib3 import disable_warnings
@@ -93,26 +96,21 @@
93def do_tcp_check(host, port, tls=False, tls_verify=True,96def do_tcp_check(host, port, tls=False, tls_verify=True,
94 timeout=None):97 timeout=None):
95 """Generic connection check function."""98 """Generic connection check function."""
96 if not isIPAddress(host):99
97 try:
98 ip = yield reactor.resolve(host, timeout=(1, timeout))
99 except DNSLookupError:
100 raise ValueError("dns resolution failed")
101 else:
102 ip = host
103 creator = ClientCreator(reactor, TCPCheckProtocol)
104 try:100 try:
101 endpoint = HostnameEndpoint(reactor, host, port, timeout=timeout)
102
105 if tls:103 if tls:
106 context = VerifyingContextFactory(tls_verify, CA_CERTS)104 endpoint = wrapClientTLS(
107 yield creator.connectSSL(ip, port, context,105 optionsForClientTLS(hostname=host),
108 timeout=timeout)106 endpoint,
109 else:107 )
110 yield creator.connectTCP(ip, port, timeout=timeout)108
109 yield endpoint.connect(Factory.forProtocol(TCPCheckProtocol))
110 except DNSLookupError:
111 raise ValueError("dns lookup error")
111 except TimeoutError:112 except TimeoutError:
112 if ip == host:113 raise ValueError("timed out connecting to {}".format(host))
113 raise ValueError("timed out")
114 else:
115 raise ValueError("timed out connecting to {}".format(ip))
116114
117115
118def make_tcp_check(host, port, timeout=None, **kwargs):116def make_tcp_check(host, port, timeout=None, **kwargs):
@@ -403,9 +401,9 @@
403def make_redis_check(host, port, password=None, timeout=None,401def make_redis_check(host, port, password=None, timeout=None,
404 **kwargs):402 **kwargs):
405 """Make a check for the configured redis server."""403 """Make a check for the configured redis server."""
406 if sys.version_info[0] >= 3:404 if sys.version_info[0] >=3:
407 print('Redis checks are not supported in python 3.\n'405 print('Redis checks are not supported in python 3.\n'
408 'This may help: https://github.com/deldotdr/txRedis/pull/58')406 'This may help: https://github.com/deldotdr/txRedis/pull/58')
409 import txredis407 import txredis
410 subchecks = []408 subchecks = []
411 subchecks.append(make_tcp_check(host, port, timeout=timeout))409 subchecks.append(make_tcp_check(host, port, timeout=timeout))

Subscribers

People subscribed via source and target branches

to all changes: