Exemplo n.º 1
0
    def test_share_server_migration_check_exception(self, exception_to_raise,
                                                    raise_server_get_exception,
                                                    raise_network_get_action,
                                                    body):
        req = self._get_server_migration_request('fake_id')
        context = req.environ['manila.context']
        if body:
            body['migration_check']['writable'] = False
            body['migration_check']['nondisruptive'] = False
            body['migration_check']['preserve_snapshots'] = False
            body['migration_check']['host'] = 'fakehost@fakebackend'
        else:
            body = {}

        server_get = mock.Mock()
        network_get = mock.Mock()
        if raise_server_get_exception:
            server_get = mock.Mock(side_effect=exception.ShareServerNotFound(
                share_server_id='fake'))
        if raise_network_get_action:
            network_get = mock.Mock(side_effect=exception.ShareNetworkNotFound(
                share_network_id='fake'))

        mock_server_get = self.mock_object(db_api, 'share_server_get',
                                           server_get)

        mock_network_get = self.mock_object(db_api, 'share_network_get',
                                            network_get)

        self.assertRaises(exception_to_raise,
                          self.controller.share_server_migration_check, req,
                          'fake_id', body)
        mock_server_get.assert_called_once_with(context, 'fake_id')
        if raise_network_get_action:
            mock_network_get.assert_called_once_with(context, 'fake_id')
Exemplo n.º 2
0
 def test_details_share_server_not_found(self):
     share_server_id = 'fake'
     self.mock_object(
         db_api, 'share_server_get',
         mock.Mock(side_effect=exception.ShareServerNotFound(
             share_server_id=share_server_id)))
     self.assertRaises(exc.HTTPNotFound, self.controller.details,
                       FakeRequestAdmin, share_server_id)
     policy.check_policy.assert_called_once_with(CONTEXT,
                                                 self.resource_name,
                                                 'details')
     db_api.share_server_get.assert_called_once_with(
         CONTEXT, share_server_id)
Exemplo n.º 3
0
    def test_unmanage_share_server_not_found(self):
        """Tests unmanaging share servers"""
        req = fakes.HTTPRequest.blank('/v2/share-servers/fake_server_id/')
        context = req.environ['manila.context']
        share_server_error = mock.Mock(
            side_effect=exception.ShareServerNotFound(
                share_server_id='fake_server_id'))
        get_mock = self.mock_object(db_api, 'share_server_get',
                                    share_server_error)
        body = {'unmanage': {'force': True}}

        self.assertRaises(webob.exc.HTTPNotFound, self.controller.unmanage,
                          req, 'fake_server_id', body)

        get_mock.assert_called_once_with(context, 'fake_server_id')
Exemplo n.º 4
0
    def test_share_server_migration_start_share_server_not_found(self):
        fake_id = 'fake_server_id'
        req = self._get_server_migration_request(fake_id)
        context = req.environ['manila.context']

        body = {'migration_start': {'host': 'fake_host'}}

        self.mock_object(db_api, 'share_server_get',
                         mock.Mock(side_effect=exception.ShareServerNotFound(
                                   share_server_id=fake_id)))

        self.assertRaises(webob.exc.HTTPNotFound,
                          self.controller.share_server_migration_start,
                          req, fake_id, body)
        db_api.share_server_get.assert_called_once_with(context,
                                                        fake_id)
Exemplo n.º 5
0
    def test_reset_task_state_not_found(self):
        server = db_utils.create_share_server(
            id='fake_server_id', status=constants.STATUS_ACTIVE)
        req = self._get_server_migration_request(server['id'])

        update = {'task_state': constants.TASK_STATE_MIGRATION_ERROR}
        body = {'reset_task_state': update}

        self.mock_object(db_api, 'share_server_update',
                         mock.Mock(side_effect=exception.ShareServerNotFound(
                                   share_server_id='fake_server_id')))

        self.assertRaises(webob.exc.HTTPNotFound,
                          self.controller.share_server_reset_task_state,
                          req, server['id'], body)

        db_api.share_server_update.assert_called_once_with(utils.IsAMatcher(
            ctx_api.RequestContext), server['id'], update)
Exemplo n.º 6
0
 def test_share_server_not_found(self):
     # Verify response code for exception.ShareServerNotFound
     share_server_id = "fake_share_server_id"
     e = exception.ShareServerNotFound(share_server_id=share_server_id)
     self.assertEqual(404, e.code)
     self.assertIn(share_server_id, e.msg)
Exemplo n.º 7
0
 def raise_not_found(*args, **kwargs):
     raise exception.ShareServerNotFound(
         share_server_id=share_server_id)
