Add property returncode to WSClient

This will be familiar for Python users as subprocess.Popen has
the same attribute. Also, the behavior is such the returncode returns
a None value if the process was not run yet.

Other than that, when the process exists with a numerical code this will
be the value of the return code. If the command executed successfully
the return value will be 0.
This commit is contained in:
Oz Tiram 2019-09-17 16:45:12 +02:00
parent 4c1ab55553
commit 69570ac708

View File

@ -14,15 +14,19 @@
from kubernetes.client.rest import ApiException
import select
import certifi
import time
import collections
from websocket import WebSocket, ABNF, enableTrace
import six
import select
import ssl
import time
import six
import yaml
from six.moves.urllib.parse import urlencode, quote_plus, urlparse, urlunparse
from websocket import WebSocket, ABNF, enableTrace
STDIN_CHANNEL = 0
STDOUT_CHANNEL = 1
STDERR_CHANNEL = 2
@ -203,6 +207,21 @@ class WSClient:
else:
while self.is_open():
self.update(timeout=None)
@property
def returncode(self):
"""
The return code, A None value indicates that the process hasn't
terminated yet.
"""
if self.is_open():
return None
else:
err = self.read_channel(ERROR_CHANNEL)
err = yaml.safe_load(err)
if err['status'] == "Success":
return 0
return int(err['details']['causes'][0]['message'])
def close(self, **kwargs):
"""