Example #1
0
    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'))
Example #2
0
    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'))
Example #3
0
    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)
Example #4
0
 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'])
Example #8
0
 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)
Example #9
0
 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'])
Example #10
0
    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)
Example #11
0
 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'])
Example #13
0
 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'])
Example #14
0
 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'])
Example #15
0
    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'))
Example #16
0
 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'])
Example #17
0
    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)
Example #18
0
    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)
Example #19
0
    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)
Example #20
0
    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)