Currently, under python 3, the WSClient decodes all data via UTF-8. This
will break, e.g. capturing the stdout of tar or gzip.
This adds a new 'binary' kwarg to the WSClient class and websocket_call
function. If this is set to true, then the decoding will not happen, and
all channels will be interpreted as binary.
This does raise a slight complication, as the OpenAPI-generated client
will convert the output to a string, no matter what, which it ends up
doing by (effectively) calling repr(). This requires a bit of magic to
recover the orignial bytes, and is inefficient. However, this is only
the case when using the default _preload_content=True, setting this to
False and manually calling read_all or read_channel, this issue does not
arise.
The test is flaking a lot resulting in dev work to be slowed down.
This needs to be investigated and resolved. Only then, the test
should be reenabled.
See: https://github.com/kubernetes-client/python/issues/1300
Signed-off-by: Nabarun Pal <pal.nabarun95@gmail.com>
This tests demonstrate how to execute a command in a pod and
what behavior is expected. As discussed in the commit
bf367ed6ddc63369f76df0a07b248a6711328605 in python-base this
behavior would be familiar to Python users, as `subprocess.Popen`
has the same property.
Some models don't have attribute 'status', like V1ConfigMap,
V1ClusterRole, and V1NetworkPolicy. AttributeError would be raised if
these resources are created via create_from_yaml with verbose enabled.
This patch checks if attribute 'status' exists before accessing it.
Using `nginx-app` deployment multiple times, is problematic because we get
conflicts or not found error.
Instead of trying to handle all cases, explicit different names
are used now. The tests now runs more reliably
We create a deployment and do the following:
```
self.assertIsNotNone(dep)
```
Which does not fail, and then the code proceeds to deletion
and fails with a 404 execption in 80% of the time, but sometimes
it works. The deployment is there, but for some reason not available for
deletion.
Travis CI also showed inconsitent behaviour on this. Python3.5 passed
but all other version failed.
With this commit we wait for the deployment to become available for
deletion and only then continue.
This fixes of all tests and keeps the original API.
It's the users responsiblility to do something the execptions
when using `create_from_dict`, no air bag or breaks are supplied here.