summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAanand Prasad <aanand.prasad@gmail.com>2016-06-28 13:03:38 -0700
committerGitHub <noreply@github.com>2016-06-28 13:03:38 -0700
commit94f8dd31be3a3f1802f6041a801f01a6e316ba49 (patch)
treeca66ef6ae1bedb8e667e38c65e1c96a0bb285b15
parent986a14a152d20df6bb8622516ab2d18af73e5e20 (diff)
parentd96d848bb44a958941043d808efc78a39e27ca33 (diff)
downloaddocker-py-94f8dd31be3a3f1802f6041a801f01a6e316ba49.tar.gz
Merge pull request #1109 from docker/signal-str
signal in Client.kill can be a string containing the signal's name
-rw-r--r--docker/api/container.py4
-rw-r--r--tests/integration/container_test.py30
-rw-r--r--tests/integration/network_test.py15
3 files changed, 42 insertions, 7 deletions
diff --git a/docker/api/container.py b/docker/api/container.py
index b591b17..9cc14db 100644
--- a/docker/api/container.py
+++ b/docker/api/container.py
@@ -187,7 +187,9 @@ class ContainerApiMixin(object):
url = self._url("/containers/{0}/kill", container)
params = {}
if signal is not None:
- params['signal'] = int(signal)
+ if not isinstance(signal, six.string_types):
+ signal = int(signal)
+ params['signal'] = signal
res = self._post(url, params=params)
self._raise_for_status(res)
diff --git a/tests/integration/container_test.py b/tests/integration/container_test.py
index 940e5b8..56b648a 100644
--- a/tests/integration/container_test.py
+++ b/tests/integration/container_test.py
@@ -840,6 +840,36 @@ class KillTest(helpers.BaseTestCase):
self.assertIn('Running', state)
self.assertEqual(state['Running'], False, state)
+ def test_kill_with_signal_name(self):
+ id = self.client.create_container(BUSYBOX, ['sleep', '60'])
+ self.client.start(id)
+ self.tmp_containers.append(id)
+ self.client.kill(id, signal='SIGKILL')
+ exitcode = self.client.wait(id)
+ self.assertNotEqual(exitcode, 0)
+ container_info = self.client.inspect_container(id)
+ self.assertIn('State', container_info)
+ state = container_info['State']
+ self.assertIn('ExitCode', state)
+ self.assertNotEqual(state['ExitCode'], 0)
+ self.assertIn('Running', state)
+ self.assertEqual(state['Running'], False, state)
+
+ def test_kill_with_signal_integer(self):
+ id = self.client.create_container(BUSYBOX, ['sleep', '60'])
+ self.client.start(id)
+ self.tmp_containers.append(id)
+ self.client.kill(id, signal=9)
+ exitcode = self.client.wait(id)
+ self.assertNotEqual(exitcode, 0)
+ container_info = self.client.inspect_container(id)
+ self.assertIn('State', container_info)
+ state = container_info['State']
+ self.assertIn('ExitCode', state)
+ self.assertNotEqual(state['ExitCode'], 0)
+ self.assertIn('Running', state)
+ self.assertEqual(state['Running'], False, state)
+
class PortTest(helpers.BaseTestCase):
def test_port(self):
diff --git a/tests/integration/network_test.py b/tests/integration/network_test.py
index 26d27a5..f719fea 100644
--- a/tests/integration/network_test.py
+++ b/tests/integration/network_test.py
@@ -138,9 +138,11 @@ class TestNetworks(helpers.BaseTestCase):
self.client.connect_container_to_network(
container, net_id, aliases=['foo', 'bar'])
container_data = self.client.inspect_container(container)
- self.assertEqual(
- container_data['NetworkSettings']['Networks'][net_name]['Aliases'],
- ['foo', 'bar'])
+ aliases = (
+ container_data['NetworkSettings']['Networks'][net_name]['Aliases']
+ )
+ assert 'foo' in aliases
+ assert 'bar' in aliases
@requires_api_version('1.21')
def test_connect_on_container_create(self):
@@ -183,10 +185,11 @@ class TestNetworks(helpers.BaseTestCase):
self.client.start(container)
container_data = self.client.inspect_container(container)
- self.assertEqual(
- container_data['NetworkSettings']['Networks'][net_name]['Aliases'],
- ['foo', 'bar']
+ aliases = (
+ container_data['NetworkSettings']['Networks'][net_name]['Aliases']
)
+ assert 'foo' in aliases
+ assert 'bar' in aliases
@requires_api_version('1.22')
def test_create_with_ipv4_address(self):