X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FGetBootMedium.py;fp=PLC%2FMethods%2FGetBootMedium.py;h=203b9680257f037e73890d7dc4db161c675b0ec8;hb=bf1ee443b4322709f445a6f94c53c4c1a6cafa90;hp=7b73a93c34693074f2f555867d404ff5339db5a9;hpb=8201983e9b1ba59dc22649e8cdf91bab6008fd4d;p=plcapi.git diff --git a/PLC/Methods/GetBootMedium.py b/PLC/Methods/GetBootMedium.py index 7b73a93..203b968 100644 --- a/PLC/Methods/GetBootMedium.py +++ b/PLC/Methods/GetBootMedium.py @@ -44,9 +44,11 @@ def compute_key(): # Generate 32 random bytes int8s = random.sample(range(0, 256), 32) # Base64 encode their string representation - key = base64.b64encode(bytes(int8s)) + # and, importantly, decode back to return a str + # this is important as otherwise we pollute node.txt + key = base64.b64encode(bytes(int8s)).decode() # Boot Manager cannot handle = in the key - key = key.replace(b"=", b"") + key = key.replace("=", "") return key class GetBootMedium(Method): @@ -538,8 +540,8 @@ class GetBootMedium(Method): .format(generic_path, filename)) else: ### return the generic medium content as-is, just base64 encoded - with open(generic_path) as feed: - return base64.b64encode(feed.read()) + with open(generic_path, "rb") as feed: + return base64.b64encode(feed.read()).decode() ### config file preview or regenerated if action == 'node-preview' or action == 'node-floppy': @@ -625,10 +627,9 @@ class GetBootMedium(Method): self.trash.append(node_image) self.cleantrash() logger.info("GetBootMedium - done with build.sh") - encoded_result = base64.b64encode(result) # stupidly enough, we need to decode this as str now # so that we remain compatible with former python2 PLCAPI - encoded_result = encoded_result.decode() + encoded_result = base64.b64encode(result).decode() logger.info("GetBootMedium - done with base64 encoding -" " lengths: raw={} - b64={}" .format(len(result), len(encoded_result)))