Remove context passing around, use climate.context instead
Since we have a global context storage we should use it everywhere. I suggest we remove all this ctx args and never bring them back. In case someone wants to run something with different context one can always do: with my_other_context: run_method_without_ctx_in_args() Change-Id: I976726f59cedd79f1d619f35f570c60e2c701c7d
This commit is contained in:
parent
bcf2cc9395
commit
dfbaa5a410
@ -106,118 +106,118 @@ def to_dict(func):
|
||||
|
||||
#Reservation
|
||||
|
||||
def reservation_create(ctx, reservation_values):
|
||||
def reservation_create(reservation_values):
|
||||
"""Create a reservation from the values."""
|
||||
return IMPL.reservation_create(ctx, reservation_values)
|
||||
return IMPL.reservation_create(reservation_values)
|
||||
|
||||
|
||||
@to_dict
|
||||
def reservation_get_all_by_lease(ctx, lease_id):
|
||||
def reservation_get_all_by_lease(lease_id):
|
||||
"""Return all reservations belongs to specific lease."""
|
||||
return IMPL.reservation_get_all_by_lease(ctx, lease_id)
|
||||
return IMPL.reservation_get_all_by_lease(lease_id)
|
||||
|
||||
|
||||
@to_dict
|
||||
def reservation_get(ctx, reservation_id):
|
||||
def reservation_get(reservation_id):
|
||||
"""Return specific reservation."""
|
||||
return IMPL.reservation_get(ctx, reservation_id)
|
||||
return IMPL.reservation_get(reservation_id)
|
||||
|
||||
|
||||
def reservation_destroy(ctx, reservation_id):
|
||||
def reservation_destroy(reservation_id):
|
||||
"""Delete specific reservation."""
|
||||
IMPL.reservation_destroy(ctx, reservation_id)
|
||||
IMPL.reservation_destroy(reservation_id)
|
||||
|
||||
|
||||
def reservation_update(ctx, reservation_id, reservation_values):
|
||||
def reservation_update(reservation_id, reservation_values):
|
||||
"""Update reservation."""
|
||||
IMPL.reservation_update(ctx, reservation_id, reservation_values)
|
||||
IMPL.reservation_update(reservation_id, reservation_values)
|
||||
|
||||
|
||||
#Lease
|
||||
|
||||
def lease_create(ctx, lease_values):
|
||||
def lease_create(lease_values):
|
||||
"""Create a lease from values."""
|
||||
return IMPL.lease_create(ctx, lease_values)
|
||||
return IMPL.lease_create(lease_values)
|
||||
|
||||
|
||||
@to_dict
|
||||
def lease_get_all(ctx):
|
||||
def lease_get_all():
|
||||
"""Return all leases."""
|
||||
return IMPL.lease_get_all(ctx)
|
||||
return IMPL.lease_get_all()
|
||||
|
||||
|
||||
@to_dict
|
||||
def lease_get_all_by_tenant(ctx, tenant_id):
|
||||
def lease_get_all_by_tenant(tenant_id):
|
||||
"""Return all leases in specific tenant."""
|
||||
return IMPL.lease_get_all_by_tenant(ctx, tenant_id)
|
||||
return IMPL.lease_get_all_by_tenant(tenant_id)
|
||||
|
||||
|
||||
@to_dict
|
||||
def lease_get_all_by_user(ctx, user_id):
|
||||
def lease_get_all_by_user(user_id):
|
||||
"""Return all leases belongs to specific user."""
|
||||
return IMPL.lease_get_all_by_user(ctx, user_id)
|
||||
return IMPL.lease_get_all_by_user(user_id)
|
||||
|
||||
|
||||
@to_dict
|
||||
def lease_get(ctx, lease_id):
|
||||
def lease_get(lease_id):
|
||||
"""Return lease."""
|
||||
return IMPL.lease_get(ctx, lease_id)
|
||||
return IMPL.lease_get(lease_id)
|
||||
|
||||
|
||||
@to_dict
|
||||
def lease_list(ctx):
|
||||
def lease_list():
|
||||
"""Return a list of all existing leases."""
|
||||
return IMPL.lease_list(ctx)
|
||||
return IMPL.lease_list()
|
||||
|
||||
|
||||
def lease_destroy(ctx, lease_id):
|
||||
def lease_destroy(lease_id):
|
||||
"""Delete lease or raise if not exists."""
|
||||
IMPL.lease_destroy(ctx, lease_id)
|
||||
IMPL.lease_destroy(lease_id)
|
||||
|
||||
|
||||
def lease_update(ctx, lease_id, lease_values):
|
||||
def lease_update(lease_id, lease_values):
|
||||
"""Update lease or raise if not exists."""
|
||||
IMPL.lease_update(ctx, lease_id, lease_values)
|
||||
IMPL.lease_update(lease_id, lease_values)
|
||||
|
||||
|
||||
#Events
|
||||
|
||||
@to_dict
|
||||
def event_create(ctx, event_values):
|
||||
def event_create(event_values):
|
||||
"""Create an event from values."""
|
||||
return IMPL.event_create(ctx, event_values)
|
||||
return IMPL.event_create(event_values)
|
||||
|
||||
|
||||
@to_dict
|
||||
def event_get_all(ctx):
|
||||
def event_get_all():
|
||||
"""Return all events."""
|
||||
return IMPL.event_get_all(ctx)
|
||||
return IMPL.event_get_all()
|
||||
|
||||
|
||||
@to_dict
|
||||
def event_get(ctx, event_id):
|
||||
def event_get(event_id):
|
||||
"""Return a specific event."""
|
||||
return IMPL.event_get(ctx, event_id)
|
||||
return IMPL.event_get(event_id)
|
||||
|
||||
|
||||
@to_dict
|
||||
def event_get_all_sorted_by_filters(ctx, sort_key, sort_dir, filters):
|
||||
def event_get_all_sorted_by_filters(sort_key, sort_dir, filters):
|
||||
"""Return instances sorted by param."""
|
||||
return IMPL.event_get_all_sorted_by_filters(ctx, sort_key, sort_dir,
|
||||
return IMPL.event_get_all_sorted_by_filters(sort_key, sort_dir,
|
||||
filters)
|
||||
|
||||
|
||||
@to_dict
|
||||
def event_list(ctx, param):
|
||||
def event_list(param):
|
||||
"""Return a list of events."""
|
||||
return IMPL.event_list(ctx)
|
||||
return IMPL.event_list()
|
||||
|
||||
|
||||
def event_destroy(ctx, event_id):
|
||||
def event_destroy(event_id):
|
||||
"""Delete event or raise if not exists."""
|
||||
IMPL.event_destroy(ctx, event_id)
|
||||
IMPL.event_destroy(event_id)
|
||||
|
||||
|
||||
def event_update(ctx, event_id, event_values):
|
||||
def event_update(event_id, event_values):
|
||||
"""Update event or raise if not exists."""
|
||||
IMPL.event_update(ctx, event_id, event_values)
|
||||
IMPL.event_update(event_id, event_values)
|
||||
|
@ -21,6 +21,7 @@ import sqlalchemy as sa
|
||||
from sqlalchemy.sql.expression import asc
|
||||
from sqlalchemy.sql.expression import desc
|
||||
|
||||
from climate import context
|
||||
from climate.db.sqlalchemy import models
|
||||
from climate.openstack.common.db import exception as db_exc
|
||||
from climate.openstack.common.db.sqlalchemy import session as db_session
|
||||
@ -38,30 +39,31 @@ def get_backend():
|
||||
return sys.modules[__name__]
|
||||
|
||||
|
||||
def model_query(model, ctx, session=None, project_only=None):
|
||||
def model_query(model, session=None, project_only=None):
|
||||
"""Query helper.
|
||||
|
||||
:param model: base model to query
|
||||
:param ctx: ctx to query under
|
||||
:param project_only: if present and ctx is user-type, then restrict
|
||||
query to match the ctx's project_id.
|
||||
:param project_only: if present and current context is user-type,
|
||||
then restrict query to match the project_id from current context.
|
||||
"""
|
||||
session = session or get_session()
|
||||
|
||||
query = session.query(model)
|
||||
|
||||
if project_only:
|
||||
ctx = context.Context.current()
|
||||
query = query.filter_by(tenant_id=ctx.project_id)
|
||||
|
||||
return query
|
||||
|
||||
|
||||
def column_query(ctx, *columns, **kwargs):
|
||||
def column_query(*columns, **kwargs):
|
||||
session = kwargs.get("session") or get_session()
|
||||
|
||||
query = session.query(*columns)
|
||||
|
||||
if kwargs.get("project_only"):
|
||||
ctx = context.Context.current()
|
||||
query = query.filter_by(tenant_id=ctx.tenant_id)
|
||||
|
||||
return query
|
||||
@ -130,28 +132,28 @@ class InequalityCondition(object):
|
||||
|
||||
|
||||
#Reservation
|
||||
def _reservation_get(ctx, session, reservation_id):
|
||||
query = model_query(models.Reservation, ctx, session)
|
||||
def _reservation_get(session, reservation_id):
|
||||
query = model_query(models.Reservation, session)
|
||||
return query.filter_by(id=reservation_id).first()
|
||||
|
||||
|
||||
def reservation_get(ctx, reservation_id):
|
||||
return _reservation_get(ctx, get_session(), reservation_id)
|
||||
def reservation_get(reservation_id):
|
||||
return _reservation_get(get_session(), reservation_id)
|
||||
|
||||
|
||||
def reservation_get_all(ctx):
|
||||
query = model_query(models.Reservation, ctx, get_session())
|
||||
def reservation_get_all():
|
||||
query = model_query(models.Reservation, get_session())
|
||||
return query.all()
|
||||
|
||||
|
||||
def reservation_get_all_by_lease_id(ctx, lease_id):
|
||||
reservations = model_query(models.Reservation, ctx, get_session()).\
|
||||
def reservation_get_all_by_lease_id(lease_id):
|
||||
reservations = model_query(models.Reservation, get_session()).\
|
||||
filter_by(lease_id=lease_id)
|
||||
|
||||
return reservations.all()
|
||||
|
||||
|
||||
def reservation_create(ctx, values):
|
||||
def reservation_create(values):
|
||||
values = values.copy()
|
||||
reservation = models.Reservation()
|
||||
reservation.update(values)
|
||||
@ -164,24 +166,24 @@ def reservation_create(ctx, values):
|
||||
# raise exception about duplicated columns (e.columns)
|
||||
raise RuntimeError("DBDuplicateEntry: %s" % e.columns)
|
||||
|
||||
return reservation_get(ctx, reservation.id)
|
||||
return reservation_get(reservation.id)
|
||||
|
||||
|
||||
def reservation_update(ctx, reservation_id, values):
|
||||
def reservation_update(reservation_id, values):
|
||||
session = get_session()
|
||||
|
||||
with session.begin():
|
||||
reservation = _reservation_get(ctx, session, reservation_id)
|
||||
reservation = _reservation_get(session, reservation_id)
|
||||
reservation.update(values)
|
||||
reservation.save(session=session)
|
||||
|
||||
return reservation_get(ctx, reservation_id)
|
||||
return reservation_get(reservation_id)
|
||||
|
||||
|
||||
def reservation_destroy(ctx, reservation_id):
|
||||
def reservation_destroy(reservation_id):
|
||||
session = get_session()
|
||||
with session.begin():
|
||||
reservation = _reservation_get(ctx, session, reservation_id)
|
||||
reservation = _reservation_get(session, reservation_id)
|
||||
|
||||
if not reservation:
|
||||
# raise not found error
|
||||
@ -191,33 +193,33 @@ def reservation_destroy(ctx, reservation_id):
|
||||
|
||||
|
||||
#Lease
|
||||
def _lease_get(ctx, session, lease_id):
|
||||
query = model_query(models.Lease, ctx, session)
|
||||
def _lease_get(session, lease_id):
|
||||
query = model_query(models.Lease, session)
|
||||
return query.filter_by(id=lease_id).first()
|
||||
|
||||
|
||||
def lease_get(ctx, lease_id):
|
||||
return _lease_get(ctx, get_session(), lease_id)
|
||||
def lease_get(lease_id):
|
||||
return _lease_get(get_session(), lease_id)
|
||||
|
||||
|
||||
def lease_get_all(ctx):
|
||||
query = model_query(models.Lease, ctx, get_session())
|
||||
def lease_get_all():
|
||||
query = model_query(models.Lease, get_session())
|
||||
return query.all()
|
||||
|
||||
|
||||
def lease_get_all_by_tenant(ctx, tenant_id):
|
||||
def lease_get_all_by_tenant(tenant_id):
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
def lease_get_all_by_user(ctx, user_id):
|
||||
def lease_get_all_by_user(user_id):
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
def lease_list(ctx):
|
||||
return model_query(models.Lease, ctx, get_session()).all()
|
||||
def lease_list():
|
||||
return model_query(models.Lease, get_session()).all()
|
||||
|
||||
|
||||
def lease_create(ctx, values):
|
||||
def lease_create(values):
|
||||
values = values.copy()
|
||||
lease = models.Lease()
|
||||
reservations = values.pop("reservations", [])
|
||||
@ -245,24 +247,24 @@ def lease_create(ctx, values):
|
||||
# raise exception about duplicated columns (e.columns)
|
||||
raise RuntimeError("DBDuplicateEntry: %s" % e.columns)
|
||||
|
||||
return lease_get(ctx, lease.id)
|
||||
return lease_get(lease.id)
|
||||
|
||||
|
||||
def lease_update(ctx, lease_id, values):
|
||||
def lease_update(lease_id, values):
|
||||
session = get_session()
|
||||
|
||||
with session.begin():
|
||||
lease = _lease_get(ctx, session, lease_id)
|
||||
lease = _lease_get(session, lease_id)
|
||||
lease.update(values)
|
||||
lease.save(session=session)
|
||||
|
||||
return lease_get(ctx, lease_id)
|
||||
return lease_get(lease_id)
|
||||
|
||||
|
||||
def lease_destroy(ctx, lease_id):
|
||||
def lease_destroy(lease_id):
|
||||
session = get_session()
|
||||
with session.begin():
|
||||
lease = _lease_get(ctx, session, lease_id)
|
||||
lease = _lease_get(session, lease_id)
|
||||
|
||||
if not lease:
|
||||
# raise not found error
|
||||
@ -272,30 +274,30 @@ def lease_destroy(ctx, lease_id):
|
||||
|
||||
|
||||
#Event
|
||||
def _event_get(ctx, session, event_id):
|
||||
query = model_query(models.Event, ctx, session)
|
||||
def _event_get(session, event_id):
|
||||
query = model_query(models.Event, session)
|
||||
return query.filter_by(id=event_id).first()
|
||||
|
||||
|
||||
def _event_get_all(ctx, session):
|
||||
query = model_query(models.Event, ctx, session)
|
||||
def _event_get_all(session):
|
||||
query = model_query(models.Event, session)
|
||||
return query
|
||||
|
||||
|
||||
def event_get(ctx, event_id):
|
||||
return _event_get(ctx, get_session(), event_id)
|
||||
def event_get(event_id):
|
||||
return _event_get(get_session(), event_id)
|
||||
|
||||
|
||||
def event_get_all(ctx):
|
||||
return _event_get_all(ctx, get_session()).all()
|
||||
def event_get_all():
|
||||
return _event_get_all(get_session()).all()
|
||||
|
||||
|
||||
def event_get_all_sorted_by_filters(ctx, sort_key, sort_dir, filters):
|
||||
def event_get_all_sorted_by_filters(sort_key, sort_dir, filters):
|
||||
"""Return events filtered and sorted by name of the field."""
|
||||
|
||||
sort_fn = {'desc': desc, 'asc': asc}
|
||||
|
||||
events_query = _event_get_all(ctx, get_session())
|
||||
events_query = _event_get_all(get_session())
|
||||
|
||||
if 'status' in filters:
|
||||
events_query = \
|
||||
@ -308,11 +310,11 @@ def event_get_all_sorted_by_filters(ctx, sort_key, sort_dir, filters):
|
||||
return events_query.all()
|
||||
|
||||
|
||||
def event_list(ctx):
|
||||
return model_query(models.Event.id, ctx, get_session()).all()
|
||||
def event_list():
|
||||
return model_query(models.Event.id, get_session()).all()
|
||||
|
||||
|
||||
def event_create(ctx, values):
|
||||
def event_create(values):
|
||||
values = values.copy()
|
||||
event = models.Event()
|
||||
event.update(values)
|
||||
@ -325,24 +327,24 @@ def event_create(ctx, values):
|
||||
# raise exception about duplicated columns (e.columns)
|
||||
raise RuntimeError("DBDuplicateEntry: %s" % e.columns)
|
||||
|
||||
return event_get(ctx, event.id)
|
||||
return event_get(event.id)
|
||||
|
||||
|
||||
def event_update(ctx, event_id, values):
|
||||
def event_update(event_id, values):
|
||||
session = get_session()
|
||||
|
||||
with session.begin():
|
||||
event = _event_get(ctx, session, event_id)
|
||||
event = _event_get(session, event_id)
|
||||
event.update(values)
|
||||
event.save(session=session)
|
||||
|
||||
return event_get(ctx, event_id)
|
||||
return event_get(event_id)
|
||||
|
||||
|
||||
def event_destroy(ctx, event_id):
|
||||
def event_destroy(event_id):
|
||||
session = get_session()
|
||||
with session.begin():
|
||||
event = _event_get(ctx, session, event_id)
|
||||
event = _event_get(session, event_id)
|
||||
|
||||
if not event:
|
||||
# raise not found error
|
||||
|
@ -18,6 +18,7 @@ import tempfile
|
||||
import fixtures
|
||||
from oslo.config import cfg
|
||||
|
||||
from climate import context
|
||||
from climate.db.sqlalchemy import api as db_api
|
||||
from climate.openstack.common.db.sqlalchemy import session as db_session
|
||||
from climate.openstack.common.fixture import config
|
||||
@ -62,12 +63,18 @@ class TestCase(test.BaseTestCase):
|
||||
super(TestCase, self).setUp()
|
||||
self.useFixture(config.Config())
|
||||
cfg.CONF([], project='climate')
|
||||
self.context_mock = None
|
||||
|
||||
def patch(self, obj, attr):
|
||||
"""Returns a Mocked object on the patched attribute."""
|
||||
mockfixture = self.useFixture(mockpatch.PatchObject(obj, attr))
|
||||
return mockfixture.mock
|
||||
|
||||
def set_context(self, ctx):
|
||||
if self.context_mock is None:
|
||||
self.context_mock = self.patch(context.Context, 'current')
|
||||
self.context_mock.return_value = ctx
|
||||
|
||||
|
||||
class DBTestCase(TestCase):
|
||||
"""Test case base class for all database unit tests.
|
||||
|
@ -77,21 +77,19 @@ def _get_fake_phys_lease_values(id=_get_fake_lease_uuid(),
|
||||
}
|
||||
|
||||
|
||||
def _create_virtual_lease(context=context.get_admin_context(),
|
||||
values=_get_fake_virt_lease_values(),
|
||||
def _create_virtual_lease(values=_get_fake_virt_lease_values(),
|
||||
random=False):
|
||||
"""Creating fake lease having a single virtual resource."""
|
||||
return db_api.lease_create(context, values)
|
||||
return db_api.lease_create(values)
|
||||
|
||||
|
||||
def _create_physical_lease(context=context.get_admin_context(),
|
||||
values=_get_fake_phys_lease_values(),
|
||||
def _create_physical_lease(values=_get_fake_phys_lease_values(),
|
||||
random=False):
|
||||
"""Creating fake lease having a single physical resource."""
|
||||
if random is True:
|
||||
values = _get_fake_phys_lease_values(id=_get_fake_random_uuid(),
|
||||
name=_get_fake_random_uuid())
|
||||
return db_api.lease_create(context, values)
|
||||
return db_api.lease_create(values)
|
||||
|
||||
|
||||
class SQLAlchemyDBApiTestCase(test.DBTestCase):
|
||||
@ -99,71 +97,68 @@ class SQLAlchemyDBApiTestCase(test.DBTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(SQLAlchemyDBApiTestCase, self).setUp()
|
||||
self.context = context.get_admin_context()
|
||||
self.set_context(context.get_admin_context())
|
||||
|
||||
def test_create_virt_lease(self):
|
||||
"""Create a virtual lease and verify that all tables have been
|
||||
populated.
|
||||
"""
|
||||
|
||||
result = db_api.lease_create(self.context,
|
||||
_get_fake_virt_lease_values())
|
||||
result = db_api.lease_create(_get_fake_virt_lease_values())
|
||||
self.assertEquals(result['name'],
|
||||
_get_fake_virt_lease_values()['name'])
|
||||
self.assertEqual(0, len(db_api.event_get_all(self.context)))
|
||||
self.assertEqual(1, len(db_api.reservation_get_all(self.context)))
|
||||
self.assertEqual(0, len(db_api.event_get_all()))
|
||||
self.assertEqual(1, len(db_api.reservation_get_all()))
|
||||
|
||||
def test_create_phys_lease(self):
|
||||
"""Create a physical lease and verify that all tables have been
|
||||
populated.
|
||||
"""
|
||||
|
||||
result = db_api.lease_create(self.context,
|
||||
_get_fake_phys_lease_values())
|
||||
result = db_api.lease_create(_get_fake_phys_lease_values())
|
||||
self.assertEquals(result['name'],
|
||||
_get_fake_phys_lease_values()['name'])
|
||||
self.assertEqual(0, len(db_api.event_get_all(self.context)))
|
||||
self.assertEqual(1, len(db_api.reservation_get_all(self.context)))
|
||||
self.assertEqual(0, len(db_api.event_get_all()))
|
||||
self.assertEqual(1, len(db_api.reservation_get_all()))
|
||||
|
||||
def test_create_duplicate_leases(self):
|
||||
"""Create two leases with same names, and checks it raises an error.
|
||||
"""
|
||||
|
||||
db_api.lease_create(self.context, _get_fake_phys_lease_values())
|
||||
db_api.lease_create(_get_fake_phys_lease_values())
|
||||
self.assertRaises(RuntimeError, db_api.lease_create,
|
||||
self.context, _get_fake_phys_lease_values())
|
||||
_get_fake_phys_lease_values())
|
||||
|
||||
def test_create_lease_with_event(self):
|
||||
"""Create a lease including a fake event and check all tables."""
|
||||
|
||||
lease = _get_fake_phys_lease_values()
|
||||
lease['events'].append(_get_fake_event_values(lease_id=lease['id']))
|
||||
result = db_api.lease_create(self.context, lease)
|
||||
result = db_api.lease_create(lease)
|
||||
self.assertEquals(result['name'],
|
||||
_get_fake_phys_lease_values()['name'])
|
||||
self.assertEqual(1, len(db_api.event_get_all(self.context)))
|
||||
self.assertEqual(1, len(db_api.event_get_all()))
|
||||
|
||||
def test_delete_wrong_lease(self):
|
||||
"""Delete a lease that doesn't exist and check that raises an error."""
|
||||
self.assertRaises(RuntimeError,
|
||||
db_api.lease_destroy, self.context, 'fake_id')
|
||||
self.assertRaises(RuntimeError, db_api.lease_destroy, 'fake_id')
|
||||
|
||||
def test_delete_correct_lease(self):
|
||||
"""Delete a lease and check that deletion has been cascaded to FKs."""
|
||||
lease = _get_fake_phys_lease_values()
|
||||
lease['events'].append(_get_fake_event_values(lease_id=lease['id']))
|
||||
result = _create_physical_lease(values=lease)
|
||||
db_api.lease_destroy(self.context, result['id'])
|
||||
self.assertIsNone(db_api.lease_get(self.context, result['id']))
|
||||
self.assertEqual(0, len(db_api.reservation_get_all(self.context)))
|
||||
self.assertEqual(0, len(db_api.event_get_all(self.context)))
|
||||
db_api.lease_destroy(result['id'])
|
||||
self.assertIsNone(db_api.lease_get(result['id']))
|
||||
self.assertEqual(0, len(db_api.reservation_get_all()))
|
||||
self.assertEqual(0, len(db_api.event_get_all()))
|
||||
|
||||
def test_lease_get_all(self):
|
||||
"""Check the number of leases we get."""
|
||||
_create_physical_lease(random=True)
|
||||
self.assertEqual(1, len(db_api.lease_get_all(self.context)))
|
||||
self.assertEqual(1, len(db_api.lease_get_all()))
|
||||
_create_physical_lease(random=True)
|
||||
self.assertEqual(2, len(db_api.lease_get_all(self.context)))
|
||||
self.assertEqual(2, len(db_api.lease_get_all()))
|
||||
|
||||
def test_lease_list(self):
|
||||
"""Not implemented yet until lease_list returns list of IDs."""
|
||||
@ -174,16 +169,16 @@ class SQLAlchemyDBApiTestCase(test.DBTestCase):
|
||||
values=_get_fake_phys_lease_values(id='1', name='fake1'))
|
||||
_create_physical_lease(
|
||||
values=_get_fake_phys_lease_values(id='2', name='fake2'))
|
||||
self.assertEquals(['1', '2'], db_api.lease_list(self.context))
|
||||
self.assertEquals(['1', '2'], db_api.lease_list())
|
||||
|
||||
def test_lease_update(self):
|
||||
"""Update both start_time and name and check lease has been updated."""
|
||||
result = _create_physical_lease()
|
||||
result = db_api.lease_update(self.context, result['id'],
|
||||
result = db_api.lease_update(result['id'],
|
||||
values={'name': 'lease_renamed'})
|
||||
self.assertEquals('lease_renamed', result['name'])
|
||||
result = db_api.lease_update(
|
||||
self.context, result['id'],
|
||||
result['id'],
|
||||
values={'start_date': _get_datetime('2014-02-01 00:00')})
|
||||
self.assertEquals(_get_datetime('2014-02-01 00:00'),
|
||||
result['start_date'])
|
||||
|
Loading…
x
Reference in New Issue
Block a user