Merge "The status_reason always exists"
This commit is contained in:
commit
ffbad00b50
@ -284,10 +284,12 @@ class Manager(object):
|
||||
with excutils.save_and_reraise_exception(reraise=reraise):
|
||||
LOG.error("Error occurred while calling Docker pause API: %s",
|
||||
six.text_type(e))
|
||||
self._fail_container(context, container, six.text_type(e))
|
||||
except Exception as e:
|
||||
with excutils.save_and_reraise_exception(reraise=reraise):
|
||||
LOG.exception("Unexpected exception: %s,",
|
||||
six.text_type(e))
|
||||
self._fail_container(context, container, six.text_type(e))
|
||||
|
||||
def container_pause(self, context, container):
|
||||
utils.spawn_n(self._do_container_pause, context, container)
|
||||
@ -303,10 +305,12 @@ class Manager(object):
|
||||
LOG.error(
|
||||
"Error occurred while calling Docker unpause API: %s",
|
||||
six.text_type(e))
|
||||
self._fail_container(context, container, six.text_type(e))
|
||||
except Exception as e:
|
||||
with excutils.save_and_reraise_exception(reraise=reraise):
|
||||
LOG.exception("Unexpected exception: %s",
|
||||
six.text_type(e))
|
||||
self._fail_container(context, container, six.text_type(e))
|
||||
|
||||
def container_unpause(self, context, container):
|
||||
utils.spawn_n(self._do_container_unpause, context, container)
|
||||
@ -369,6 +373,7 @@ class Manager(object):
|
||||
with excutils.save_and_reraise_exception(reraise=reraise):
|
||||
LOG.error("Error occurred while calling Docker kill API: %s",
|
||||
six.text_type(e))
|
||||
self._fail_container(context, container, six.text_type(e))
|
||||
|
||||
def container_kill(self, context, container, signal):
|
||||
utils.spawn_n(self._do_container_kill, context, container, signal)
|
||||
|
@ -97,6 +97,7 @@ class DockerDriver(driver.ContainerDriver):
|
||||
response = docker.create_container(image, **kwargs)
|
||||
container.container_id = response['Id']
|
||||
container.status = consts.CREATED
|
||||
container.status_reason = None
|
||||
container.save(context)
|
||||
return container
|
||||
|
||||
@ -127,6 +128,7 @@ class DockerDriver(driver.ContainerDriver):
|
||||
except errors.APIError as api_error:
|
||||
if '404' in str(api_error):
|
||||
container.status = consts.ERROR
|
||||
container.status_reason = six.text_type(api_error)
|
||||
return container
|
||||
raise
|
||||
|
||||
@ -225,6 +227,7 @@ class DockerDriver(driver.ContainerDriver):
|
||||
else:
|
||||
docker.restart(container.container_id)
|
||||
container.status = consts.RUNNING
|
||||
container.status_reason = None
|
||||
return container
|
||||
|
||||
@check_container_id
|
||||
@ -236,6 +239,7 @@ class DockerDriver(driver.ContainerDriver):
|
||||
else:
|
||||
docker.stop(container.container_id)
|
||||
container.status = consts.STOPPED
|
||||
container.status_reason = None
|
||||
return container
|
||||
|
||||
@check_container_id
|
||||
@ -243,6 +247,7 @@ class DockerDriver(driver.ContainerDriver):
|
||||
with docker_utils.docker_client() as docker:
|
||||
docker.start(container.container_id)
|
||||
container.status = consts.RUNNING
|
||||
container.status_reason = None
|
||||
return container
|
||||
|
||||
@check_container_id
|
||||
@ -250,6 +255,7 @@ class DockerDriver(driver.ContainerDriver):
|
||||
with docker_utils.docker_client() as docker:
|
||||
docker.pause(container.container_id)
|
||||
container.status = consts.PAUSED
|
||||
container.status_reason = None
|
||||
return container
|
||||
|
||||
@check_container_id
|
||||
@ -257,6 +263,7 @@ class DockerDriver(driver.ContainerDriver):
|
||||
with docker_utils.docker_client() as docker:
|
||||
docker.unpause(container.container_id)
|
||||
container.status = consts.RUNNING
|
||||
container.status_reason = None
|
||||
return container
|
||||
|
||||
@check_container_id
|
||||
@ -326,6 +333,7 @@ class DockerDriver(driver.ContainerDriver):
|
||||
except errors.APIError as api_error:
|
||||
if '404' in str(api_error):
|
||||
container.status = consts.ERROR
|
||||
container.status_reason = six.text_type(api_error)
|
||||
return container
|
||||
raise
|
||||
|
||||
|
@ -349,13 +349,17 @@ class TestManager(base.TestCase):
|
||||
self.compute_manager._do_container_pause(self.context, container)
|
||||
mock_pause.assert_called_once_with(container)
|
||||
|
||||
@mock.patch.object(manager.Manager, '_fail_container')
|
||||
@mock.patch.object(fake_driver, 'pause')
|
||||
def test_container_pause_failed(self, mock_pause):
|
||||
def test_container_pause_failed(self, mock_pause, mock_fail):
|
||||
container = Container(self.context, **utils.get_test_container())
|
||||
mock_pause.side_effect = exception.DockerError
|
||||
mock_pause.side_effect = exception.DockerError(
|
||||
message="Docker Error occurred")
|
||||
self.assertRaises(exception.DockerError,
|
||||
self.compute_manager._do_container_pause,
|
||||
self.context, container, reraise=True)
|
||||
mock_fail.assert_called_with(self.context,
|
||||
container, 'Docker Error occurred')
|
||||
|
||||
@mock.patch.object(fake_driver, 'unpause')
|
||||
def test_container_unpause(self, mock_unpause):
|
||||
@ -363,13 +367,17 @@ class TestManager(base.TestCase):
|
||||
self.compute_manager._do_container_unpause(self.context, container)
|
||||
mock_unpause.assert_called_once_with(container)
|
||||
|
||||
@mock.patch.object(manager.Manager, '_fail_container')
|
||||
@mock.patch.object(fake_driver, 'unpause')
|
||||
def test_container_unpause_failed(self, mock_unpause):
|
||||
def test_container_unpause_failed(self, mock_unpause, mock_fail):
|
||||
container = Container(self.context, **utils.get_test_container())
|
||||
mock_unpause.side_effect = exception.DockerError
|
||||
mock_unpause.side_effect = exception.DockerError(
|
||||
message="Docker Error occurred")
|
||||
self.assertRaises(exception.DockerError,
|
||||
self.compute_manager._do_container_unpause,
|
||||
self.context, container, reraise=True)
|
||||
mock_fail.assert_called_with(self.context,
|
||||
container, 'Docker Error occurred')
|
||||
|
||||
@mock.patch.object(fake_driver, 'show_logs')
|
||||
def test_container_logs(self, mock_logs):
|
||||
@ -415,13 +423,17 @@ class TestManager(base.TestCase):
|
||||
self.compute_manager._do_container_kill(self.context, container, None)
|
||||
mock_kill.assert_called_once_with(container, None)
|
||||
|
||||
@mock.patch.object(manager.Manager, '_fail_container')
|
||||
@mock.patch.object(fake_driver, 'kill')
|
||||
def test_container_kill_failed(self, mock_kill):
|
||||
def test_container_kill_failed(self, mock_kill, mock_fail):
|
||||
container = Container(self.context, **utils.get_test_container())
|
||||
mock_kill.side_effect = exception.DockerError
|
||||
mock_kill.side_effect = exception.DockerError(
|
||||
message="Docker Error occurred")
|
||||
self.assertRaises(exception.DockerError,
|
||||
self.compute_manager._do_container_kill,
|
||||
self.context, container, None, reraise=True)
|
||||
mock_fail.assert_called_with(self.context,
|
||||
container, 'Docker Error occurred')
|
||||
|
||||
@mock.patch.object(Container, 'save')
|
||||
@mock.patch.object(fake_driver, 'update')
|
||||
|
@ -170,7 +170,7 @@ class TestDockerDriver(base.DriverTestCase):
|
||||
mock_container.container_id)
|
||||
self.assertEqual(result_container.status,
|
||||
consts.ERROR)
|
||||
self.assertEqual(1, mock_init.call_count)
|
||||
self.assertEqual(2, mock_init.call_count)
|
||||
|
||||
def test_show_fail_api_error(self):
|
||||
with mock.patch.object(errors.APIError, '__str__',
|
||||
@ -291,7 +291,7 @@ class TestDockerDriver(base.DriverTestCase):
|
||||
mock_container.container_id)
|
||||
self.assertEqual(result_container.status,
|
||||
consts.ERROR)
|
||||
self.assertEqual(1, mock_init.call_count)
|
||||
self.assertEqual(2, mock_init.call_count)
|
||||
|
||||
def test_kill_fail_api_error(self):
|
||||
with mock.patch.object(errors.APIError, '__str__',
|
||||
|
Loading…
x
Reference in New Issue
Block a user