diff options
author | Mytnyk, Volodymyr <volodymyrx.mytnyk@intel.com> | 2018-07-19 08:47:02 +0100 |
---|---|---|
committer | Mytnyk, Volodymyr <volodymyrx.mytnyk@intel.com> | 2018-07-25 10:19:28 +0100 |
commit | bc9601ba236447ea3003411e2a7f705545759340 (patch) | |
tree | 2f90921755303f61e45c346637acac02ab335000 | |
parent | e067b0c8d11f8e1c9e0935268ac93a4f2dbe8636 (diff) |
kubernetes_utils: avoid 404 error code in delete_config_map()
JIRA: YARDSTICK-1318
Change-Id: I0c04bd2928d5a4166b483f0c4f9f75fa9e5e00d2
Signed-off-by: Mytnyk, Volodymyr <volodymyrx.mytnyk@intel.com>
-rw-r--r-- | yardstick/benchmark/contexts/kubernetes.py | 2 | ||||
-rw-r--r-- | yardstick/common/kubernetes_utils.py | 13 | ||||
-rw-r--r-- | yardstick/tests/unit/common/test_kubernetes_utils.py | 30 |
3 files changed, 40 insertions, 5 deletions
diff --git a/yardstick/benchmark/contexts/kubernetes.py b/yardstick/benchmark/contexts/kubernetes.py index 6312973e6..e1553c72b 100644 --- a/yardstick/benchmark/contexts/kubernetes.py +++ b/yardstick/benchmark/contexts/kubernetes.py @@ -159,7 +159,7 @@ class KubernetesContext(ctx_base.Context): k8s_utils.create_config_map(self.ssh_key, {'authorized_keys': key}) def _delete_ssh_key(self): - k8s_utils.delete_config_map(self.ssh_key) + k8s_utils.delete_config_map(self.ssh_key, skip_codes=[404]) utils.remove_file(self.key_path) utils.remove_file(self.public_key_path) diff --git a/yardstick/common/kubernetes_utils.py b/yardstick/common/kubernetes_utils.py index 03d38784c..e708dc503 100644 --- a/yardstick/common/kubernetes_utils.py +++ b/yardstick/common/kubernetes_utils.py @@ -201,8 +201,10 @@ def create_config_map(name, def delete_config_map(name, namespace='default', wait=False, - **kwargs): # pragma: no cover + skip_codes=None, + **kwargs): # pylint: disable=unused-argument + skip_codes = [] if not skip_codes else skip_codes core_v1_api = get_core_api() body = kwargs.get('body', client.V1DeleteOptions()) kwargs.pop('body', None) @@ -211,9 +213,12 @@ def delete_config_map(name, namespace, body, **kwargs) - except ApiException: - LOG.exception('Delete config map failed') - raise + except ApiException as e: + if e.status in skip_codes: + LOG.info(e.reason) + else: + raise exceptions.KubernetesApiException( + action='delete', resource='ConfigMap') def create_custom_resource_definition(body): diff --git a/yardstick/tests/unit/common/test_kubernetes_utils.py b/yardstick/tests/unit/common/test_kubernetes_utils.py index 28de8ad10..30c1c1ffb 100644 --- a/yardstick/tests/unit/common/test_kubernetes_utils.py +++ b/yardstick/tests/unit/common/test_kubernetes_utils.py @@ -347,3 +347,33 @@ class DeleteReplicationControllerTestCase(base.BaseUnitTestCase): kubernetes_utils.delete_replication_controller(mock.ANY, skip_codes=[404]) mock_log.info.assert_called_once() + + +class DeleteConfigMapTestCase(base.BaseUnitTestCase): + @mock.patch.object(kubernetes_utils, 'get_core_api') + def test_execute_correct(self, mock_get_api): + mock_api = mock.Mock() + mock_get_api.return_value = mock_api + kubernetes_utils.delete_config_map("name", body=None) + mock_api.delete_namespaced_config_map.assert_called_once_with( + "name", "default", None + ) + + @mock.patch.object(kubernetes_utils, 'get_core_api') + def test_execute_exception(self, mock_get_api): + mock_api = mock.Mock() + mock_api.delete_namespaced_config_map.side_effect = rest.ApiException(status=200) + + mock_get_api.return_value = mock_api + with self.assertRaises(exceptions.KubernetesApiException): + kubernetes_utils.delete_config_map(mock.ANY, skip_codes=[404]) + + @mock.patch.object(kubernetes_utils, 'get_core_api') + @mock.patch.object(kubernetes_utils, 'LOG') + def test_execute_skip_exception(self, mock_log, mock_get_api): + mock_api = mock.Mock() + mock_api.delete_namespaced_config_map.side_effect = rest.ApiException(status=404) + + mock_get_api.return_value = mock_api + kubernetes_utils.delete_config_map(mock.ANY, skip_codes=[404]) + mock_log.info.assert_called_once() |