1278
1278
###################
1281
@require_admin_context
1282
def user_get(context, id, session=None):
1284
session = get_session()
1286
result = session.query(models.User
1288
).filter_by(deleted=can_read_deleted(context)
1292
raise exception.NotFound('No user for id %s' % id)
1297
@require_admin_context
1298
def user_get_by_access_key(context, access_key, session=None):
1300
session = get_session()
1302
result = session.query(models.User
1303
).filter_by(access_key=access_key
1304
).filter_by(deleted=can_read_deleted(context)
1308
raise exception.NotFound('No user for id %s' % id)
1313
@require_admin_context
1314
def user_create(_context, values):
1315
user_ref = models.User()
1316
for (key, value) in values.iteritems():
1317
user_ref[key] = value
1322
@require_admin_context
1323
def user_delete(context, id):
1324
session = get_session()
1325
with session.begin():
1326
session.execute('delete from user_project_association where user_id=:id',
1328
session.execute('delete from user_role_association where user_id=:id',
1330
session.execute('delete from user_project_role_association where user_id=:id',
1332
user_ref = user_get(context, id, session=session)
1333
session.delete(user_ref)
1336
def user_get_all(context):
1337
session = get_session()
1338
return session.query(models.User
1339
).filter_by(deleted=can_read_deleted(context)
1343
def project_create(_context, values):
1344
project_ref = models.Project()
1345
for (key, value) in values.iteritems():
1346
project_ref[key] = value
1351
def project_add_member(context, project_id, user_id):
1352
session = get_session()
1353
with session.begin():
1354
project_ref = project_get(context, project_id, session=session)
1355
user_ref = user_get(context, user_id, session=session)
1357
project_ref.members += [user_ref]
1358
project_ref.save(session=session)
1361
def project_get(context, id, session=None):
1363
session = get_session()
1365
result = session.query(models.Project
1366
).filter_by(deleted=False
1368
).options(joinedload_all('members')
1372
raise exception.NotFound("No project with id %s" % id)
1377
def project_get_all(context):
1378
session = get_session()
1379
return session.query(models.Project
1380
).filter_by(deleted=can_read_deleted(context)
1381
).options(joinedload_all('members')
1385
def project_get_by_user(context, user_id):
1386
session = get_session()
1387
user = session.query(models.User
1388
).filter_by(deleted=can_read_deleted(context)
1389
).options(joinedload_all('projects')
1391
return user.projects
1394
def project_remove_member(context, project_id, user_id):
1395
session = get_session()
1396
project = project_get(context, project_id, session=session)
1397
user = user_get(context, user_id, session=session)
1399
if user in project.members:
1400
project.members.remove(user)
1401
project.save(session=session)
1404
def user_update(context, user_id, values):
1405
session = get_session()
1406
with session.begin():
1407
user_ref = user_get(context, user_id, session=session)
1408
for (key, value) in values.iteritems():
1409
user_ref[key] = value
1410
user_ref.save(session=session)
1413
def project_update(context, project_id, values):
1414
session = get_session()
1415
with session.begin():
1416
project_ref = project_get(context, project_id, session=session)
1417
for (key, value) in values.iteritems():
1418
project_ref[key] = value
1419
project_ref.save(session=session)
1422
def project_delete(context, id):
1423
session = get_session()
1424
with session.begin():
1425
session.execute('delete from user_project_association where project_id=:id',
1427
session.execute('delete from user_project_role_association where project_id=:id',
1429
project_ref = project_get(context, id, session=session)
1430
session.delete(project_ref)
1433
def user_get_roles(context, user_id):
1434
session = get_session()
1435
with session.begin():
1436
user_ref = user_get(context, user_id, session=session)
1437
return [role.role for role in user_ref['roles']]
1440
def user_get_roles_for_project(context, user_id, project_id):
1441
session = get_session()
1442
with session.begin():
1443
res = session.query(models.UserProjectRoleAssociation
1444
).filter_by(user_id=user_id
1445
).filter_by(project_id=project_id
1447
return [association.role for association in res]
1449
def user_remove_project_role(context, user_id, project_id, role):
1450
session = get_session()
1451
with session.begin():
1452
session.execute('delete from user_project_role_association where ' + \
1453
'user_id=:user_id and project_id=:project_id and ' + \
1454
'role=:role', { 'user_id' : user_id,
1455
'project_id' : project_id,
1459
def user_remove_role(context, user_id, role):
1460
session = get_session()
1461
with session.begin():
1462
res = session.query(models.UserRoleAssociation
1463
).filter_by(user_id=user_id
1464
).filter_by(role=role
1467
session.delete(role)
1470
def user_add_role(context, user_id, role):
1471
session = get_session()
1472
with session.begin():
1473
user_ref = user_get(context, user_id, session=session)
1474
models.UserRoleAssociation(user=user_ref, role=role).save(session=session)
1477
def user_add_project_role(context, user_id, project_id, role):
1478
session = get_session()
1479
with session.begin():
1480
user_ref = user_get(context, user_id, session=session)
1481
project_ref = project_get(context, project_id, session=session)
1482
models.UserProjectRoleAssociation(user_id=user_ref['id'],
1483
project_id=project_ref['id'],
1484
role=role).save(session=session)
1281
1490
def host_get_networks(context, host):
1282
1491
session = get_session()
1283
1492
with session.begin():