Update the mock metadata server to return a file (or the default generated content) for the userdata blob.
This commit is contained in:
@@ -196,18 +196,26 @@ class UserDataHandler(object):
|
|||||||
self.opts = opts
|
self.opts = opts
|
||||||
|
|
||||||
def _get_user_blob(self, **kwargs):
|
def _get_user_blob(self, **kwargs):
|
||||||
blob_mp = {}
|
blob = None
|
||||||
blob_mp['hostname'] = kwargs.get('who', '')
|
if self.opts['user_data_file']:
|
||||||
lines = []
|
with open(opts['user_data_file'], 'rb') as fh:
|
||||||
lines.append("#cloud-config")
|
blob = fh.read()
|
||||||
lines.append(yamlify(blob_mp))
|
blob = blob.strip()
|
||||||
blob = "\n".join(lines)
|
if not blob:
|
||||||
|
blob_mp = {
|
||||||
|
'hostname': kwargs.get('who', 'localhost'),
|
||||||
|
}
|
||||||
|
lines = [
|
||||||
|
"#cloud-config",
|
||||||
|
yamlify(blob_mp),
|
||||||
|
]
|
||||||
|
blob = "\n".join(lines)
|
||||||
return blob.strip()
|
return blob.strip()
|
||||||
|
|
||||||
def get_data(self, params, who, **kwargs):
|
def get_data(self, params, who, **kwargs):
|
||||||
if not params:
|
if not params:
|
||||||
return self._get_user_blob(who=who)
|
return self._get_user_blob(who=who)
|
||||||
return ''
|
return NOT_IMPL_RESPONSE
|
||||||
|
|
||||||
|
|
||||||
# Seem to need to use globals since can't pass
|
# Seem to need to use globals since can't pass
|
||||||
@@ -303,10 +311,15 @@ def extract_opts():
|
|||||||
parser = OptionParser()
|
parser = OptionParser()
|
||||||
parser.add_option("-p", "--port", dest="port", action="store", type=int, default=80,
|
parser.add_option("-p", "--port", dest="port", action="store", type=int, default=80,
|
||||||
help="port from which to serve traffic (default: %default)", metavar="PORT")
|
help="port from which to serve traffic (default: %default)", metavar="PORT")
|
||||||
|
parser.add_option("-f", '--user-data-file', dest='user_data_file', action='store',
|
||||||
|
help="user data blob to serve back to incoming requests", metavar='FILE')
|
||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
out = dict()
|
out = dict()
|
||||||
out['extra'] = args
|
out['extra'] = args
|
||||||
out['port'] = options.port
|
out['port'] = options.port
|
||||||
|
out['user_data_file'] = None
|
||||||
|
if options.user_data_file:
|
||||||
|
out['user_data_file'] = options.user_data_file
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user