diff options
Diffstat (limited to 'ironic_python_agent/utils.py')
-rw-r--r-- | ironic_python_agent/utils.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/ironic_python_agent/utils.py b/ironic_python_agent/utils.py index 66f6819f..e6454023 100644 --- a/ironic_python_agent/utils.py +++ b/ironic_python_agent/utils.py @@ -12,12 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. +import base64 from collections import abc import contextlib import copy import errno import glob import io +import json import os import re import shutil @@ -30,8 +32,6 @@ from ironic_lib import utils as ironic_utils from oslo_concurrency import processutils from oslo_config import cfg from oslo_log import log as logging -from oslo_serialization import base64 -from oslo_serialization import jsonutils from oslo_utils import units import requests import tenacity @@ -502,6 +502,13 @@ def get_journalctl_output(lines=None, units=None): return get_command_output(cmd) +def _encode_as_text(s): + if isinstance(s, str): + s = s.encode('utf-8') + s = base64.b64encode(s) + return s.decode('ascii') + + def gzip_and_b64encode(io_dict=None, file_list=None): """Gzip and base64 encode files and BytesIO buffers. @@ -527,7 +534,8 @@ def gzip_and_b64encode(io_dict=None, file_list=None): tar.add(f) fp.seek(0) - return base64.encode_as_text(fp.getvalue()) + + return _encode_as_text(fp.getvalue()) def collect_system_logs(journald_max_lines=None): @@ -643,8 +651,8 @@ def parse_capabilities(root): capabilities = root.get('capabilities', {}) if isinstance(capabilities, str): try: - capabilities = jsonutils.loads(capabilities) - except (ValueError, TypeError): + capabilities = json.loads(capabilities) + except json.decoder.JSONDecodeError: capabilities = _parse_capabilities_str(capabilities) if not isinstance(capabilities, dict): |