summaryrefslogtreecommitdiff
path: root/openstackclient/tests/common/test_utils.py
diff options
context:
space:
mode:
authorMark Vanderwiel <vanderwl@us.ibm.com>2015-11-18 16:21:33 -0600
committerMark Vanderwiel <vanderwl@us.ibm.com>2015-11-18 17:48:43 -0600
commit71e1adeaf07ec1bf7f2e9bdd0c93ec2c90da85f7 (patch)
tree5528defc0032174ce2e3c2457c622ac43a87301c /openstackclient/tests/common/test_utils.py
parent5f6f456bfd388c199d837371fe11bb041fa2cfd9 (diff)
downloadpython-openstackclient-71e1adeaf07ec1bf7f2e9bdd0c93ec2c90da85f7.tar.gz
Allow error status to be specified
For some apis, heat, the error status is "failed". This patch changes the wait_for_status method to allow for the error status to be passed in the same way as the success status. Change-Id: I20db4051d3f5611a4b13fe23ea8798b82a40da81
Diffstat (limited to 'openstackclient/tests/common/test_utils.py')
-rw-r--r--openstackclient/tests/common/test_utils.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/openstackclient/tests/common/test_utils.py b/openstackclient/tests/common/test_utils.py
index 373c0de4..b564ffab 100644
--- a/openstackclient/tests/common/test_utils.py
+++ b/openstackclient/tests/common/test_utils.py
@@ -137,6 +137,46 @@ class TestUtils(test_utils.TestCase):
items, sort_str)
@mock.patch.object(time, 'sleep')
+ def test_wait_for_status_ok(self, mock_sleep):
+ # Tests the normal flow that the resource is status=active
+ resource = mock.MagicMock(status='ACTIVE')
+ status_f = mock.Mock(return_value=resource)
+ res_id = str(uuid.uuid4())
+ self.assertTrue(utils.wait_for_status(status_f, res_id,))
+ self.assertFalse(mock_sleep.called)
+
+ @mock.patch.object(time, 'sleep')
+ def test_wait_for_status_ok__with_overrides(self, mock_sleep):
+ # Tests the normal flow that the resource is status=complete
+ resource = mock.MagicMock(my_status='COMPLETE')
+ status_f = mock.Mock(return_value=resource)
+ res_id = str(uuid.uuid4())
+ self.assertTrue(utils.wait_for_status(status_f, res_id,
+ status_field='my_status',
+ success_status=['complete']))
+ self.assertFalse(mock_sleep.called)
+
+ @mock.patch.object(time, 'sleep')
+ def test_wait_for_status_error(self, mock_sleep):
+ # Tests that we fail if the resource is status=error
+ resource = mock.MagicMock(status='ERROR')
+ status_f = mock.Mock(return_value=resource)
+ res_id = str(uuid.uuid4())
+ self.assertFalse(utils.wait_for_status(status_f, res_id))
+ self.assertFalse(mock_sleep.called)
+
+ @mock.patch.object(time, 'sleep')
+ def test_wait_for_status_error_with_overrides(self, mock_sleep):
+ # Tests that we fail if the resource is my_status=failed
+ resource = mock.MagicMock(my_status='FAILED')
+ status_f = mock.Mock(return_value=resource)
+ res_id = str(uuid.uuid4())
+ self.assertFalse(utils.wait_for_status(status_f, res_id,
+ status_field='my_status',
+ error_status=['failed']))
+ self.assertFalse(mock_sleep.called)
+
+ @mock.patch.object(time, 'sleep')
def test_wait_for_delete_ok(self, mock_sleep):
# Tests the normal flow that the resource is deleted with a 404 coming
# back on the 2nd iteration of the wait loop.