Skip to content

Commit 0a581aa

Browse files
tmclaughryansb
authored andcommitted
Add Python3 support
1 parent 5e84b5b commit 0a581aa

1 file changed

Lines changed: 16 additions & 7 deletions

File tree

cfn_resource.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@
22

33
import json
44
import logging
5-
import urllib2
5+
import sys
6+
if sys.version_info.major == 3:
7+
from urllib.request import urlopen, Request, HTTPError, URLError
8+
from urllib.parse import urlencode
9+
else:
10+
from urllib2 import urlopen, Request, HTTPError, URLError
611

712
logger = logging.getLogger()
813
logger.setLevel(logging.INFO)
@@ -52,20 +57,24 @@ def wrapper_func(event, context):
5257
logger.info("Responding to '%s' request with: %s" % (
5358
event['RequestType'], serialized))
5459

55-
req = urllib2.Request(
56-
event['ResponseURL'], data=serialized,
57-
headers={'Content-Length': len(serialized),
60+
if sys.version_info.major ==3:
61+
req_data = serialized.encode('utf-8')
62+
else:
63+
req_data=serialized
64+
req = Request(
65+
event['ResponseURL'], data=req_data,
66+
headers={'Content-Length': len(req_data),
5867
'Content-Type': ''}
5968
)
6069
req.get_method = lambda: 'PUT'
6170

6271
try:
63-
urllib2.urlopen(req)
72+
urlopen(req)
6473
logger.debug("Request to CFN API succeeded, nothing to do here")
65-
except urllib2.HTTPError as e:
74+
except HTTPError as e:
6675
logger.error("Callback to CFN API failed with status %d" % e.code)
6776
logger.error("Response: %s" % e.reason)
68-
except urllib2.URLError as e:
77+
except URLError as e:
6978
logger.error("Failed to reach the server - %s" % e.reason)
7079

7180
return wrapper_func

0 commit comments

Comments
 (0)