def test_manage_servers_with_db_exception(self, get_manageable_mock, manage_mock, umanage_mock, server_create_mock, rollback_quota_mock): get_manageable_mock.side_effect = None manage_mock.side_effect = None server_create_mock.side_effect = exception.ServerAlreadyExists( "test-server") server = obj_utils.get_test_server( self.context, status=None, node_uuid=None, power_state=states.NOSTATE, availability_zone=None, image_uuid=None) node_uuid = 'aacdbd78-d670-409e-95aa-ecfcfb94fee2' self.assertRaises(exception.ServerAlreadyExists, self.service.manage_server, self.context, server, node_uuid) get_manageable_mock.assert_called_once_with(node_uuid) manage_mock.assert_called_once() umanage_mock.assert_called_once() server_create_mock.assert_called_once() rollback_quota_mock.assert_called_once_with(self.context, -1)
def server_create(self, context, values): if not values.get('uuid'): values['uuid'] = uuidutils.generate_uuid() server_nics = values.pop('nics', []) server = models.Server() server.update(values) nic_refs = [] for nic in server_nics: nic_ref = models.ServerNic() nic_ref.update(nic) nic_refs.append(nic_ref) with _session_for_write() as session: try: session.add(server) for nic_r in nic_refs: session.add(nic_r) session.flush() except db_exc.DBDuplicateEntry: raise exception.ServerAlreadyExists(name=values['name']) return server