def test_rc_delete_succeeds_when_not_found(self, mock_bay_get_by_name, mock_rc_get_by_uuid, mock_object_has_stack): mock_bay = mock.MagicMock() mock_bay_get_by_name.return_value = mock_bay mock_rc = mock.MagicMock() mock_rc.name = 'test-rc' mock_rc.uuid = 'test-uuid' mock_rc.bay_uuid = 'test-bay-uuid' mock_rc_get_by_uuid.return_value = mock_rc mock_object_has_stack.return_value = True with patch('magnum.conductor.k8s_api.create_k8s_api_rc') as \ mock_kube_api: err = rest.ApiException(status=404) (mock_kube_api.return_value. delete_namespaced_replication_controller.side_effect) = err self.kube_handler.rc_delete(self.context, mock_rc.name, mock_rc.bay_uuid) (mock_kube_api.return_value. delete_namespaced_replication_controller.assert_called_once_with( name=mock_rc.name, body={}, namespace='default'))
def test_rc_update_with_failure(self, mock_bay_get_by_name, mock_rc_get_by_uuid, mock_rc_get_by_name): mock_bay = mock.MagicMock() mock_bay_get_by_name.return_value = mock_bay expected_rc = mock.MagicMock() expected_rc.uuid = 'test-uuid' expected_rc.name = 'test-name' expected_rc.bay_uuid = 'test-bay-uuid' mock_rc_get_by_uuid.return_value = expected_rc mock_rc_get_by_name.return_value = expected_rc expected_rc.manifest = '{"key": "value"}' name_rc = expected_rc.name with patch('magnum.conductor.k8s_api.create_k8s_api_rc') as \ mock_kube_api: err = rest.ApiException(status=404) (mock_kube_api.return_value. replace_namespaced_replication_controller.side_effect) = err self.assertRaises(exception.KubernetesAPIFailed, self.kube_handler.rc_update, self.context, expected_rc.name, expected_rc.bay_uuid, expected_rc.manifest) (mock_kube_api.return_value. replace_namespaced_replication_controller.assert_called_once_with( body=expected_rc.manifest, name=name_rc, namespace='default'))
def test_rc_delete_with_failure(self, mock_bay_get_by_name, mock_rc_get_by_uuid, mock_object_has_stack): mock_bay = mock.MagicMock() mock_bay_get_by_name.return_value = mock_bay mock_rc = mock.MagicMock() mock_rc.name = 'test-rc' mock_rc.uuid = 'test-uuid' mock_rc.bay_uuid = 'test-bay-uuid' mock_rc_get_by_uuid.return_value = mock_rc mock_object_has_stack.return_value = True with patch('magnum.conductor.k8s_api.create_k8s_api_rc') as \ mock_kube_api: err = rest.ApiException(status=500) (mock_kube_api.return_value. delete_namespaced_replication_controller.side_effect) = err self.assertRaises(exception.KubernetesAPIFailed, self.kube_handler.rc_delete, self.context, mock_rc.name, mock_rc.bay_uuid) (mock_kube_api.return_value. delete_namespaced_replication_controller.assert_called_once_with( name=mock_rc.name, body={}, namespace='default')) self.assertFalse(mock_rc.destroy.called)
def test_delete_service_with_name_not_found(self, mock_service_delete): err = rest.ApiException(status=404) mock_service_delete.side_effect = err response = self.delete( '/services/not_found/5d12f6fd-a196-4bf0-ae4c-1f639a523a52', expect_errors=True) self.assertEqual(500, response.status_int) self.assertEqual('application/json', response.content_type) self.assertTrue(response.json['error_message'])
def test_delete_rc_not_found(self, mock_rc_delete): uuid = utils.generate_uuid() err = rest.ApiException(status=404) mock_rc_delete.side_effect = err response = self.delete('/rcs/%s/%s' % (uuid, self.rc.bay_uuid), expect_errors=True) self.assertEqual(500, response.status_int) self.assertEqual('application/json', response.content_type) self.assertTrue(response.json['error_message'])
def test_get_one_by_name_not_found(self, mock_rc_show): err = rest.ApiException(status=404) mock_rc_show.side_effect = err response = self.get_json( '/rcs/not_found/5d12f6fd-a196-4bf0-ae4c-1f639a523a52', expect_errors=True) self.assertEqual(500, response.status_int) self.assertEqual('application/json', response.content_type) self.assertTrue(response.json['error_message'])
def test_delete_rc(self, mock_rc_show, mock_rc_delete): self.delete('/rcs/%s/%s' % (self.rc.uuid, self.rc.bay_uuid)) err = rest.ApiException(status=404) mock_rc_show.side_effect = err response = self.get_json( '/rcs/%s/%s' % (self.rc.uuid, self.rc.bay_uuid), expect_errors=True) self.assertEqual(500, response.status_int) self.assertEqual('application/json', response.content_type) self.assertTrue(response.json['error_message'])
def test_delete_service_with_name(self, mock_service_show, mock_service_delete): mock_service_delete.return_value = {} response = self.delete('/services/%s/%s' % (self.service.name, self.service.bay_uuid), expect_errors=True) err = rest.ApiException(status=204) mock_service_show.side_effect = err response = self.get_json('/services/%s/%s' % (self.service.uuid, self.service.bay_uuid), expect_errors=True) self.assertEqual(500, response.status_int)
def test_delete_service(self, mock_service_show, mock_service_delete): mock_service_delete.return_value = {} self.delete('/services/%s/%s' % (self.service.uuid, self.service.bay_uuid)) err = rest.ApiException(status=404) mock_service_show.side_effect = err response = self.get_json('/services/%s/%s' % (self.service.uuid, self.service.bay_uuid), expect_errors=True) self.assertEqual(500, response.status_int) self.assertEqual('application/json', response.content_type) self.assertTrue(response.json['error_message'])
def test_pod_create_fail_on_existing_pod(self): expected_pod = self.mock_pod() expected_pod.create = mock.MagicMock() expected_pod.manifest = '{"key": "value"}' with patch('magnum.conductor.k8s_api.create_k8s_api') as mock_kube_api: err = rest.ApiException(status=409) mock_kube_api.return_value.create_namespaced_pod.side_effect = err self.assertRaises(exception.KubernetesAPIFailed, self.kube_handler. pod_create, self.context, expected_pod) self.assertEqual('failed', expected_pod.status) self.assertFalse(expected_pod.create.called)
def test_delete_multiple_pod_by_name(self, mock_pod_delete): obj_utils.create_test_pod(self.context, name='test_pod', uuid=utils.generate_uuid()) obj_utils.create_test_pod(self.context, name='test_pod', uuid=utils.generate_uuid()) err = rest.ApiException(status=400) mock_pod_delete.side_effect = err response = self.delete('/pods/test_pod', expect_errors=True) self.assertEqual(400, response.status_int) self.assertEqual('application/json', response.content_type) self.assertTrue(response.json['error_message'])
def test_delete_multiple_rc_by_name(self, mock_rc_delete): err = rest.ApiException(status=409) mock_rc_delete.side_effect = err obj_utils.create_test_rc(self.context, name='test_rc', uuid=utils.generate_uuid()) obj_utils.create_test_rc(self.context, name='test_rc', uuid=utils.generate_uuid()) response = self.delete( '/rcs/test_rc/5d12f6fd-a196-4bf0-ae4c-1f639a523a52', expect_errors=True) self.assertEqual(500, response.status_int) self.assertEqual('application/json', response.content_type) self.assertTrue(response.json['error_message'])
def test_replace_internal_field(self, mock_service_update): err = rest.ApiException(status=400) mock_service_update.side_effect = err response = self.patch_json('/services/%s/%s' % (self.service.uuid, self.service.bay_uuid), [{ 'path': '/labels', 'value': {}, 'op': 'replace' }], expect_errors=True) self.assertEqual('application/json', response.content_type) self.assertEqual(400, response.status_code) self.assertTrue(response.json['error_message'])
def test_get_one_by_name_multiple_service(self, mock_service_show): obj_utils.create_test_service(self.context, name='test_service', uuid=utils.generate_uuid()) obj_utils.create_test_service(self.context, name='test_service', uuid=utils.generate_uuid()) err = rest.ApiException(status=500) mock_service_show.side_effect = err response = self.get_json( '/services/test_service/5d12f6fd-a196-4bf0-ae4c-1f639a523a52', expect_errors=True) self.assertEqual(500, response.status_int) self.assertEqual('application/json', response.content_type) self.assertTrue(response.json['error_message'])
def test_pod_create_with_fail(self): expected_pod = mock.MagicMock() manifest = {"key": "value"} expected_pod.manifest = '{"key": "value"}' with patch('magnum.conductor.k8s_api.create_k8s_api') as \ mock_kube_api: err = rest.ApiException(status=500) mock_kube_api.return_value.create_namespaced_pod.side_effect = err self.assertRaises(exception.KubernetesAPIFailed, self.kube_handler.pod_create, self.context, expected_pod) (mock_kube_api.return_value.create_namespaced_pod. assert_called_once_with(body=manifest, namespace='default'))
def test_replace_non_existent_service(self, mock_service_update): err = rest.ApiException(status=404) mock_service_update.side_effect = err response = self.patch_json( '/services/%s?bay_ident=%s' % (utils.generate_uuid(), '5d12f6fd-a196-4bf0-ae4c-1f639a523a52'), [{ 'path': '/bay_uuid', 'value': self.bay2.uuid, 'op': 'replace' }], expect_errors=True) self.assertEqual(404, response.status_int) self.assertEqual('application/json', response.content_type) self.assertTrue(response.json['error_message'])
def test_service_create_with_failure(self): expected_service = self.mock_service() expected_service.create = mock.MagicMock() manifest = {"key": "value"} expected_service.manifest = '{"key": "value"}' with patch('magnum.conductor.k8s_api.create_k8s_api') as mock_kube_api: err = rest.ApiException(status=404) (mock_kube_api.return_value.create_namespaced_service.side_effect ) = err self.assertRaises(exception.KubernetesAPIFailed, self.kube_handler.service_create, self.context, expected_service) (mock_kube_api.return_value.create_namespaced_service. assert_called_once_with(body=manifest, namespace='default')) self.assertFalse(expected_service.create.called)
def test_pod_delete_with_failure(self, mock_pod_get_by_uuid, mock_object_has_stack): mock_pod = mock.MagicMock() mock_pod.name = 'test-pod' mock_pod.uuid = 'test-uuid' mock_pod_get_by_uuid.return_value = mock_pod mock_object_has_stack.return_value = True with patch('magnum.conductor.k8s_api.create_k8s_api') as mock_kube_api: err = rest.ApiException(status=500) mock_kube_api.return_value.delete_namespaced_pod.side_effect = err self.assertRaises(exception.KubernetesAPIFailed, self.kube_handler.pod_delete, self.context, mock_pod.uuid) (mock_kube_api.return_value.delete_namespaced_pod .assert_called_once_with( name=mock_pod.name, body={}, namespace='default')) self.assertFalse(mock_pod.destroy.called)
def test_pod_delete_succeeds_when_not_found(self, mock_pod_get_by_uuid, mock_object_has_stack): mock_pod = mock.MagicMock() mock_pod.name = 'test-pod' mock_pod.uuid = 'test-uuid' mock_pod_get_by_uuid.return_value = mock_pod mock_object_has_stack.return_value = True with patch('magnum.conductor.k8s_api.create_k8s_api') as mock_kube_api: err = rest.ApiException(status=404) mock_kube_api.return_value.delete_namespaced_pod.side_effect = err self.kube_handler.pod_delete(self.context, mock_pod.uuid) (mock_kube_api.return_value.delete_namespaced_pod. assert_called_once_with(name=mock_pod.name, body={}, namespace='default')) mock_pod.destroy.assert_called_once_with(self.context)
def test_pod_update_with_failure(self): expected_pod = self.mock_pod() expected_pod.uuid = 'test-uuid' expected_pod.name = 'test-name' expected_pod.refresh = mock.MagicMock() manifest = {"key": "value"} expected_pod.manifest = '{"key": "value"}' with patch('magnum.conductor.k8s_api.create_k8s_api') as mock_kube_api: err = rest.ApiException(status=404) mock_kube_api.return_value.replace_namespaced_pod.side_effect = err self.assertRaises(exception.KubernetesAPIFailed, self.kube_handler.pod_update, self.context, expected_pod) (mock_kube_api.return_value.replace_namespaced_pod. assert_called_once_with(body=manifest, name=expected_pod.name, namespace='default')) self.assertFalse(expected_pod.refresh.called)