Exemplo n.º 8
0
class ShareServerAPITest(test.TestCase):
    def setUp(self):
        super(ShareServerAPITest, self).setUp()
        self.controller = share_servers.ShareServerController()
        self.resource_name = self.controller.resource_name
        self.mock_object(policy, 'check_policy', mock.Mock(return_value=True))
        self.mock_object(db_api, 'share_server_get_all',
                         mock.Mock(return_value=fake_share_server_get_all()))

    def _prepare_request(self,
                         url,
                         use_admin_context,
                         version=api_version._MAX_API_VERSION):
        request = fakes.HTTPRequest.blank(url,
                                          use_admin_context=use_admin_context,
                                          version=version)
        ctxt = request.environ['manila.context']
        return request, ctxt

    def test_index_no_filters(self):
        request, ctxt = self._prepare_request(url='/v2/share-servers/',
                                              use_admin_context=True)
        self.mock_object(
            db_api, 'share_network_get',
            mock.Mock(side_effect=[
                fake_share_network_get_list['share_networks'][0],
                fake_share_network_get_list['share_networks'][1]
            ]))
        result = self.controller.index(request)
        policy.check_policy.assert_called_once_with(ctxt, self.resource_name,
                                                    'index')
        db_api.share_server_get_all.assert_called_once_with(ctxt)
        self.assertEqual(fake_share_server_list, result)

    def test_index_host_filter(self):
        request, ctxt = self._prepare_request(
            url='/index?host=%s' %
            fake_share_server_list['share_servers'][0]['host'],
            use_admin_context=True)
        self.mock_object(
            db_api, 'share_network_get',
            mock.Mock(side_effect=[
                fake_share_network_get_list['share_networks'][0],
                fake_share_network_get_list['share_networks'][1]
            ]))
        result = self.controller.index(request)
        policy.check_policy.assert_called_once_with(ctxt, self.resource_name,
                                                    'index')
        db_api.share_server_get_all.assert_called_once_with(ctxt)
        self.assertEqual([fake_share_server_list['share_servers'][0]],
                         result['share_servers'])

    def test_index_status_filter(self):
        request, ctxt = self._prepare_request(url='/index?status=%s' %
                                              constants.STATUS_ERROR,
                                              use_admin_context=True)
        self.mock_object(
            db_api, 'share_network_get',
            mock.Mock(side_effect=[
                fake_share_network_get_list['share_networks'][0],
                fake_share_network_get_list['share_networks'][1]
            ]))
        result = self.controller.index(request)
        policy.check_policy.assert_called_once_with(ctxt, self.resource_name,
                                                    'index')
        db_api.share_server_get_all.assert_called_once_with(ctxt)
        self.assertEqual([fake_share_server_list['share_servers'][1]],
                         result['share_servers'])

    def test_index_project_id_filter(self):
        request, ctxt = self._prepare_request(
            url='/index?project_id=%s' %
            fake_share_server_get_all()[0].project_id,
            use_admin_context=True)
        self.mock_object(
            db_api, 'share_network_get',
            mock.Mock(side_effect=[
                fake_share_network_get_list['share_networks'][0],
                fake_share_network_get_list['share_networks'][1]
            ]))
        result = self.controller.index(request)
        policy.check_policy.assert_called_once_with(ctxt, self.resource_name,
                                                    'index')
        db_api.share_server_get_all.assert_called_once_with(ctxt)

        self.assertEqual([fake_share_server_list['share_servers'][0]],
                         result['share_servers'])

    def test_index_share_network_filter_by_name(self):
        request, ctxt = self._prepare_request(
            url='/index?host=%s' %
            fake_share_server_list['share_servers'][0]['host'],
            use_admin_context=True)
        self.mock_object(
            db_api, 'share_network_get',
            mock.Mock(side_effect=[
                fake_share_network_get_list['share_networks'][0],
                fake_share_network_get_list['share_networks'][1]
            ]))
        result = self.controller.index(request)
        policy.check_policy.assert_called_once_with(ctxt, self.resource_name,
                                                    'index')
        db_api.share_server_get_all.assert_called_once_with(ctxt)
        self.assertEqual([fake_share_server_list['share_servers'][0]],
                         result['share_servers'])

    def test_index_share_network_filter_by_id(self):
        request, ctxt = self._prepare_request(
            url='/index?share_network=%s' %
            fake_share_network_get_list['share_networks'][0]['id'],
            use_admin_context=True)
        self.mock_object(
            db_api, 'share_network_get',
            mock.Mock(side_effect=[
                fake_share_network_get_list['share_networks'][0],
                fake_share_network_get_list['share_networks'][1]
            ]))
        result = self.controller.index(request)
        policy.check_policy.assert_called_once_with(ctxt, self.resource_name,
                                                    'index')
        db_api.share_server_get_all.assert_called_once_with(ctxt)
        self.assertEqual([fake_share_server_list['share_servers'][0]],
                         result['share_servers'])

    def test_index_fake_filter(self):
        request, ctxt = self._prepare_request(url='/index?fake_key=fake_value',
                                              use_admin_context=True)
        self.mock_object(
            db_api, 'share_network_get',
            mock.Mock(side_effect=[
                fake_share_network_get_list['share_networks'][0],
                fake_share_network_get_list['share_networks'][1]
            ]))
        result = self.controller.index(request)
        policy.check_policy.assert_called_once_with(ctxt, self.resource_name,
                                                    'index')
        db_api.share_server_get_all.assert_called_once_with(ctxt)
        self.assertEqual(0, len(result['share_servers']))

    def test_index_share_network_not_found(self):
        request, ctxt = self._prepare_request(
            url='/index?identifier=%s' %
            fake_share_server_get_all()[0].identifier,
            use_admin_context=True)
        self.mock_object(
            db_api, 'share_network_get',
            mock.Mock(side_effect=exception.ShareNetworkNotFound(
                share_network_id='fake')))

        result = self.controller.index(request)
        db_api.share_server_get_all.assert_called_once_with(ctxt)
        policy.check_policy.assert_called_once_with(ctxt, self.resource_name,
                                                    'index')
        exp_share_server = fake_share_server_list['share_servers'][0].copy()
        exp_share_server['project_id'] = ''
        exp_share_server['share_network_name'] = ''
        self.assertEqual([exp_share_server], result['share_servers'])

    def test_index_share_network_not_found_filter_project(self):
        request, ctxt = self._prepare_request(
            url='/index?project_id=%s' %
            fake_share_server_get_all()[0].project_id,
            use_admin_context=True)
        self.mock_object(
            db_api, 'share_network_get',
            mock.Mock(side_effect=exception.ShareNetworkNotFound(
                share_network_id='fake')))

        result = self.controller.index(request)
        db_api.share_server_get_all.assert_called_once_with(ctxt)
        policy.check_policy.assert_called_once_with(ctxt, self.resource_name,
                                                    'index')
        self.assertEqual(0, len(result['share_servers']))

    def test_show(self):
        self.mock_object(db_api, 'share_server_get',
                         mock.Mock(return_value=fake_share_server_get()))
        request, ctxt = self._prepare_request('/show', use_admin_context=True)
        self.mock_object(
            db_api, 'share_network_get',
            mock.Mock(
                return_value=fake_share_network_get_list['share_networks'][0]))
        result = self.controller.show(
            request, fake_share_server_get_result['share_server']['id'])
        policy.check_policy.assert_called_once_with(ctxt, self.resource_name,
                                                    'show')
        db_api.share_server_get.assert_called_once_with(
            ctxt, fake_share_server_get_result['share_server']['id'])
        self.assertEqual(fake_share_server_get_result['share_server'],
                         result['share_server'])

    @ddt.data(
        {
            'share_server_side_effect':
            exception.ShareServerNotFound(share_server_id="foo"),
            'share_net_side_effect':
            mock.Mock()
        }, {
            'share_server_side_effect':
            mock.Mock(return_value=fake_share_server_get()),
            'share_net_side_effect':
            exception.ShareNetworkNotFound(share_network_id="foo")
        })
    @ddt.unpack
    def test_show_server_not_found(self, share_server_side_effect,
                                   share_net_side_effect):
        self.mock_object(db_api, 'share_server_get',
                         mock.Mock(side_effect=share_server_side_effect))
        request, ctxt = self._prepare_request('/show', use_admin_context=True)
        self.mock_object(db_api, 'share_network_get',
                         mock.Mock(side_effect=share_net_side_effect))
        self.assertRaises(exc.HTTPNotFound, self.controller.show, request,
                          fake_share_server_get_result['share_server']['id'])

        policy.check_policy.assert_called_once_with(ctxt, self.resource_name,
                                                    'show')
        db_api.share_server_get.assert_called_once_with(
            ctxt, fake_share_server_get_result['share_server']['id'])
        if isinstance(share_net_side_effect, exception.ShareNetworkNotFound):
            exp_share_net_id = (fake_share_server_get().
                                share_network_subnet['share_network_id'])
            db_api.share_network_get.assert_called_once_with(
                ctxt, exp_share_net_id)

    def test_details(self):
        self.mock_object(db_api, 'share_server_get',
                         mock.Mock(return_value=fake_share_server_get()))
        result = self.controller.details(
            FakeRequestAdmin,
            fake_share_server_get_result['share_server']['id'])
        policy.check_policy.assert_called_once_with(CONTEXT,
                                                    self.resource_name,
                                                    'details')
        db_api.share_server_get.assert_called_once_with(
            CONTEXT, fake_share_server_get_result['share_server']['id'])
        self.assertEqual(fake_share_server_backend_details_get_result, result)

    def test_details_share_server_not_found(self):
        share_server_id = 'fake'
        self.mock_object(
            db_api, 'share_server_get',
            mock.Mock(side_effect=exception.ShareServerNotFound(
                share_server_id=share_server_id)))
        self.assertRaises(exc.HTTPNotFound, self.controller.details,
                          FakeRequestAdmin, share_server_id)
        policy.check_policy.assert_called_once_with(CONTEXT,
                                                    self.resource_name,
                                                    'details')
        db_api.share_server_get.assert_called_once_with(
            CONTEXT, share_server_id)

    def test_delete_active_server(self):
        share_server = FakeShareServer(status=constants.STATUS_ACTIVE)
        self.mock_object(db_api, 'share_server_get',
                         mock.Mock(return_value=share_server))
        self.mock_object(self.controller.share_api, 'delete_share_server')
        self.controller.delete(
            FakeRequestAdmin,
            fake_share_server_get_result['share_server']['id'])
        policy.check_policy.assert_called_once_with(CONTEXT,
                                                    self.resource_name,
                                                    'delete')
        db_api.share_server_get.assert_called_once_with(
            CONTEXT, fake_share_server_get_result['share_server']['id'])
        self.controller.share_api.delete_share_server.assert_called_once_with(
            CONTEXT, share_server)

    def test_delete_error_server(self):
        share_server = FakeShareServer(status=constants.STATUS_ERROR)
        self.mock_object(db_api, 'share_server_get',
                         mock.Mock(return_value=share_server))
        self.mock_object(self.controller.share_api, 'delete_share_server')
        self.controller.delete(
            FakeRequestAdmin,
            fake_share_server_get_result['share_server']['id'])
        policy.check_policy.assert_called_once_with(CONTEXT,
                                                    self.resource_name,
                                                    'delete')
        db_api.share_server_get.assert_called_once_with(
            CONTEXT, fake_share_server_get_result['share_server']['id'])
        self.controller.share_api.delete_share_server.assert_called_once_with(
            CONTEXT, share_server)

    def test_delete_used_server(self):
        share_server_id = fake_share_server_get_result['share_server']['id']

        def raise_not_share_server_in_use(*args, **kwargs):
            raise exception.ShareServerInUse(share_server_id=share_server_id)

        share_server = fake_share_server_get()
        self.mock_object(db_api, 'share_server_get',
                         mock.Mock(return_value=share_server))
        self.mock_object(self.controller.share_api, 'delete_share_server',
                         mock.Mock(side_effect=raise_not_share_server_in_use))
        self.assertRaises(exc.HTTPConflict, self.controller.delete,
                          FakeRequestAdmin, share_server_id)
        db_api.share_server_get.assert_called_once_with(
            CONTEXT, share_server_id)
        self.controller.share_api.delete_share_server.assert_called_once_with(
            CONTEXT, share_server)

    def test_delete_not_found(self):
        share_server_id = fake_share_server_get_result['share_server']['id']

        def raise_not_found(*args, **kwargs):
            raise exception.ShareServerNotFound(
                share_server_id=share_server_id)

        self.mock_object(db_api, 'share_server_get',
                         mock.Mock(side_effect=raise_not_found))
        self.assertRaises(exc.HTTPNotFound, self.controller.delete,
                          FakeRequestAdmin, share_server_id)
        db_api.share_server_get.assert_called_once_with(
            CONTEXT, share_server_id)
        policy.check_policy.assert_called_once_with(CONTEXT,
                                                    self.resource_name,
                                                    'delete')

    def test_delete_creating_server(self):
        share_server = FakeShareServer(status=constants.STATUS_CREATING)
        self.mock_object(db_api, 'share_server_get',
                         mock.Mock(return_value=share_server))
        self.assertRaises(exc.HTTPForbidden, self.controller.delete,
                          FakeRequestAdmin, share_server['id'])
        policy.check_policy.assert_called_once_with(CONTEXT,
                                                    self.resource_name,
                                                    'delete')

    def test_delete_deleting_server(self):
        share_server = FakeShareServer(status=constants.STATUS_DELETING)
        self.mock_object(db_api, 'share_server_get',
                         mock.Mock(return_value=share_server))
        self.assertRaises(exc.HTTPForbidden, self.controller.delete,
                          FakeRequestAdmin, share_server['id'])
        policy.check_policy.assert_called_once_with(CONTEXT,
                                                    self.resource_name,
                                                    'delete')
Exemplo n.º 9
0
 def raise_share_server_not_found(*args, **kwargs):
     raise exception.ShareServerNotFound(
         share_server_id=fake_server['id'])