From b9adb7c16060461fa86145547da57a217dacc582 Mon Sep 17 00:00:00 2001 From: hsiang41 Date: Tue, 5 Mar 2019 14:53:47 +0800 Subject: [PATCH] mgr/diskprediction_cloud: Fixed cannot import string.maketrans in the python 3.x Fixed python 3.7 cannot use string.maketrans library. Fixes: https://tracker.ceph.com/issues/38521 Signed-off-by: Rick Chen --- src/pybind/mgr/diskprediction_cloud/module.py | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/pybind/mgr/diskprediction_cloud/module.py b/src/pybind/mgr/diskprediction_cloud/module.py index cb323d6a615..c595e027b5e 100644 --- a/src/pybind/mgr/diskprediction_cloud/module.py +++ b/src/pybind/mgr/diskprediction_cloud/module.py @@ -9,9 +9,13 @@ import errno import json from mgr_module import MgrModule import os -from string import maketrans from threading import Event +try: + from string import maketrans +except ImportError: + maketrans = str.maketrans + from .common import DP_MGR_STAT_ENABLED, DP_MGR_STAT_DISABLED from .task import MetricsRunner, SmartRunner, PredictRunner, TestRunner @@ -22,16 +26,30 @@ CUSTOMER_ALPHABET = "ABCDEFG&HIJKLMN@OQRS.TUV(WXYZabcd)efghijlmn-opqrstu*vwxyz01 ORIGIN_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" -def encode_string(value): +def get_transtable(): + transtable = maketrans(CUSTOMER_ALPHABET, ORIGIN_ALPHABET) + return transtable + + +def get_reverse_transtable(): transtable = maketrans(ORIGIN_ALPHABET, CUSTOMER_ALPHABET) - e = base64.b64encode(value) - return e.translate(transtable)[:-1] + return transtable + + +def encode_string(value): + if len(value) == 0: + return "" + transtable = get_transtable() + e = str((base64.b64encode(str(value).encode())).decode("utf-8")[:-1]) + return e.translate(transtable) def decode_string(value): - transtable = maketrans(CUSTOMER_ALPHABET, ORIGIN_ALPHABET) + if len(value) == 0: + return "" + transtable = get_reverse_transtable() e = str(value).translate(transtable) + "=" - return base64.b64decode(e) + return base64.b64decode(e).decode("utf-8") class Module(MgrModule): -- 2.39.5