fix state handling Closes #905
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/35eb2797 Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/35eb2797 Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/35eb2797 Branch: refs/heads/trunk Commit: 35eb2797c5e5dd9cdb6f35705eb522fe4b2357f5 Parents: f108598 Author: Mario Loria <ma...@arroyonetworks.com> Authored: Thu Oct 13 15:34:13 2016 -0400 Committer: Anthony Shaw <anthonys...@apache.org> Committed: Fri Oct 14 19:44:48 2016 +1100 ---------------------------------------------------------------------- libcloud/container/drivers/rancher.py | 9 ++++++--- libcloud/test/container/test_rancher.py | 3 +++ 2 files changed, 9 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/35eb2797/libcloud/container/drivers/rancher.py ---------------------------------------------------------------------- diff --git a/libcloud/container/drivers/rancher.py b/libcloud/container/drivers/rancher.py index 5a213e4..eda0058 100644 --- a/libcloud/container/drivers/rancher.py +++ b/libcloud/container/drivers/rancher.py @@ -707,6 +707,11 @@ class RancherContainerDriver(ContainerDriver): """ rancher_state = data['state'] + + # A Removed container is purged after x amt of time. + # Both of these render the container dead (can't be started later) + terminate_condition = ["removed", "purged"] + if 'running' in rancher_state: state = ContainerState.RUNNING elif 'stopped' in rancher_state: @@ -715,9 +720,7 @@ class RancherContainerDriver(ContainerDriver): state = ContainerState.REBOOTING elif 'error' in rancher_state: state = ContainerState.ERROR - elif 'removed' or 'purged' in rancher_state: - # A Removed container is purged after x amt of time. - # Both of these render the container dead (can't be started later) + elif any(x in rancher_state for x in terminate_condition): state = ContainerState.TERMINATED elif data['transitioning'] == 'yes': # Best we can do for current actions http://git-wip-us.apache.org/repos/asf/libcloud/blob/35eb2797/libcloud/test/container/test_rancher.py ---------------------------------------------------------------------- diff --git a/libcloud/test/container/test_rancher.py b/libcloud/test/container/test_rancher.py index 178e298..eb23ddf 100644 --- a/libcloud/test/container/test_rancher.py +++ b/libcloud/test/container/test_rancher.py @@ -162,6 +162,7 @@ class RancherContainerDriverTestCase(unittest.TestCase): started = container.start() self.assertEqual(started.id, "1i31") self.assertEqual(started.name, "newcontainer") + self.assertEqual(started.state, "pending") self.assertEqual(started.extra['state'], "starting") def test_stop_container(self): @@ -169,6 +170,7 @@ class RancherContainerDriverTestCase(unittest.TestCase): stopped = container.stop() self.assertEqual(stopped.id, "1i31") self.assertEqual(stopped.name, "newcontainer") + self.assertEqual(stopped.state, "pending") self.assertEqual(stopped.extra['state'], "stopping") def test_ex_search_containers(self): @@ -180,6 +182,7 @@ class RancherContainerDriverTestCase(unittest.TestCase): destroyed = container.destroy() self.assertEqual(destroyed.id, "1i31") self.assertEqual(destroyed.name, "newcontainer") + self.assertEqual(destroyed.state, "pending") self.assertEqual(destroyed.extra['state'], "stopping")