From 7526306abb4a9f9c729eafba9626f740b24422b3 Mon Sep 17 00:00:00 2001 From: Riku Voipio Date: Tue, 31 Aug 2021 13:55:08 +0300 Subject: python3 fixups Some actual testing reveals more python3 chagnes needed, mainly due to the utf-8 changes. Change-Id: I18836508049e315a7be574a844fcae7f1a1f9c86 --- check-git-repos.py | 2 +- gerrit/check_external_ids_oauth.py | 4 ++-- gitolite-tools/gitolite-groups | 19 +++++++++---------- gitolite-tools/gitolite-keys | 10 +++++----- grok-slave-keys | 2 +- linaro_gerrit.py | 10 +++++----- linaro_ldap.py | 6 +++--- 7 files changed, 26 insertions(+), 27 deletions(-) diff --git a/check-git-repos.py b/check-git-repos.py index 22babc5..d4e090c 100755 --- a/check-git-repos.py +++ b/check-git-repos.py @@ -21,7 +21,7 @@ def run_command(cmd, dir): log.debug("executing %s in %s", cmd, dir) try: out = check_output(cmd, stderr=STDOUT, - cwd=dir) + cwd=dir, encoding="utf-8") except CalledProcessError as e: return e.returncode, e.output return 0, out diff --git a/gerrit/check_external_ids_oauth.py b/gerrit/check_external_ids_oauth.py index 3a7d47d..2a165eb 100755 --- a/gerrit/check_external_ids_oauth.py +++ b/gerrit/check_external_ids_oauth.py @@ -2,14 +2,14 @@ import os import re -from configparser import ConfigParser +import configparser accounts = {} for dentry in os.walk('.'): if not re.search('\.git', dentry[0]) and not re.match('^\.$', dentry[0]): for f in dentry[2]: - conf = ConfigParser() + conf = configparser.ConfigParser() conf.read('{}/{}'.format(dentry[0],f)) ei = conf.sections()[0] diff --git a/gitolite-tools/gitolite-groups b/gitolite-tools/gitolite-groups index c50f86a..824f139 100755 --- a/gitolite-tools/gitolite-groups +++ b/gitolite-tools/gitolite-groups @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (C) 2013, 2014 Linaro Ltd. # # This program is free software: you can redistribute it and/or modify @@ -15,21 +15,20 @@ # along with this program. If not, see . import base64 -import httplib +import http.client import json import ldap import os import sys import urllib - -from ConfigParser import ConfigParser +import configparser sys.path.append(os.path.join(os.path.dirname(__file__), '..')) import linaro_ldap DEFAULT_CONFIG_FILE = "gitolite-tools.conf" -CONFIG = ConfigParser() +CONFIG = configparser.ConfigParser() CONFIG.read(os.path.join(os.path.dirname(sys.argv[0]), DEFAULT_CONFIG_FILE)) @@ -59,15 +58,15 @@ def get_groups(user): crowd_error = False if user: params = {"username": user} - auth = base64.b64encode('{0}:{1}'.format(crowd_usr, crowd_pwd)) + auth = base64.b64encode('{0}:{1}'.format(crowd_usr, crowd_pwd).encode("ascii")) headers = { - "Authorization": "Basic {0}".format(auth), + "Authorization": "Basic {0}".format(auth.decode("ascii")), "Accept": "application/json" } url = "/user/group/nested?{0}".format( - urllib.urlencode(params)) + urllib.parse.urlencode(params)) - c = httplib.HTTPSConnection("login.linaro.org", 8443) + c = http.client.HTTPSConnection("login.linaro.org", 8443) c.request("GET", "/crowd/rest/usermanagement/1{0}".format(url), headers=headers) @@ -82,7 +81,7 @@ def get_groups(user): data = json.load(resp) names = [x["name"] for x in data["groups"]] user_teams = " ".join(names) - except IOError, e: + except IOError as e: sys.stderr.write("gitolite-groups: ERROR: No connection to " "Crowd server.\n") sys.stderr.write(e) diff --git a/gitolite-tools/gitolite-keys b/gitolite-tools/gitolite-keys index ad52ee8..2b43423 100755 --- a/gitolite-tools/gitolite-keys +++ b/gitolite-tools/gitolite-keys @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (C) 2013, 2014 Linaro Ltd. # # This program is free software: you can redistribute it and/or modify @@ -48,7 +48,7 @@ def run_cmd(cmd_args, shell=False, cwd=None): log.error("Error executing the following command: " "{0}".format(" ".join(cmd_args))) log.error("Command stderr:\n{0}".format(err)) - except OSError, e: + except OSError as e: log.error(str(e)) @@ -81,7 +81,7 @@ def gitolite_remove_key(key_name): log.info("Removing public key {0}...".format(key_name)) try: os.unlink(pubkey_file) - except OSError, e: + except OSError as e: log.error(str(e)) else: log.info("Public key {0} does not exists.".format(key_name)) @@ -90,7 +90,7 @@ def gitolite_remove_key(key_name): def gitolite_add_key(key_name, ssh_key): """Adds the provided key_name and their SSH key to the gitolite keydir.""" if not os.path.exists(KEYDIR): - os.makedirs(KEYDIR, 0700) + os.makedirs(KEYDIR, mode=0o700) pubkey_file = os.path.join(KEYDIR, key_name) @@ -106,7 +106,7 @@ def gitolite_add_key(key_name, ssh_key): except OSError: log.error("Error writing file {0}.".format(pubkey_file)) else: - os.chmod(pubkey_file, 0600) + os.chmod(pubkey_file, 0o600) def gitolite_trigger_auth_keys(): diff --git a/grok-slave-keys b/grok-slave-keys index 460a2ab..35fc143 100755 --- a/grok-slave-keys +++ b/grok-slave-keys @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (C) 2013, 2014 Linaro Ltd. # # This program is free software: you can redistribute it and/or modify diff --git a/linaro_gerrit.py b/linaro_gerrit.py index 2d4ac34..ec0439c 100755 --- a/linaro_gerrit.py +++ b/linaro_gerrit.py @@ -39,7 +39,7 @@ class LinaroGerrit: r = requests.get(url, params=payload, **self.reqargs) log.info("Finding user: %s with url %s", username, r.url) try: - a = json.loads(self.strip_gerrit_junk(r.content)) + a = json.loads(self.strip_gerrit_junk(r.text)) if a: for data in a: log.info("Found user: %s", data["_account_id"]) @@ -57,7 +57,7 @@ class LinaroGerrit: keydict = {} if r.status_code == 200: try: - a = json.loads(self.strip_gerrit_junk(r.content)) + a = json.loads(self.strip_gerrit_junk(r.text)) for data in a: keydict[data["seq"]] = data["ssh_public_key"].strip() return keydict @@ -103,7 +103,7 @@ class LinaroGerrit: members = [] if r.status_code == 200: try: - a = json.loads(self.strip_gerrit_junk(r.content)) + a = json.loads(self.strip_gerrit_junk(r.text)) for data in a: try: members.append(data["username"]) @@ -155,7 +155,7 @@ class LinaroGerrit: groups = [] if r.status_code == 200: try: - a = json.loads(self.strip_gerrit_junk(r.content)) + a = json.loads(self.strip_gerrit_junk(r.text)) for data in a: groups.append(data["name"]) return groups @@ -189,7 +189,7 @@ class LinaroGerrit: params["t"] = "" r = requests.get(url, params=params, **self.reqargs) if r.status_code == 200: - return json.loads(self.strip_gerrit_junk(r.content)) + return json.loads(self.strip_gerrit_junk(r.text)) else: log.error("Failed to list projects %s", r.status_code) return {} diff --git a/linaro_ldap.py b/linaro_ldap.py index d32e724..d91ccc9 100644 --- a/linaro_ldap.py +++ b/linaro_ldap.py @@ -39,7 +39,7 @@ def build_config(): def validate_key(pubkey): with tempfile.NamedTemporaryFile(delete=True) as f: - f.write(pubkey) + f.write(pubkey.encode('utf-8')) f.flush() try: args = ['ssh-keygen', '-l', '-f', f.name] @@ -130,11 +130,11 @@ def get_groups_and_users(ignore_list=[]): for row in result: try: uid = row[1]['uid'][0].decode('utf-8') - groups = row[1]['memberOf'].decode('utf-8') + groups = row[1]['memberOf'] if (type(ignore_list) is list) and (uid in ignore_list): continue for group in groups: - group = group.split(",")[0].split("=")[1] + group = group.decode('utf-8').split(",")[0].split("=")[1] all_groups.setdefault(group, []).append((uid)) except KeyError: # This user is not in any groups -- cgit v1.2.3