From 39d6dcd180b1c9fb2db82dd537ae5402747c8ad3 Mon Sep 17 00:00:00 2001 From: Tobias Henkel Date: Sat, 24 Jun 2017 21:26:57 +0200 Subject: [PATCH] Fix encrypt_secret for python3 This fixes the encrypt_secret tool for use with python3. This needs some minor changes to imports, encodings and base64 encoding. Change-Id: Id29ebedab2115d0d5d47049f2a0412e8c75aa8ef --- tools/encrypt_secret.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) mode change 100644 => 100755 tools/encrypt_secret.py diff --git a/tools/encrypt_secret.py b/tools/encrypt_secret.py old mode 100644 new mode 100755 index e36b24e086..72429e9903 --- a/tools/encrypt_secret.py +++ b/tools/encrypt_secret.py @@ -13,11 +13,19 @@ # under the License. import argparse +import base64 import os import subprocess import sys import tempfile -import urllib + +# we to import Request and urlopen differently for python 2 and 3 +try: + from urllib.request import Request + from urllib.request import urlopen +except ImportError: + from urllib2 import Request + from urllib2 import urlopen DESCRIPTION = """Encrypt a secret for Zuul. @@ -50,9 +58,9 @@ def main(): "to standard output.") args = parser.parse_args() - req = urllib.request.Request("%s/keys/%s/%s.pub" % ( + req = Request("%s/keys/%s/%s.pub" % ( args.url, args.source, args.project)) - pubkey = urllib.request.urlopen(req) + pubkey = urlopen(req) if args.infile: with open(args.infile) as f: @@ -70,18 +78,18 @@ def main(): pubkey_file.name], stdin=subprocess.PIPE, stdout=subprocess.PIPE) - (stdout, stderr) = p.communicate(plaintext) + (stdout, stderr) = p.communicate(plaintext.encode("utf-8")) if p.returncode != 0: raise Exception("Return code %s from openssl" % p.returncode) - ciphertext = stdout.encode('base64') + ciphertext = base64.b64encode(stdout) finally: os.unlink(pubkey_file.name) if args.outfile: - with open(args.outfile, "w") as f: + with open(args.outfile, "wb") as f: f.write(ciphertext) else: - print(ciphertext) + print(ciphertext.decode("utf-8")) if __name__ == '__main__':