From 5ebee4c14ed337fb7b642145a49c8a4f54446eb2 Mon Sep 17 00:00:00 2001 From: Davide Cavalca Date: Nov 09 2020 00:16:42 +0000 Subject: create-review: validate krb ticket before calling koji --- diff --git a/src/FedoraReview/create_review.py b/src/FedoraReview/create_review.py index 0a6cea3..0657b38 100644 --- a/src/FedoraReview/create_review.py +++ b/src/FedoraReview/create_review.py @@ -244,7 +244,7 @@ class ReviewRequest(object): return self.create_review_request(rename_request) return bug - def run_command(self, cmd): + def run_command(self, cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE): """ Run a command and return the output :arg cmd, the command to run @@ -253,8 +253,8 @@ class ReviewRequest(object): try: proc = Popen( cmd, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, + stdout=stdout, + stderr=stderr, universal_newlines=True, ) output = proc.communicate()[0] @@ -263,11 +263,23 @@ class ReviewRequest(object): return (output, proc.returncode) + def refresh_kerberos_ticket(self): + print("Refreshing Kerberos ticket") + cmd = ["kinit", "-R"] + if self.run_command(cmd)[1] == 0: + return True + else: + cmd = ["kinit", "{}@FEDORAPROJECT.ORG".format(self.username)] + return self.run_command(cmd, stdout=None, stderr=None)[1] == 0 + def do_scratch_build(self, target="rawhide"): """ Starts a scratch build on koji. """ - print("Starting scratch build") - cmd = ["koji", "build", "--scratch", target, self.srpmfile] - return run_command(cmd) + if self.refresh_kerberos_ticket(): + print("Starting scratch build") + cmd = ["koji", "build", "--scratch", target, self.srpmfile] + return self.run_command(cmd) + else: + raise FedoraCreateReviewError("Failed to acquire a valid Kerberos ticket") def fill_urls(self): """ Fill the spec and src.rpm urls into the info table using the