From d39b3bbee833ff81f030ec463c740d0f256f4533 Mon Sep 17 00:00:00 2001 From: Dov Reshef Date: Wed, 18 Jul 2018 15:07:01 +0300 Subject: [PATCH] It is now actually working :) --- config/exec_provider.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/config/exec_provider.py b/config/exec_provider.py index ec348f69..7418dac9 100644 --- a/config/exec_provider.py +++ b/config/exec_provider.py @@ -51,23 +51,25 @@ def run(self, previous_response=None): self.env['KUBERNETES_EXEC_INFO'] = json.dumps(kubernetes_exec_info) process = subprocess.Popen( self.args, - stdin=subprocess.PIPE, + stdout=subprocess.PIPE, stderr=subprocess.PIPE, - env=self.env) - process.wait() - if process.returncode != 0: - msg = 'exec: process returned %d' % process.returncode - stderr = process.stderr.read().strip() + env=self.env, + universal_newlines=True) + (stdout, stderr) = process.communicate() + exit_code = process.wait() + if exit_code != 0: + msg = 'exec: process returned %d' % exit_code + stderr = stderr.strip() if stderr: msg += '. %s' % stderr raise ConfigException(msg) - stdout = process.stdout.read() + stdout = stdout try: data = json.loads(stdout) except json.decoder.JSONDecodeError as de: raise ConfigException( 'exec: failed to decode process output: %s' % de) - if all(k in data for k in ('apiVersion', 'kind', 'status')): + if not all(k in data for k in ('apiVersion', 'kind', 'status')): raise ConfigException( 'exec: malformed response. plugin returned: %s' % stdout) if data['apiVersion'] != self.api_version: