Fix for IAAS-5516, IAAS-5517: get API for mors not returning right value
Without this fix, get API always returns first entry in the table irrespective of tenant_id/instance_uuid lease requested.
This commit is contained in:
parent
c80416a6e7
commit
49c5977a4a
|
@ -57,7 +57,7 @@ class DbPersistence:
|
|||
|
||||
@db_connect(transaction=False)
|
||||
def get_tenant_lease(self, conn, tenant_uuid):
|
||||
return conn.execute(self.tenant_lease.select(tenant_uuid == tenant_uuid)).first()
|
||||
return conn.execute(self.tenant_lease.select(self.tenant_lease.c.tenant_uuid == tenant_uuid)).first()
|
||||
|
||||
@db_connect(transaction=True)
|
||||
def add_tenant_lease(self, conn, tenant_uuid, expiry_mins, created_by, created_at):
|
||||
|
@ -68,8 +68,10 @@ class DbPersistence:
|
|||
@db_connect(transaction=True)
|
||||
def update_tenant_lease(self, conn, tenant_uuid, expiry_mins, updated_by, updated_at):
|
||||
logger.debug("Updating tenant lease %s %d %s %s", tenant_uuid, expiry_mins, str(updated_at), updated_by)
|
||||
conn.execute(self.tenant_lease.update(tenant_uuid == tenant_uuid), expiry_mins=expiry_mins,
|
||||
updated_at=updated_at, updated_by=updated_by)
|
||||
conn.execute(self.tenant_lease.update().\
|
||||
where(self.tenant_lease.c.tenant_uuid == tenant_uuid).\
|
||||
values(expiry_mins=expiry_mins,
|
||||
updated_at=updated_at, updated_by=updated_by))
|
||||
|
||||
@db_connect(transaction=True)
|
||||
def delete_tenant_lease(self, conn, tenant_uuid):
|
||||
|
@ -80,12 +82,13 @@ class DbPersistence:
|
|||
|
||||
@db_connect(transaction=False)
|
||||
def get_instance_leases_by_tenant(self, conn, tenant_uuid):
|
||||
return conn.execute(self.instance_lease.select(tenant_uuid == tenant_uuid)).fetchall()
|
||||
|
||||
return conn.execute(self.instance_lease.select(\
|
||||
self.instance_lease.c.tenant_uuid == tenant_uuid)).fetchall()
|
||||
|
||||
@db_connect(transaction=False)
|
||||
def get_instance_lease(self, conn, instance_uuid):
|
||||
return conn.execute(
|
||||
self.instance_lease.select((instance_uuid == instance_uuid))).first()
|
||||
return conn.execute(self.instance_lease.select((\
|
||||
self.instance_lease.c.instance_uuid == instance_uuid))).first()
|
||||
|
||||
@db_connect(transaction=True)
|
||||
def add_instance_lease(self, conn, instance_uuid, tenant_uuid, expiry, created_by, created_at):
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
def run_tests():
|
||||
from proboscis import TestProgram
|
||||
import test_api
|
||||
import test_api, test_persistence
|
||||
|
||||
# Run Proboscis and exit.
|
||||
print "Starting tests ---"
|
||||
|
@ -12,4 +12,4 @@ def run_tests():
|
|||
|
||||
if __name__ == '__main__':
|
||||
print "Run tests"
|
||||
run_tests()
|
||||
run_tests()
|
||||
|
|
|
@ -1,56 +1,84 @@
|
|||
from proboscis import test
|
||||
from mors.persistence import DbPersistence
|
||||
import pytest
|
||||
import uuid
|
||||
import logging
|
||||
from migrate.versioning.api import upgrade,create,version_control
|
||||
from datetime import datetime
|
||||
import os
|
||||
import shutil
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
db_persistence = None
|
||||
TEST_DB="test/test_db11"
|
||||
|
||||
def setup_module(mod):
|
||||
@test
|
||||
def setup_module():
|
||||
if os.path.exists(TEST_DB):
|
||||
os.remove(TEST_DB)
|
||||
global db_persistence
|
||||
DB_URL = "sqlite:///"+TEST_DB
|
||||
if os.path.exists(DB_URL):
|
||||
shutil.rmtree(DB_URL)
|
||||
create(DB_URL, "./mors_repo")
|
||||
version_control(DB_URL, "./mors_repo")
|
||||
upgrade(DB_URL,"./mors_repo")
|
||||
db_persistence = DbPersistence(DB_URL)
|
||||
return db_persistence
|
||||
|
||||
def teardown_module(mod):
|
||||
def teardown_module():
|
||||
os.unlink(TEST_DB)
|
||||
|
||||
def test_apis():
|
||||
tenant_id = "aasdsadfsadf"
|
||||
tenant_user1 = "a@xyz.com"
|
||||
expiry_mins1 = 3
|
||||
tenant_created_date = datetime.utcnow()
|
||||
def _verify_tenant_lease(tenants):
|
||||
for tenant in tenants:
|
||||
t_lease = db_persistence.get_tenant_lease(tenant)
|
||||
assert (t_lease.tenant_uuid == tenant)
|
||||
assert (t_lease.created_by == tenants[tenant]["user"])
|
||||
assert (t_lease.created_at == tenants[tenant]["tenant_created_date"])
|
||||
if "updated_by" in tenants[tenant].keys():
|
||||
assert (t_lease.updated_by == tenants[tenant]["updated_by"])
|
||||
if "updated_at" in tenants[tenant].keys():
|
||||
assert (t_lease.updated_at == tenants[tenant]["updated_at"])
|
||||
|
||||
db_persistence.add_tenant_lease(tenant_id, expiry_mins1, tenant_user1, tenant_created_date)
|
||||
t_lease = db_persistence.get_tenant_lease(tenant_id)
|
||||
assert (t_lease.tenant_uuid == tenant_id)
|
||||
assert (t_lease.created_by == tenant_user1)
|
||||
assert (t_lease.created_at == tenant_created_date)
|
||||
@test(depends_on=[setup_module])
|
||||
def test_apis():
|
||||
tenants = {"tenant-1": { "user": "a@xyz.com",
|
||||
"expiry_mins": 3,
|
||||
"tenant_created_date": datetime.utcnow()},
|
||||
"tenant-2": { "user": "c@xyz.com",
|
||||
"expiry_mins": 1,
|
||||
"tenant_created_date": datetime.utcnow()}}
|
||||
|
||||
for tenant in tenants:
|
||||
db_persistence.add_tenant_lease(tenant, tenants[tenant]["expiry_mins"],
|
||||
tenants[tenant]["user"],
|
||||
tenants[tenant]["tenant_created_date"])
|
||||
_verify_tenant_lease(tenants)
|
||||
|
||||
# Now try update
|
||||
tenant_user2 = "b@xyz.com"
|
||||
tenants["tenant-1"]["updated_by"] = "b@xyz.com"
|
||||
tenants["tenant-2"]["updated_by"] = "d@xyz.com"
|
||||
tenant_updated_date = datetime.utcnow()
|
||||
db_persistence.update_tenant_lease(tenant_id, expiry_mins1, tenant_user2, tenant_updated_date)
|
||||
t_lease = db_persistence.get_tenant_lease(tenant_id)
|
||||
assert (t_lease.tenant_uuid == tenant_id)
|
||||
assert (t_lease.created_by == tenant_user1)
|
||||
assert (t_lease.updated_by == tenant_user2)
|
||||
assert (t_lease.created_at == tenant_created_date)
|
||||
assert (t_lease.updated_at == tenant_updated_date)
|
||||
|
||||
for tenant in tenants:
|
||||
tenants[tenant]["updated_at"] = tenant_updated_date
|
||||
tenant_values = tenants[tenant]
|
||||
db_persistence.update_tenant_lease(tenant, tenant_values["expiry_mins"],
|
||||
tenant_values["updated_by"], tenant_values["updated_at"])
|
||||
_verify_tenant_lease(tenants)
|
||||
|
||||
# Instance lease now
|
||||
instance_uuid = "asdf2-2342-23423"
|
||||
instance_uuids = [str(uuid.uuid4()), str(uuid.uuid4())]
|
||||
tenant_id = tenants.keys()[0]
|
||||
now = datetime.utcnow()
|
||||
db_persistence.add_instance_lease(instance_uuid, tenant_id, now, tenant_user1, now)
|
||||
i_lease = db_persistence.get_instance_lease(instance_uuid, tenant_id)
|
||||
assert (i_lease.instance_uuid == instance_uuid)
|
||||
assert (i_lease.tenant_uuid == tenant_id)
|
||||
assert (i_lease.expiry == now)
|
||||
assert (i_lease.created_by == tenant_user1)
|
||||
for instance_uuid in instance_uuids:
|
||||
db_persistence.add_instance_lease(instance_uuid, tenant_id, now, tenants[tenant_id]["user"], now)
|
||||
|
||||
for instance_uuid in instance_uuids:
|
||||
logger.debug("1" + str(tenant_id))
|
||||
logger.debug("2"+ str(instance_uuid))
|
||||
i_lease = db_persistence.get_instance_lease(instance_uuid)
|
||||
assert (i_lease.instance_uuid == instance_uuid)
|
||||
assert (i_lease.tenant_uuid == tenant_id)
|
||||
assert (i_lease.expiry == now)
|
||||
assert (i_lease.created_by == tenants[tenant_id]["user"])
|
||||
|
||||
|
|
Loading…
Reference in New Issue