Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions eureka/client.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,20 @@
import json
import random
from urllib2 import URLError
from urlparse import urljoin

from eureka import requests
from eureka import ec2metadata
import logging
import dns.resolver
from eureka.requests import EurekaHTTPException

try:
# Python 3 and later
from urllib.error import URLError
from urllib.parse import urljoin
except ImportError:
# Python 2
from urllib2 import URLError
from urlparse import urljoin

logger = logging.getLogger('eureka.client')

Expand Down Expand Up @@ -62,13 +69,15 @@ def __init__(self, app_name, eureka_url=None, eureka_domain_name=None, host_name
# Relative URL to eureka
self.context = context
self.health_check_url = health_check_url

def init(self):
self.eureka_urls = self.get_eureka_urls()

def _get_txt_records_from_dns(self, domain):
records = dns.resolver.query(domain, 'TXT')
for record in records:
for string in record.strings:
yield string
yield string.decode("UTF-8")

def _get_zone_urls_from_dns(self, domain):
for zone in self._get_txt_records_from_dns(domain):
Expand Down
6 changes: 3 additions & 3 deletions eureka/ec2metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def _test_connectivity(addr, port):
s.connect((addr, port))
s.close()
return True
except socket.error, e:
except socket.error as e:
time.sleep(1)

return False
Expand Down Expand Up @@ -95,6 +95,6 @@ def display(metaopts, prefix=False):
value = "unavailable"

if prefix:
print "%s: %s" % (metaopt, value)
print("%s: %s" % (metaopt, value))
else:
print value
print(value)
23 changes: 16 additions & 7 deletions eureka/requests.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,35 @@
import urllib2
from eureka import __version__ as client_version
import gzip
import StringIO

try:
# Python 3 and later
from urllib.request import Request as UrllibReq
from urllib.request import build_opener
from urllib.error import HTTPError
from io import StringIO
except ImportError:
# Python 2
from urllib2 import Request as UrllibReq
from urllib2 import build_opener, HTTPError
import StringIO

class EurekaHTTPException(Exception):
pass


class Request(urllib2.Request):
class Request(UrllibReq):
"""
Instead of requiring a version of `requests`, we use this easy wrapper around urllib2 to avoud possible
version conflicts with people own software.
"""
def __init__(self, url, method="GET", data=None, headers=None,
origin_req_host=None, unverifiable=False):
self.method = method
self._opener = urllib2.build_opener()
self._opener = build_opener()
self._opener.addheaders = [
('User-agent', 'python-eureka v%s' % client_version)
]
urllib2.Request.__init__(self, url, data=data, headers=headers or {},
UrllibReq.__init__(self, url, data=data, headers=headers or {},
origin_req_host=origin_req_host, unverifiable=unverifiable)

def get_method(self):
Expand All @@ -32,7 +41,7 @@ def create(cls, method, url, data=None, headers=None):
request = cls(url, method, data=data, headers=headers)
try:
response = request._opener.open(request)
except urllib2.HTTPError as e:
except HTTPError as e:
return Response(e.code, e.read(), url, method)

content = response.read()
Expand Down Expand Up @@ -73,4 +82,4 @@ def put(url, data=None, headers=None):


def delete(url, data=None, headers=None):
return Request.create("DELETE", url, data, headers)
return Request.create("DELETE", url, data, headers)