diff --git a/CHANGELOG.md b/CHANGELOG.md index d2afa6e25..f1adad311 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# HEAD +- Add support for attach API calls #180 + # v2.0.0a1 - Update to kubernetes 1.6 spec #169 diff --git a/README.md b/README.md index 09f01cc79..93903ed30 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,43 @@ python -m examples.example1 All APIs and Models' documentation can be found at the [Generated client's README file](kubernetes/README.md) +## Compatibility + +`client-python` follows [semver](http://semver.org/), so until the major version of +client-python gets increased, your code will continue to work with explicitly +supported versions of Kubernetes clusters. + +#### Compatibility matrix + +| | Kubernetes 1.3 | Kubernetes 1.4 | Kubernetes 1.5 | Kubernetes 1.6 | +|-------------------------|----------------|----------------|----------------|----------------| +| client-python 1.0 | + | + | ✓ | - | +| client-python 2.0 alpha | + | + | + | ✓ | +| client-python HEAD | + | + | + | + | + +Key: + +* `✓` Exactly the same features / API objects in both client-python and the Kubernetes + version. +* `+` client-python has features or api objects that may not be present in the + Kubernetes cluster, but everything they have in common will work. +* `-` The Kubernetes cluster has features the client-python library can't use + (additional API objects, etc). + +See the [CHANGELOG](./CHANGELOG.md) for a detailed description of changes +between client-python versions. + +| Client version | Canonical source for OpenAPI spec | Maintenance status | +|----------------|--------------------------------------|-------------------------------| +| 1.0 Alpha/Beta | Kubernetes main repo, 1.5 branch | ✗ | +| 1.0.x | Kubernetes main repo, 1.5 branch | ✓ | +| 2.0 alpha | Kubernetes main repo, 1.6 branch | ✓ | + +Key: + +* `✓` Changes in main Kubernetes repo are manually ([should be automated](https://github.com/kubernetes-incubator/client-python/issues/177)) published to client-python when they are available. +* `✗` No longer maintained; please upgrade. + ## Community, Support, Discussion You can reach the maintainers of this project at [SIG API Machinery](https://github.com/kubernetes/community/tree/master/sig-api-machinery). If you have any problem with the package or any suggestions, please file an [issue](https://github.com/kubernetes-incubator/client-python/issues). diff --git a/kubernetes/client/api_client.py b/kubernetes/client/api_client.py index 6970ee36d..0e5e14abc 100644 --- a/kubernetes/client/api_client.py +++ b/kubernetes/client/api_client.py @@ -346,7 +346,7 @@ class ApiClient(object): """ # FIXME(dims) : We need a better way to figure out which # calls end up using web sockets - if url.endswith('/exec') and (method == "GET" or method == "POST"): + if (url.endswith('/exec') or url.endswith('/attach')) and (method == "GET" or method == "POST"): return ws_client.websocket_call(self.config, url, query_params=query_params, diff --git a/kubernetes/client/ws_client.py b/kubernetes/client/ws_client.py index 7177e5eb2..d29036c82 100644 --- a/kubernetes/client/ws_client.py +++ b/kubernetes/client/ws_client.py @@ -234,7 +234,7 @@ def websocket_call(configuration, url, query_params, _request_timeout, if isinstance(commands, list): for command in commands: url += "&command=%s&" % quote_plus(command) - else: + elif commands is not None: url += '&command=' + quote_plus(commands) try: