summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cloudinit/cmd/query.py9
-rw-r--r--cloudinit/cmd/tests/test_query.py5
2 files changed, 3 insertions, 11 deletions
diff --git a/cloudinit/cmd/query.py b/cloudinit/cmd/query.py
index 03b77c17..07db9552 100644
--- a/cloudinit/cmd/query.py
+++ b/cloudinit/cmd/query.py
@@ -86,14 +86,11 @@ def load_userdata(ud_file_path):
@returns: String of uncompressed userdata if possible, otherwise bytes.
"""
+ bdata = util.load_file(ud_file_path, decode=False)
try:
- return util.load_file(ud_file_path)
+ return bdata.decode('utf-8')
except UnicodeDecodeError:
- encoded_data = util.load_file(ud_file_path, decode=False)
- try:
- return util.decomp_gzip(encoded_data, quiet=False)
- except util.DecompressionError:
- return encoded_data
+ return util.decomp_gzip(bdata, quiet=False, decode=True)
def handle_args(name, args):
diff --git a/cloudinit/cmd/tests/test_query.py b/cloudinit/cmd/tests/test_query.py
index 421031aa..c258d321 100644
--- a/cloudinit/cmd/tests/test_query.py
+++ b/cloudinit/cmd/tests/test_query.py
@@ -144,11 +144,6 @@ class TestQuery:
('ud'.encode('utf-8'), 'ud', 'vd'.encode('utf-8'), 'vd'),
(_gzip_data(b'ud'), 'ud', _gzip_data(b'vd'), 'vd'),
(_gzip_data('ud'.encode('utf-8')), 'ud', _gzip_data(b'vd'), 'vd'),
- (_gzip_data(b'ud') + b'invalid', 'ci-b64:',
- _gzip_data(b'vd') + b'invalid', 'ci-b64:'),
- # non-utf-8 encodable content
- ('hi mom'.encode('utf-16'), 'ci-b64://5oAGkAIABtAG8AbQA=',
- 'hi pops'.encode('utf-16'), 'ci-b64://5oAGkAIABwAG8AcABzAA=='),
)
)
def test_handle_args_root_processes_user_data(