Merge ~smoser/cloud-init:bug/mock-meta-python3 into cloud-init:master

Proposed by Scott Moser
Status: Merged
Merged at revision: dc6e7b49bac8b87a38fe57ee621177a8177fa2c0
Proposed branch: ~smoser/cloud-init:bug/mock-meta-python3
Merge into: cloud-init:master
Diff against target: 106 lines (+21/-11)
1 file modified
tools/mock-meta.py (+21/-11)
Reviewer Review Type Date Requested Status
cloud-init Commiters Pending
Review via email: mp+315626@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/tools/mock-meta.py b/tools/mock-meta.py
2index d74f9e3..a0d9944 100755
3--- a/tools/mock-meta.py
4+++ b/tools/mock-meta.py
5@@ -18,10 +18,10 @@ Then:
6 """
7
8 import functools
9-import httplib
10 import json
11 import logging
12 import os
13+import socket
14 import random
15 import string
16 import sys
17@@ -29,7 +29,13 @@ import yaml
18
19 from optparse import OptionParser
20
21-from BaseHTTPServer import (HTTPServer, BaseHTTPRequestHandler)
22+try:
23+ from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
24+ import httplib as hclient
25+except ImportError:
26+ from http.server import HTTPServer, BaseHTTPRequestHandler
27+ from http import client as hclient
28+
29
30 log = logging.getLogger('meta-server')
31
32@@ -183,6 +189,10 @@ def get_ssh_keys():
33 return keys
34
35
36+class HTTPServerV6(HTTPServer):
37+ address_family = socket.AF_INET6
38+
39+
40 class MetaDataHandler(object):
41
42 def __init__(self, opts):
43@@ -250,7 +260,7 @@ class MetaDataHandler(object):
44 key_id = int(mybe_key)
45 key_name = key_ids[key_id]
46 except:
47- raise WebException(httplib.BAD_REQUEST,
48+ raise WebException(hclient.BAD_REQUEST,
49 "Unknown key id %r" % mybe_key)
50 # Extract the possible sub-params
51 result = traverse(nparams[1:], {
52@@ -342,13 +352,13 @@ class Ec2Handler(BaseHTTPRequestHandler):
53 return self._get_versions
54 date = segments[0].strip().lower()
55 if date not in self._get_versions():
56- raise WebException(httplib.BAD_REQUEST,
57+ raise WebException(hclient.BAD_REQUEST,
58 "Unknown version format %r" % date)
59 if len(segments) < 2:
60- raise WebException(httplib.BAD_REQUEST, "No action provided")
61+ raise WebException(hclient.BAD_REQUEST, "No action provided")
62 look_name = segments[1].lower()
63 if look_name not in func_mapping:
64- raise WebException(httplib.BAD_REQUEST,
65+ raise WebException(hclient.BAD_REQUEST,
66 "Unknown requested data %r" % look_name)
67 base_func = func_mapping[look_name]
68 who = self.address_string()
69@@ -371,16 +381,16 @@ class Ec2Handler(BaseHTTPRequestHandler):
70 data = func()
71 if not data:
72 data = ''
73- self.send_response(httplib.OK)
74+ self.send_response(hclient.OK)
75 self.send_header("Content-Type", "binary/octet-stream")
76 self.send_header("Content-Length", len(data))
77 log.info("Sending data (len=%s):\n%s", len(data),
78 format_text(data))
79 self.end_headers()
80- self.wfile.write(data)
81+ self.wfile.write(data.encode())
82 except RuntimeError as e:
83 log.exception("Error somewhere in the server.")
84- self.send_error(httplib.INTERNAL_SERVER_ERROR, message=str(e))
85+ self.send_error(hclient.INTERNAL_SERVER_ERROR, message=str(e))
86 except WebException as e:
87 code = e.code
88 log.exception(str(e))
89@@ -408,7 +418,7 @@ def extract_opts():
90 help=("port from which to serve traffic"
91 " (default: %default)"))
92 parser.add_option("-a", "--addr", dest="address", action="store", type=str,
93- default='0.0.0.0', metavar="ADDRESS",
94+ default='::', metavar="ADDRESS",
95 help=("address from which to serve traffic"
96 " (default: %default)"))
97 parser.add_option("-f", '--user-data-file', dest='user_data_file',
98@@ -444,7 +454,7 @@ def run_server():
99 setup_fetchers(opts)
100 log.info("CLI opts: %s", opts)
101 server_address = (opts['address'], opts['port'])
102- server = HTTPServer(server_address, Ec2Handler)
103+ server = HTTPServerV6(server_address, Ec2Handler)
104 sa = server.socket.getsockname()
105 log.info("Serving ec2 metadata on %s using port %s ...", sa[0], sa[1])
106 server.serve_forever()

Subscribers

People subscribed via source and target branches