diff --git a/0002-fence_gce-fix-regression-missing-import-googleapicli.patch b/0002-fence_gce-fix-regression-missing-import-googleapicli.patch new file mode 100644 index 0000000..0bde586 --- /dev/null +++ b/0002-fence_gce-fix-regression-missing-import-googleapicli.patch @@ -0,0 +1,28 @@ +From e22d41504ee53e5a4a72009581d4d69e9ae7447b Mon Sep 17 00:00:00 2001 +From: Helen Koike +Date: Fri, 20 Apr 2018 01:59:38 -0300 +Subject: [PATCH 2/5] fence_gce: fix regression - missing import + googleapiclient.discovery + +import googleapiclient.discovery was missing +import googleapiclient is not required +--- + fence/agents/gce/fence_gce.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/fence/agents/gce/fence_gce.py b/fence/agents/gce/fence_gce.py +index c1f8b16f..04d59846 100644 +--- a/fence/agents/gce/fence_gce.py ++++ b/fence/agents/gce/fence_gce.py +@@ -4,7 +4,7 @@ import atexit + import sys + sys.path.append("@FENCEAGENTSLIBDIR@") + +-import googleapiclient ++import googleapiclient.discovery + import oauth2client + from fencing import fail_usage, run_delay, all_opt, atexit_handler, check_input, process_input, show_docs, fence_action + +-- +2.16.3 + diff --git a/0003-fence_gce-fix-regression-missing-import-oauth2client.patch b/0003-fence_gce-fix-regression-missing-import-oauth2client.patch new file mode 100644 index 0000000..4f969e3 --- /dev/null +++ b/0003-fence_gce-fix-regression-missing-import-oauth2client.patch @@ -0,0 +1,38 @@ +From ba8169f4ef2d715ed681ae38f599aa544fa00023 Mon Sep 17 00:00:00 2001 +From: Helen Koike +Date: Tue, 1 May 2018 14:01:20 -0300 +Subject: [PATCH 3/5] fence_gce: fix regression - missing import + oauth2client.client + +import oauth2client.client was missing +import oauth2client is not necessary +Fix wrong path to GoogleCredentials +--- + fence/agents/gce/fence_gce.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/fence/agents/gce/fence_gce.py b/fence/agents/gce/fence_gce.py +index 04d59846..3a614f14 100644 +--- a/fence/agents/gce/fence_gce.py ++++ b/fence/agents/gce/fence_gce.py +@@ -5,7 +5,7 @@ import sys + sys.path.append("@FENCEAGENTSLIBDIR@") + + import googleapiclient.discovery +-import oauth2client ++import oauth2client.client + from fencing import fail_usage, run_delay, all_opt, atexit_handler, check_input, process_input, show_docs, fence_action + + def translate_status(instance_status): +@@ -99,7 +99,7 @@ def main(): + run_delay(options) + + try: +- credentials = oauth2client.GoogleCredentials.get_application_default() ++ credentials = oauth2client.client.GoogleCredentials.get_application_default() + conn = googleapiclient.discovery.build('compute', 'v1', credentials=credentials) + except Exception as err: + fail_usage("Failed: Create GCE compute v1 connection: {}".format(str(err))) +-- +2.16.3 + diff --git a/0004-fence_gce-use-default-credentials-from-googleapiclie.patch b/0004-fence_gce-use-default-credentials-from-googleapiclie.patch new file mode 100644 index 0000000..8d9df63 --- /dev/null +++ b/0004-fence_gce-use-default-credentials-from-googleapiclie.patch @@ -0,0 +1,43 @@ +From f94bc0bb6058fe791d597ed8aa5f60f9410debdb Mon Sep 17 00:00:00 2001 +From: Helen Koike +Date: Fri, 27 Apr 2018 13:51:40 -0300 +Subject: [PATCH 4/5] fence_gce: use default credentials from googleapiclient + +There are two ways for performing credentials +1) google-auth +2) oauth2client (deprecated) +googleapiclient check which libraries are present in the system and use +the most apropriated one in the order above. + +Also keep compatibility with previous version of googleapiclient library +--- + fence/agents/gce/fence_gce.py | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/fence/agents/gce/fence_gce.py b/fence/agents/gce/fence_gce.py +index 3a614f14..3abb5207 100644 +--- a/fence/agents/gce/fence_gce.py ++++ b/fence/agents/gce/fence_gce.py +@@ -5,7 +5,6 @@ import sys + sys.path.append("@FENCEAGENTSLIBDIR@") + + import googleapiclient.discovery +-import oauth2client.client + from fencing import fail_usage, run_delay, all_opt, atexit_handler, check_input, process_input, show_docs, fence_action + + def translate_status(instance_status): +@@ -99,7 +98,10 @@ def main(): + run_delay(options) + + try: +- credentials = oauth2client.client.GoogleCredentials.get_application_default() ++ credentials = None ++ if tuple(googleapiclient.__version__) < tuple("1.6.0"): ++ import oauth2client.client ++ credentials = oauth2client.client.GoogleCredentials.get_application_default() + conn = googleapiclient.discovery.build('compute', 'v1', credentials=credentials) + except Exception as err: + fail_usage("Failed: Create GCE compute v1 connection: {}".format(str(err))) +-- +2.16.3 + diff --git a/0005-run_command-fix-Python-3-encoding-issue.patch b/0005-run_command-fix-Python-3-encoding-issue.patch new file mode 100644 index 0000000..24d2239 --- /dev/null +++ b/0005-run_command-fix-Python-3-encoding-issue.patch @@ -0,0 +1,27 @@ +From b587642048b9f75cdc08d4d9e3fa03f14811cc21 Mon Sep 17 00:00:00 2001 +From: Oyvind Albrigtsen +Date: Fri, 20 Apr 2018 15:16:42 +0200 +Subject: [PATCH 5/5] run_command: fix Python 3 encoding issue + +--- + fence/agents/lib/fencing.py.py | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/fence/agents/lib/fencing.py.py b/fence/agents/lib/fencing.py.py +index 5b38460e..15914f0f 100644 +--- a/fence/agents/lib/fencing.py.py ++++ b/fence/agents/lib/fencing.py.py +@@ -995,7 +995,9 @@ def run_command(options, command, timeout=None, env=None, log_command=None): + logging.info("Executing: %s\n", log_command or command) + + try: +- process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env) ++ process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env, ++ # decodes newlines and in python3 also converts bytes to str ++ universal_newlines=(sys.version_info[0] > 2)) + except OSError: + fail_usage("Unable to run %s\n" % command) + +-- +2.16.3 + diff --git a/fence-agents.changes b/fence-agents.changes index a13bacb..e8355eb 100644 --- a/fence-agents.changes +++ b/fence-agents.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Thu May 17 16:19:11 UTC 2018 - kgronlund@suse.com + +- run_command: fix Python 3 encoding issue (bsc#1082871) +- fence_gce: use default credentials from googleapiclient +- fence_gce: fix regression - missing import oauth2client.client +- fence_gce: fix regression - missing import googleapiclient.discovery +- Add 0002-fence_gce-fix-regression-missing-import-googleapicli.patch +- Add 0003-fence_gce-fix-regression-missing-import-oauth2client.patch +- Add 0004-fence_gce-use-default-credentials-from-googleapiclie.patch +- Add 0005-run_command-fix-Python-3-encoding-issue.patch + ------------------------------------------------------------------- Thu Apr 26 05:37:33 UTC 2018 - kgronlund@suse.com diff --git a/fence-agents.spec b/fence-agents.spec index fb81a31..0eb6ab0 100644 --- a/fence-agents.spec +++ b/fence-agents.spec @@ -32,6 +32,14 @@ Release: 0 Url: https://github.com/ClusterLabs/fence-agents Source0: %{name}-%{version}.tar.xz Patch1: 0001-Use-Python-3-for-all-scripts-bsc-1065966.patch +# fence_gce: fix regression - missing import googleapiclient.discovery +Patch2: 0002-fence_gce-fix-regression-missing-import-googleapicli.patch +# fence_gce: fix regression - missing import oauth2client.client +Patch3: 0003-fence_gce-fix-regression-missing-import-oauth2client.patch +# fence_gce: use default credentials from googleapiclient +Patch4: 0004-fence_gce-use-default-credentials-from-googleapiclie.patch +# run_command: fix Python 3 encoding issue (bsc#1082871) +Patch5: 0005-run_command-fix-Python-3-encoding-issue.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: autoconf @@ -103,6 +111,10 @@ development. %prep %setup -q -n %{name}-%{version} %patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 %build CFLAGS="${CFLAGS} ${RPM_OPT_FLAGS}"