golden hour
/opt/saltstack/salt/lib/python3.10/site-packages/salt/transport
⬆️ Go Up
Upload
File/Folder
Size
Actions
__init__.py
507 B
Del
OK
__pycache__
-
Del
OK
base.py
7.79 KB
Del
OK
client.py
3.43 KB
Del
OK
frame.py
2.76 KB
Del
OK
ipc.py
27.66 KB
Del
OK
local.py
1.37 KB
Del
OK
server.py
1.22 KB
Del
OK
tcp.py
36.58 KB
Del
OK
zeromq.py
33.15 KB
Del
OK
Edit: frame.py
""" Helper functions for transport components to handle message framing """ import salt.utils.msgpack def frame_msg(body, header=None, raw_body=False): # pylint: disable=unused-argument """ Frame the given message with our wire protocol """ framed_msg = {} if header is None: header = {} framed_msg["head"] = header framed_msg["body"] = body return salt.utils.msgpack.dumps(framed_msg) def frame_msg_ipc(body, header=None, raw_body=False): # pylint: disable=unused-argument """ Frame the given message with our wire protocol for IPC For IPC, we don't need to be backwards compatible, so use the more efficient "use_bin_type=True" on Python 3. """ framed_msg = {} if header is None: header = {} framed_msg["head"] = header framed_msg["body"] = body return salt.utils.msgpack.dumps(framed_msg, use_bin_type=True) def _decode_embedded_list(src): """ Convert enbedded bytes to strings if possible. List helper. """ output = [] for elem in src: if isinstance(elem, dict): elem = _decode_embedded_dict(elem) elif isinstance(elem, list): elem = _decode_embedded_list(elem) elif isinstance(elem, bytes): try: elem = elem.decode() except UnicodeError: pass output.append(elem) return output def _decode_embedded_dict(src): """ Convert enbedded bytes to strings if possible. Dict helper. """ output = {} for key, val in src.items(): if isinstance(val, dict): val = _decode_embedded_dict(val) elif isinstance(val, list): val = _decode_embedded_list(val) elif isinstance(val, bytes): try: val = val.decode() except UnicodeError: pass if isinstance(key, bytes): try: key = key.decode() except UnicodeError: pass output[key] = val return output def decode_embedded_strs(src): """ Convert enbedded bytes to strings if possible. This is necessary because Python 3 makes a distinction between these types. This wouldn't be needed if we used "use_bin_type=True" when encoding and "encoding='utf-8'" when decoding. Unfortunately, this would break backwards compatibility due to a change in wire protocol, so this less than ideal solution is used instead. """ if isinstance(src, dict): return _decode_embedded_dict(src) elif isinstance(src, list): return _decode_embedded_list(src) elif isinstance(src, bytes): try: return src.decode() except UnicodeError: return src else: return src
Save