make login duration based on the last active request

Closes-Bug: 1395420

Change-Id: Ib3963f2a4a5653f168e868afc79e8dc0ab40392c
This commit is contained in:
xiaodongwang 2014-11-22 21:09:48 -08:00 committed by Xiaodong Wang
parent 5fbc73b798
commit dc7272bdf0
5 changed files with 297 additions and 95 deletions

View File

@ -57,6 +57,20 @@ def log_user_action(func):
return decorated_api return decorated_api
def update_user_token(func):
@functools.wraps(func)
def decorated_api(*args, **kwargs):
response = func(*args, **kwargs)
expire_timestamp = (
datetime.datetime.now() + app.config['REMEMBER_COOKIE_DURATION']
)
user_api.record_user_token(
current_user, current_user.token, expire_timestamp
)
return response
return decorated_api
def _clean_data(data, keys): def _clean_data(data, keys):
for key in keys: for key in keys:
if key in data: if key in data:
@ -212,15 +226,9 @@ def _login(use_cookie):
raise exception_handler.BadRequest( raise exception_handler.BadRequest(
'missing email or password in data' 'missing email or password in data'
) )
if 'expire_timestamp' not in data: expire_timestamp = (
expire_timestamp = ( datetime.datetime.now() + app.config['REMEMBER_COOKIE_DURATION']
datetime.datetime.now() + app.config['REMEMBER_COOKIE_DURATION'] )
)
else:
expire_timestamp = util.parse_datetime(
data['expire_timestamp'], exception_handler.BadRequest
)
data['expire_timestamp'] = expire_timestamp data['expire_timestamp'] = expire_timestamp
user = auth_handler.authenticate_user(**data) user = auth_handler.authenticate_user(**data)
if not login_user(user, remember=data.get('remember', False)): if not login_user(user, remember=data.get('remember', False)):
@ -260,6 +268,7 @@ def logout():
@app.route("/users", methods=['GET']) @app.route("/users", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_users(): def list_users():
"""list users.""" """list users."""
data = _get_request_args( data = _get_request_args(
@ -274,6 +283,7 @@ def list_users():
@app.route("/users", methods=['POST']) @app.route("/users", methods=['POST'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def add_user(): def add_user():
"""add user.""" """add user."""
data = _get_request_data() data = _get_request_data()
@ -286,6 +296,7 @@ def add_user():
@app.route("/users/<int:user_id>", methods=['GET']) @app.route("/users/<int:user_id>", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_user(user_id): def show_user(user_id):
"""Get user.""" """Get user."""
data = _get_request_args() data = _get_request_args()
@ -297,6 +308,7 @@ def show_user(user_id):
@app.route("/current-user", methods=['GET']) @app.route("/current-user", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_current_user(): def show_current_user():
"""Get user.""" """Get user."""
data = _get_request_args() data = _get_request_args()
@ -308,6 +320,7 @@ def show_current_user():
@app.route("/users/<int:user_id>", methods=['PUT']) @app.route("/users/<int:user_id>", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_user(user_id): def update_user(user_id):
"""Update user.""" """Update user."""
data = _get_request_data() data = _get_request_data()
@ -324,6 +337,7 @@ def update_user(user_id):
@app.route("/users/<int:user_id>", methods=['DELETE']) @app.route("/users/<int:user_id>", methods=['DELETE'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_user(user_id): def delete_user(user_id):
"""Delete user.""" """Delete user."""
data = _get_request_data() data = _get_request_data()
@ -338,6 +352,7 @@ def delete_user(user_id):
@app.route("/users/<int:user_id>/permissions", methods=['GET']) @app.route("/users/<int:user_id>/permissions", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_user_permissions(user_id): def list_user_permissions(user_id):
"""Get user permissions.""" """Get user permissions."""
data = _get_request_args() data = _get_request_args()
@ -349,6 +364,7 @@ def list_user_permissions(user_id):
@app.route("/users/<int:user_id>/action", methods=['POST']) @app.route("/users/<int:user_id>/action", methods=['POST'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def take_user_action(user_id): def take_user_action(user_id):
"""Take user action.""" """Take user action."""
data = _get_request_data() data = _get_request_data()
@ -394,6 +410,7 @@ def take_user_action(user_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_user_permission(user_id, permission_id): def show_user_permission(user_id, permission_id):
"""Get a specific user permission.""" """Get a specific user permission."""
data = _get_request_args() data = _get_request_args()
@ -409,6 +426,7 @@ def show_user_permission(user_id, permission_id):
@app.route("/users/<int:user_id>/permissions", methods=['POST']) @app.route("/users/<int:user_id>/permissions", methods=['POST'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def add_user_permission(user_id): def add_user_permission(user_id):
"""Add permission to a specific user.""" """Add permission to a specific user."""
data = _get_request_data() data = _get_request_data()
@ -427,6 +445,7 @@ def add_user_permission(user_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_user_permission(user_id, permission_id): def delete_user_permission(user_id, permission_id):
"""Delete a specific user permission.""" """Delete a specific user permission."""
data = _get_request_data() data = _get_request_data()
@ -442,6 +461,7 @@ def delete_user_permission(user_id, permission_id):
@app.route("/permissions", methods=['GET']) @app.route("/permissions", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_permissions(): def list_permissions():
"""List permissions.""" """List permissions."""
data = _get_request_args() data = _get_request_args()
@ -454,6 +474,7 @@ def list_permissions():
@app.route("/permissions/<int:permission_id>", methods=['GET']) @app.route("/permissions/<int:permission_id>", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_permission(permission_id): def show_permission(permission_id):
"""Get permission.""" """Get permission."""
data = _get_request_args() data = _get_request_args()
@ -496,6 +517,7 @@ def _filter_timestamp(data):
@app.route("/users/logs", methods=['GET']) @app.route("/users/logs", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_all_user_actions(): def list_all_user_actions():
"""List all users actions.""" """List all users actions."""
data = _get_request_args() data = _get_request_args()
@ -511,6 +533,7 @@ def list_all_user_actions():
@app.route("/users/<int:user_id>/logs", methods=['GET']) @app.route("/users/<int:user_id>/logs", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_user_actions(user_id): def list_user_actions(user_id):
"""List user actions.""" """List user actions."""
data = _get_request_args() data = _get_request_args()
@ -526,6 +549,7 @@ def list_user_actions(user_id):
@app.route("/users/logs", methods=['DELETE']) @app.route("/users/logs", methods=['DELETE'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_all_user_actions(): def delete_all_user_actions():
"""Delete all user actions.""" """Delete all user actions."""
data = _get_request_data() data = _get_request_data()
@ -540,6 +564,7 @@ def delete_all_user_actions():
@app.route("/users/<int:user_id>/logs", methods=['DELETE']) @app.route("/users/<int:user_id>/logs", methods=['DELETE'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_user_actions(user_id): def delete_user_actions(user_id):
"""Delete user actions.""" """Delete user actions."""
data = _get_request_data() data = _get_request_data()
@ -593,6 +618,7 @@ def _filter_ip(data):
@app.route("/switches", methods=['GET']) @app.route("/switches", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_switches(): def list_switches():
"""List switches.""" """List switches."""
data = _get_request_args() data = _get_request_args()
@ -608,6 +634,7 @@ def list_switches():
@app.route("/switches/<int:switch_id>", methods=['GET']) @app.route("/switches/<int:switch_id>", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_switch(switch_id): def show_switch(switch_id):
"""Get switch.""" """Get switch."""
data = _get_request_args() data = _get_request_args()
@ -619,6 +646,7 @@ def show_switch(switch_id):
@app.route("/switches", methods=['POST']) @app.route("/switches", methods=['POST'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def add_switch(): def add_switch():
"""add switch.""" """add switch."""
data = _get_request_data() data = _get_request_data()
@ -631,6 +659,7 @@ def add_switch():
@app.route("/switches/<int:switch_id>", methods=['PUT']) @app.route("/switches/<int:switch_id>", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_switch(switch_id): def update_switch(switch_id):
"""update switch.""" """update switch."""
data = _get_request_data() data = _get_request_data()
@ -643,6 +672,7 @@ def update_switch(switch_id):
@app.route("/switches/<int:switch_id>", methods=['PATCH']) @app.route("/switches/<int:switch_id>", methods=['PATCH'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def patch_switch(switch_id): def patch_switch(switch_id):
"""patch switch.""" """patch switch."""
data = _get_request_data() data = _get_request_data()
@ -655,6 +685,7 @@ def patch_switch(switch_id):
@app.route("/switches/<int:switch_id>", methods=['DELETE']) @app.route("/switches/<int:switch_id>", methods=['DELETE'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_switch(switch_id): def delete_switch(switch_id):
"""delete switch.""" """delete switch."""
data = _get_request_data() data = _get_request_data()
@ -667,6 +698,7 @@ def delete_switch(switch_id):
@app.route("/switch-filters", methods=['GET']) @app.route("/switch-filters", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_switch_filters(): def list_switch_filters():
"""List switch filters.""" """List switch filters."""
data = _get_request_args() data = _get_request_args()
@ -682,6 +714,7 @@ def list_switch_filters():
@app.route("/switch-filters/<int:switch_id>", methods=['GET']) @app.route("/switch-filters/<int:switch_id>", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_switch_filters(switch_id): def show_switch_filters(switch_id):
"""Get switch filters.""" """Get switch filters."""
data = _get_request_args() data = _get_request_args()
@ -693,6 +726,7 @@ def show_switch_filters(switch_id):
@app.route("/switch-filters/<int:switch_id>", methods=['PUT']) @app.route("/switch-filters/<int:switch_id>", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_switch_filters(switch_id): def update_switch_filters(switch_id):
"""update switch filters.""" """update switch filters."""
data = _get_request_data() data = _get_request_data()
@ -705,6 +739,7 @@ def update_switch_filters(switch_id):
@app.route("/switch-filters/<int:switch_id>", methods=['PATCH']) @app.route("/switch-filters/<int:switch_id>", methods=['PATCH'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def patch_switch_filters(switch_id): def patch_switch_filters(switch_id):
"""patch switch filters.""" """patch switch filters."""
data = _get_request_data() data = _get_request_data()
@ -785,6 +820,7 @@ def _filter_location(data):
@app.route("/switches/<int:switch_id>/machines", methods=['GET']) @app.route("/switches/<int:switch_id>/machines", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_switch_machines(switch_id): def list_switch_machines(switch_id):
"""Get switch machines.""" """Get switch machines."""
data = _get_request_args(vlans=_int_converter) data = _get_request_args(vlans=_int_converter)
@ -803,6 +839,7 @@ def list_switch_machines(switch_id):
@app.route("/switches/<int:switch_id>/machines-hosts", methods=['GET']) @app.route("/switches/<int:switch_id>/machines-hosts", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_switch_machines_hosts(switch_id): def list_switch_machines_hosts(switch_id):
"""Get switch machines or hosts.""" """Get switch machines or hosts."""
data = _get_request_args(vlans=_int_converter, os_id=_int_converter) data = _get_request_args(vlans=_int_converter, os_id=_int_converter)
@ -823,6 +860,7 @@ def list_switch_machines_hosts(switch_id):
@app.route("/switches/<int:switch_id>/machines", methods=['POST']) @app.route("/switches/<int:switch_id>/machines", methods=['POST'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def add_switch_machine(switch_id): def add_switch_machine(switch_id):
"""add switch machine.""" """add switch machine."""
data = _get_request_data() data = _get_request_data()
@ -838,6 +876,7 @@ def add_switch_machine(switch_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_switch_machine(switch_id, machine_id): def show_switch_machine(switch_id, machine_id):
"""get switch machine.""" """get switch machine."""
data = _get_request_args() data = _get_request_args()
@ -855,6 +894,7 @@ def show_switch_machine(switch_id, machine_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_switch_machine(switch_id, machine_id): def update_switch_machine(switch_id, machine_id):
"""update switch machine.""" """update switch machine."""
data = _get_request_data() data = _get_request_data()
@ -872,6 +912,7 @@ def update_switch_machine(switch_id, machine_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def patch_switch_machine(switch_id, machine_id): def patch_switch_machine(switch_id, machine_id):
"""patch switch machine.""" """patch switch machine."""
data = _get_request_data() data = _get_request_data()
@ -889,6 +930,7 @@ def patch_switch_machine(switch_id, machine_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_switch_machine(switch_id, machine_id): def delete_switch_machine(switch_id, machine_id):
"""Delete switch machine.""" """Delete switch machine."""
data = _get_request_data() data = _get_request_data()
@ -903,6 +945,7 @@ def delete_switch_machine(switch_id, machine_id):
@app.route("/switches/<int:switch_id>/action", methods=['POST']) @app.route("/switches/<int:switch_id>/action", methods=['POST'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def take_switch_action(switch_id): def take_switch_action(switch_id):
"""update switch.""" """update switch."""
data = _get_request_data() data = _get_request_data()
@ -930,6 +973,7 @@ def take_switch_action(switch_id):
@app.route("/machines/<int:machine_id>/action", methods=['POST']) @app.route("/machines/<int:machine_id>/action", methods=['POST'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def take_machine_action(machine_id): def take_machine_action(machine_id):
"""update machine.""" """update machine."""
data = _get_request_data() data = _get_request_data()
@ -969,6 +1013,7 @@ def take_machine_action(machine_id):
@app.route("/switch-machines", methods=['GET']) @app.route("/switch-machines", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_switchmachines(): def list_switchmachines():
"""List switch machines.""" """List switch machines."""
data = _get_request_args(vlans=_int_converter) data = _get_request_args(vlans=_int_converter)
@ -988,6 +1033,7 @@ def list_switchmachines():
@app.route("/switches-machines-hosts", methods=['GET']) @app.route("/switches-machines-hosts", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_switchmachines_hosts(): def list_switchmachines_hosts():
"""List switch machines or hosts.""" """List switch machines or hosts."""
data = _get_request_args(vlans=_int_converter, os_id=_int_converter) data = _get_request_args(vlans=_int_converter, os_id=_int_converter)
@ -1012,6 +1058,7 @@ def list_switchmachines_hosts():
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_switchmachine(switch_machine_id): def show_switchmachine(switch_machine_id):
"""get switch machine.""" """get switch machine."""
data = _get_request_args() data = _get_request_args()
@ -1029,6 +1076,7 @@ def show_switchmachine(switch_machine_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_switchmachine(switch_machine_id): def update_switchmachine(switch_machine_id):
"""update switch machine.""" """update switch machine."""
data = _get_request_data() data = _get_request_data()
@ -1043,6 +1091,7 @@ def update_switchmachine(switch_machine_id):
@app.route('/switch-machines/<int:switch_machine_id>', methods=['PATCH']) @app.route('/switch-machines/<int:switch_machine_id>', methods=['PATCH'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def patch_switchmachine(switch_machine_id): def patch_switchmachine(switch_machine_id):
"""patch switch machine.""" """patch switch machine."""
data = _get_request_data() data = _get_request_data()
@ -1057,6 +1106,7 @@ def patch_switchmachine(switch_machine_id):
@app.route("/switch-machines/<int:switch_machine_id>", methods=['DELETE']) @app.route("/switch-machines/<int:switch_machine_id>", methods=['DELETE'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_switchmachine(switch_machine_id): def delete_switchmachine(switch_machine_id):
"""Delete switch machine.""" """Delete switch machine."""
data = _get_request_data() data = _get_request_data()
@ -1071,6 +1121,7 @@ def delete_switchmachine(switch_machine_id):
@app.route("/machines", methods=['GET']) @app.route("/machines", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_machines(): def list_machines():
"""List machines.""" """List machines."""
data = _get_request_args() data = _get_request_args()
@ -1087,6 +1138,7 @@ def list_machines():
@app.route("/machines/<int:machine_id>", methods=['GET']) @app.route("/machines/<int:machine_id>", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_machine(machine_id): def show_machine(machine_id):
"""Get machine.""" """Get machine."""
data = _get_request_args() data = _get_request_args()
@ -1101,6 +1153,7 @@ def show_machine(machine_id):
@app.route("/machines/<int:machine_id>", methods=['PUT']) @app.route("/machines/<int:machine_id>", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_machine(machine_id): def update_machine(machine_id):
"""update machine.""" """update machine."""
data = _get_request_data() data = _get_request_data()
@ -1115,6 +1168,7 @@ def update_machine(machine_id):
@app.route("/machines/<int:machine_id>", methods=['PATCH']) @app.route("/machines/<int:machine_id>", methods=['PATCH'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def patch_machine(machine_id): def patch_machine(machine_id):
"""patch machine.""" """patch machine."""
data = _get_request_data() data = _get_request_data()
@ -1129,6 +1183,7 @@ def patch_machine(machine_id):
@app.route("/machines/<int:machine_id>", methods=['DELETE']) @app.route("/machines/<int:machine_id>", methods=['DELETE'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_machine(machine_id): def delete_machine(machine_id):
"""Delete machine.""" """Delete machine."""
data = _get_request_data() data = _get_request_data()
@ -1143,6 +1198,7 @@ def delete_machine(machine_id):
@app.route("/subnets", methods=['GET']) @app.route("/subnets", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_subnets(): def list_subnets():
"""List subnets.""" """List subnets."""
data = _get_request_args() data = _get_request_args()
@ -1157,6 +1213,7 @@ def list_subnets():
@app.route("/subnets/<int:subnet_id>", methods=['GET']) @app.route("/subnets/<int:subnet_id>", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_subnet(subnet_id): def show_subnet(subnet_id):
"""Get subnet.""" """Get subnet."""
data = _get_request_args() data = _get_request_args()
@ -1171,6 +1228,7 @@ def show_subnet(subnet_id):
@app.route("/subnets", methods=['POST']) @app.route("/subnets", methods=['POST'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def add_subnet(): def add_subnet():
"""add subnet.""" """add subnet."""
data = _get_request_data() data = _get_request_data()
@ -1183,6 +1241,7 @@ def add_subnet():
@app.route("/subnets/<int:subnet_id>", methods=['PUT']) @app.route("/subnets/<int:subnet_id>", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_subnet(subnet_id): def update_subnet(subnet_id):
"""update subnet.""" """update subnet."""
data = _get_request_data() data = _get_request_data()
@ -1197,6 +1256,7 @@ def update_subnet(subnet_id):
@app.route("/subnets/<int:subnet_id>", methods=['DELETE']) @app.route("/subnets/<int:subnet_id>", methods=['DELETE'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_subnet(subnet_id): def delete_subnet(subnet_id):
"""Delete subnet.""" """Delete subnet."""
data = _get_request_data() data = _get_request_data()
@ -1211,6 +1271,7 @@ def delete_subnet(subnet_id):
@app.route("/adapters", methods=['GET']) @app.route("/adapters", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_adapters(): def list_adapters():
"""List adapters.""" """List adapters."""
data = _get_request_args() data = _get_request_args()
@ -1229,6 +1290,7 @@ def list_adapters():
@app.route("/adapters/<int:adapter_id>", methods=['GET']) @app.route("/adapters/<int:adapter_id>", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_adapter(adapter_id): def show_adapter(adapter_id):
"""Get adapter.""" """Get adapter."""
data = _get_request_args() data = _get_request_args()
@ -1243,6 +1305,7 @@ def show_adapter(adapter_id):
@app.route("/adapters/<int:adapter_id>/metadata", methods=['GET']) @app.route("/adapters/<int:adapter_id>/metadata", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_adapter_metadata(adapter_id): def show_adapter_metadata(adapter_id):
"""Get adapter metadata.""" """Get adapter metadata."""
data = _get_request_args() data = _get_request_args()
@ -1257,6 +1320,7 @@ def show_adapter_metadata(adapter_id):
@app.route("/oses/<int:os_id>/metadata", methods=['GET']) @app.route("/oses/<int:os_id>/metadata", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_os_metadata(os_id): def show_os_metadata(os_id):
"""Get os metadata.""" """Get os metadata."""
data = _get_request_args() data = _get_request_args()
@ -1274,6 +1338,7 @@ def show_os_metadata(os_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_adapter_os_metadata(adapter_id, os_id): def show_adapter_os_metadata(adapter_id, os_id):
"""Get adapter metadata.""" """Get adapter metadata."""
data = _get_request_args() data = _get_request_args()
@ -1288,6 +1353,7 @@ def show_adapter_os_metadata(adapter_id, os_id):
@app.route("/clusters", methods=['GET']) @app.route("/clusters", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_clusters(): def list_clusters():
"""List clusters.""" """List clusters."""
data = _get_request_args() data = _get_request_args()
@ -1302,6 +1368,7 @@ def list_clusters():
@app.route("/clusters/<int:cluster_id>", methods=['GET']) @app.route("/clusters/<int:cluster_id>", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_cluster(cluster_id): def show_cluster(cluster_id):
"""Get cluster.""" """Get cluster."""
data = _get_request_args(adapter_id=_int_converter) data = _get_request_args(adapter_id=_int_converter)
@ -1316,6 +1383,7 @@ def show_cluster(cluster_id):
@app.route("/clusters", methods=['POST']) @app.route("/clusters", methods=['POST'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def add_cluster(): def add_cluster():
"""add cluster.""" """add cluster."""
data = _get_request_data() data = _get_request_data()
@ -1328,6 +1396,7 @@ def add_cluster():
@app.route("/clusters/<int:cluster_id>", methods=['PUT']) @app.route("/clusters/<int:cluster_id>", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_cluster(cluster_id): def update_cluster(cluster_id):
"""update cluster.""" """update cluster."""
data = _get_request_data() data = _get_request_data()
@ -1342,6 +1411,7 @@ def update_cluster(cluster_id):
@app.route("/clusters/<int:cluster_id>", methods=['DELETE']) @app.route("/clusters/<int:cluster_id>", methods=['DELETE'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_cluster(cluster_id): def delete_cluster(cluster_id):
"""Delete cluster.""" """Delete cluster."""
data = _get_request_data() data = _get_request_data()
@ -1361,6 +1431,7 @@ def delete_cluster(cluster_id):
@app.route("/clusters/<int:cluster_id>/config", methods=['GET']) @app.route("/clusters/<int:cluster_id>/config", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_cluster_config(cluster_id): def show_cluster_config(cluster_id):
"""Get cluster config.""" """Get cluster config."""
data = _get_request_args() data = _get_request_args()
@ -1375,6 +1446,7 @@ def show_cluster_config(cluster_id):
@app.route("/clusters/<int:cluster_id>/metadata", methods=['GET']) @app.route("/clusters/<int:cluster_id>/metadata", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_cluster_metadata(cluster_id): def show_cluster_metadata(cluster_id):
"""Get cluster config.""" """Get cluster config."""
data = _get_request_args() data = _get_request_args()
@ -1389,6 +1461,7 @@ def show_cluster_metadata(cluster_id):
@app.route("/clusters/<int:cluster_id>/config", methods=['PUT']) @app.route("/clusters/<int:cluster_id>/config", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_cluster_config(cluster_id): def update_cluster_config(cluster_id):
"""update cluster config.""" """update cluster config."""
data = _get_request_data() data = _get_request_data()
@ -1401,6 +1474,7 @@ def update_cluster_config(cluster_id):
@app.route("/clusters/<int:cluster_id>/config", methods=['PATCH']) @app.route("/clusters/<int:cluster_id>/config", methods=['PATCH'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def patch_cluster_config(cluster_id): def patch_cluster_config(cluster_id):
"""patch cluster config.""" """patch cluster config."""
data = _get_request_data() data = _get_request_data()
@ -1413,6 +1487,7 @@ def patch_cluster_config(cluster_id):
@app.route("/clusters/<int:cluster_id>/config", methods=['DELETE']) @app.route("/clusters/<int:cluster_id>/config", methods=['DELETE'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_cluster_config(cluster_id): def delete_cluster_config(cluster_id):
"""Delete cluster config.""" """Delete cluster config."""
data = _get_request_data() data = _get_request_data()
@ -1427,6 +1502,7 @@ def delete_cluster_config(cluster_id):
@app.route("/clusters/<int:cluster_id>/action", methods=['POST']) @app.route("/clusters/<int:cluster_id>/action", methods=['POST'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def take_cluster_action(cluster_id): def take_cluster_action(cluster_id):
"""take cluster action.""" """take cluster action."""
data = _get_request_data() data = _get_request_data()
@ -1461,6 +1537,7 @@ def take_cluster_action(cluster_id):
@app.route("/clusters/<int:cluster_id>/state", methods=['GET']) @app.route("/clusters/<int:cluster_id>/state", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def get_cluster_state(cluster_id): def get_cluster_state(cluster_id):
"""Get cluster state.""" """Get cluster state."""
data = _get_request_args() data = _get_request_args()
@ -1475,6 +1552,7 @@ def get_cluster_state(cluster_id):
@app.route("/clusters/<int:cluster_id>/hosts", methods=['GET']) @app.route("/clusters/<int:cluster_id>/hosts", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_cluster_hosts(cluster_id): def list_cluster_hosts(cluster_id):
"""Get cluster hosts.""" """Get cluster hosts."""
data = _get_request_args() data = _get_request_args()
@ -1489,6 +1567,7 @@ def list_cluster_hosts(cluster_id):
@app.route("/clusterhosts", methods=['GET']) @app.route("/clusterhosts", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_clusterhosts(): def list_clusterhosts():
"""Get cluster hosts.""" """Get cluster hosts."""
data = _get_request_args() data = _get_request_args()
@ -1503,6 +1582,7 @@ def list_clusterhosts():
@app.route("/clusters/<int:cluster_id>/hosts/<int:host_id>", methods=['GET']) @app.route("/clusters/<int:cluster_id>/hosts/<int:host_id>", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_cluster_host(cluster_id, host_id): def show_cluster_host(cluster_id, host_id):
"""Get clusterhost.""" """Get clusterhost."""
data = _get_request_args() data = _get_request_args()
@ -1517,6 +1597,7 @@ def show_cluster_host(cluster_id, host_id):
@app.route("/clusterhosts/<int:clusterhost_id>", methods=['GET']) @app.route("/clusterhosts/<int:clusterhost_id>", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_clusterhost(clusterhost_id): def show_clusterhost(clusterhost_id):
"""Get clusterhost.""" """Get clusterhost."""
data = _get_request_args() data = _get_request_args()
@ -1531,6 +1612,7 @@ def show_clusterhost(clusterhost_id):
@app.route("/clusters/<int:cluster_id>/hosts", methods=['POST']) @app.route("/clusters/<int:cluster_id>/hosts", methods=['POST'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def add_cluster_host(cluster_id): def add_cluster_host(cluster_id):
"""update cluster hosts.""" """update cluster hosts."""
data = _get_request_data() data = _get_request_data()
@ -1546,6 +1628,7 @@ def add_cluster_host(cluster_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_cluster_host(cluster_id, host_id): def update_cluster_host(cluster_id, host_id):
"""Update cluster host.""" """Update cluster host."""
data = _get_request_data() data = _get_request_data()
@ -1563,6 +1646,7 @@ def update_cluster_host(cluster_id, host_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_clusterhost(clusterhost_id): def update_clusterhost(clusterhost_id):
"""Update cluster host.""" """Update cluster host."""
data = _get_request_data() data = _get_request_data()
@ -1580,6 +1664,7 @@ def update_clusterhost(clusterhost_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def patch_cluster_host(cluster_id, host_id): def patch_cluster_host(cluster_id, host_id):
"""Update cluster host.""" """Update cluster host."""
data = _get_request_data() data = _get_request_data()
@ -1597,6 +1682,7 @@ def patch_cluster_host(cluster_id, host_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def patch_clusterhost(clusterhost_id): def patch_clusterhost(clusterhost_id):
"""Update cluster host.""" """Update cluster host."""
data = _get_request_data() data = _get_request_data()
@ -1614,6 +1700,7 @@ def patch_clusterhost(clusterhost_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_cluster_host(cluster_id, host_id): def delete_cluster_host(cluster_id, host_id):
"""Delete cluster host.""" """Delete cluster host."""
data = _get_request_data() data = _get_request_data()
@ -1636,6 +1723,7 @@ def delete_cluster_host(cluster_id, host_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_clusterhost(clusterhost_id): def delete_clusterhost(clusterhost_id):
"""Delete cluster host.""" """Delete cluster host."""
data = _get_request_data() data = _get_request_data()
@ -1658,6 +1746,7 @@ def delete_clusterhost(clusterhost_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_cluster_host_config(cluster_id, host_id): def show_cluster_host_config(cluster_id, host_id):
"""Get clusterhost config.""" """Get clusterhost config."""
data = _get_request_args() data = _get_request_args()
@ -1672,6 +1761,7 @@ def show_cluster_host_config(cluster_id, host_id):
@app.route("/clusterhosts/<int:clusterhost_id>/config", methods=['GET']) @app.route("/clusterhosts/<int:clusterhost_id>/config", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_clusterhost_config(clusterhost_id): def show_clusterhost_config(clusterhost_id):
"""Get clusterhost config.""" """Get clusterhost config."""
data = _get_request_args() data = _get_request_args()
@ -1689,6 +1779,7 @@ def show_clusterhost_config(clusterhost_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_cluster_host_config(cluster_id, host_id): def update_cluster_host_config(cluster_id, host_id):
"""update clusterhost config.""" """update clusterhost config."""
data = _get_request_data() data = _get_request_data()
@ -1703,6 +1794,7 @@ def update_cluster_host_config(cluster_id, host_id):
@app.route("/clusterhosts/<int:clusterhost_id>/config", methods=['PUT']) @app.route("/clusterhosts/<int:clusterhost_id>/config", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_clusterhost_config(clusterhost_id): def update_clusterhost_config(clusterhost_id):
"""update clusterhost config.""" """update clusterhost config."""
data = _get_request_data() data = _get_request_data()
@ -1720,6 +1812,7 @@ def update_clusterhost_config(clusterhost_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def patch_cluster_host_config(cluster_id, host_id): def patch_cluster_host_config(cluster_id, host_id):
"""patch clusterhost config.""" """patch clusterhost config."""
data = _get_request_data() data = _get_request_data()
@ -1734,6 +1827,7 @@ def patch_cluster_host_config(cluster_id, host_id):
@app.route("/clusterhosts/<int:clusterhost_id>", methods=['PATCH']) @app.route("/clusterhosts/<int:clusterhost_id>", methods=['PATCH'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def patch_clusterhost_config(clusterhost_id): def patch_clusterhost_config(clusterhost_id):
"""patch clusterhost config.""" """patch clusterhost config."""
data = _get_request_data() data = _get_request_data()
@ -1751,6 +1845,7 @@ def patch_clusterhost_config(clusterhost_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_cluster_host_config(cluster_id, host_id): def delete_cluster_host_config(cluster_id, host_id):
"""Delete clusterhost config.""" """Delete clusterhost config."""
data = _get_request_data() data = _get_request_data()
@ -1765,6 +1860,7 @@ def delete_cluster_host_config(cluster_id, host_id):
@app.route("/clusterhosts/<int:clusterhost_id>/config", methods=['DELETE']) @app.route("/clusterhosts/<int:clusterhost_id>/config", methods=['DELETE'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_clusterhost_config(clusterhost_id): def delete_clusterhost_config(clusterhost_id):
"""Delete clusterhost config.""" """Delete clusterhost config."""
data = _get_request_data() data = _get_request_data()
@ -1782,6 +1878,7 @@ def delete_clusterhost_config(clusterhost_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_cluster_host_state(cluster_id, host_id): def show_cluster_host_state(cluster_id, host_id):
"""Get clusterhost state.""" """Get clusterhost state."""
data = _get_request_args() data = _get_request_args()
@ -1796,6 +1893,7 @@ def show_cluster_host_state(cluster_id, host_id):
@app.route("/clusterhosts/<int:clusterhost_id>/state", methods=['GET']) @app.route("/clusterhosts/<int:clusterhost_id>/state", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_clusterhost_state(clusterhost_id): def show_clusterhost_state(clusterhost_id):
"""Get clusterhost state.""" """Get clusterhost state."""
data = _get_request_args() data = _get_request_args()
@ -1813,6 +1911,7 @@ def show_clusterhost_state(clusterhost_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_cluster_host_state(cluster_id, host_id): def update_cluster_host_state(cluster_id, host_id):
"""update clusterhost state.""" """update clusterhost state."""
data = _get_request_data() data = _get_request_data()
@ -1827,6 +1926,7 @@ def update_cluster_host_state(cluster_id, host_id):
@app.route("/clusterhosts/<int:clusterhost_id>/state", methods=['PUT']) @app.route("/clusterhosts/<int:clusterhost_id>/state", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_clusterhost_state(clusterhost_id): def update_clusterhost_state(clusterhost_id):
"""update clusterhost state.""" """update clusterhost state."""
data = _get_request_data() data = _get_request_data()
@ -1841,6 +1941,7 @@ def update_clusterhost_state(clusterhost_id):
@app.route("/hosts", methods=['GET']) @app.route("/hosts", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_hosts(): def list_hosts():
"""List hosts.""" """List hosts."""
data = _get_request_args() data = _get_request_args()
@ -1855,6 +1956,7 @@ def list_hosts():
@app.route("/hosts/<int:host_id>", methods=['GET']) @app.route("/hosts/<int:host_id>", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_host(host_id): def show_host(host_id):
"""Get host.""" """Get host."""
data = _get_request_args() data = _get_request_args()
@ -1869,6 +1971,7 @@ def show_host(host_id):
@app.route("/machines-hosts", methods=['GET']) @app.route("/machines-hosts", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_machines_or_hosts(): def list_machines_or_hosts():
"""Get host.""" """Get host."""
data = _get_request_args(os_id=_int_converter) data = _get_request_args(os_id=_int_converter)
@ -1887,6 +1990,7 @@ def list_machines_or_hosts():
@app.route("/machines-hosts/<int:host_id>", methods=['GET']) @app.route("/machines-hosts/<int:host_id>", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_machine_or_host(host_id): def show_machine_or_host(host_id):
"""Get host.""" """Get host."""
data = _get_request_args() data = _get_request_args()
@ -1901,6 +2005,7 @@ def show_machine_or_host(host_id):
@app.route("/hosts/<int:host_id>", methods=['PUT']) @app.route("/hosts/<int:host_id>", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_host(host_id): def update_host(host_id):
"""update host.""" """update host."""
data = _get_request_data() data = _get_request_data()
@ -1915,6 +2020,7 @@ def update_host(host_id):
@app.route("/hosts", methods=['PUT']) @app.route("/hosts", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_hosts(): def update_hosts():
"""update hosts.""" """update hosts."""
data = _get_request_data_as_list() data = _get_request_data_as_list()
@ -1929,6 +2035,7 @@ def update_hosts():
@app.route("/hosts/<int:host_id>", methods=['DELETE']) @app.route("/hosts/<int:host_id>", methods=['DELETE'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_host(host_id): def delete_host(host_id):
"""Delete host.""" """Delete host."""
data = _get_request_data() data = _get_request_data()
@ -1948,6 +2055,7 @@ def delete_host(host_id):
@app.route("/hosts/<int:host_id>/clusters", methods=['GET']) @app.route("/hosts/<int:host_id>/clusters", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def get_host_clusters(host_id): def get_host_clusters(host_id):
"""Get host clusters.""" """Get host clusters."""
data = _get_request_args() data = _get_request_args()
@ -1962,6 +2070,7 @@ def get_host_clusters(host_id):
@app.route("/hosts/<int:host_id>/config", methods=['GET']) @app.route("/hosts/<int:host_id>/config", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_host_config(host_id): def show_host_config(host_id):
"""Get host config.""" """Get host config."""
data = _get_request_args() data = _get_request_args()
@ -1976,6 +2085,7 @@ def show_host_config(host_id):
@app.route("/hosts/<int:host_id>/config", methods=['PUT']) @app.route("/hosts/<int:host_id>/config", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_host_config(host_id): def update_host_config(host_id):
"""update host config.""" """update host config."""
data = _get_request_data() data = _get_request_data()
@ -1988,6 +2098,7 @@ def update_host_config(host_id):
@app.route("/hosts/<int:host_id>", methods=['PATCH']) @app.route("/hosts/<int:host_id>", methods=['PATCH'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def patch_host_config(host_id): def patch_host_config(host_id):
"""patch host config.""" """patch host config."""
data = _get_request_data() data = _get_request_data()
@ -2000,6 +2111,7 @@ def patch_host_config(host_id):
@app.route("/hosts/<int:host_id>/config", methods=['DELETE']) @app.route("/hosts/<int:host_id>/config", methods=['DELETE'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_host_config(host_id): def delete_host_config(host_id):
"""Delete host config.""" """Delete host config."""
data = _get_request_data() data = _get_request_data()
@ -2014,6 +2126,7 @@ def delete_host_config(host_id):
@app.route("/hosts/<int:host_id>/networks", methods=['GET']) @app.route("/hosts/<int:host_id>/networks", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_host_networks(host_id): def list_host_networks(host_id):
"""list host networks.""" """list host networks."""
data = _get_request_args() data = _get_request_args()
@ -2030,6 +2143,7 @@ def list_host_networks(host_id):
@app.route("/host/networks", methods=['GET']) @app.route("/host/networks", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def list_hostnetworks(): def list_hostnetworks():
"""list host networks.""" """list host networks."""
data = _get_request_args( data = _get_request_args(
@ -2050,6 +2164,7 @@ def list_hostnetworks():
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_host_network(host_id, host_network_id): def show_host_network(host_id, host_network_id):
"""Get host network.""" """Get host network."""
data = _get_request_args() data = _get_request_args()
@ -2064,6 +2179,7 @@ def show_host_network(host_id, host_network_id):
@app.route("/host/networks/<int:host_network_id>", methods=['GET']) @app.route("/host/networks/<int:host_network_id>", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_hostnetwork(host_network_id): def show_hostnetwork(host_network_id):
"""Get host network.""" """Get host network."""
data = _get_request_args() data = _get_request_args()
@ -2078,6 +2194,7 @@ def show_hostnetwork(host_network_id):
@app.route("/hosts/<int:host_id>/networks", methods=['POST']) @app.route("/hosts/<int:host_id>/networks", methods=['POST'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def add_host_network(host_id): def add_host_network(host_id):
"""add host network.""" """add host network."""
data = _get_request_data() data = _get_request_data()
@ -2089,6 +2206,7 @@ def add_host_network(host_id):
@app.route("/hosts/networks", methods=['PUT']) @app.route("/hosts/networks", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_host_networks(): def update_host_networks():
"""add host networks.""" """add host networks."""
data = _get_request_data_as_list() data = _get_request_data_as_list()
@ -2104,6 +2222,7 @@ def update_host_networks():
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_host_network(host_id, host_network_id): def update_host_network(host_id, host_network_id):
"""update host network.""" """update host network."""
data = _get_request_data() data = _get_request_data()
@ -2118,6 +2237,7 @@ def update_host_network(host_id, host_network_id):
@app.route("/host-networks/<int:host_network_id>", methods=['PUT']) @app.route("/host-networks/<int:host_network_id>", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_hostnetwork(host_network_id): def update_hostnetwork(host_network_id):
"""update host network.""" """update host network."""
data = _get_request_data() data = _get_request_data()
@ -2135,6 +2255,7 @@ def update_hostnetwork(host_network_id):
) )
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_host_network(host_id, host_network_id): def delete_host_network(host_id, host_network_id):
"""Delete host network.""" """Delete host network."""
data = _get_request_data() data = _get_request_data()
@ -2149,6 +2270,7 @@ def delete_host_network(host_id, host_network_id):
@app.route("/host-networks/<int:host_network_id>", methods=['DELETE']) @app.route("/host-networks/<int:host_network_id>", methods=['DELETE'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def delete_hostnetwork(host_network_id): def delete_hostnetwork(host_network_id):
"""Delete host network.""" """Delete host network."""
data = _get_request_data() data = _get_request_data()
@ -2163,6 +2285,7 @@ def delete_hostnetwork(host_network_id):
@app.route("/hosts/<int:host_id>/state", methods=['GET']) @app.route("/hosts/<int:host_id>/state", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def show_host_state(host_id): def show_host_state(host_id):
"""Get host state.""" """Get host state."""
data = _get_request_args() data = _get_request_args()
@ -2177,6 +2300,7 @@ def show_host_state(host_id):
@app.route("/hosts/<int:host_id>/state", methods=['PUT']) @app.route("/hosts/<int:host_id>/state", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def update_host_state(host_id): def update_host_state(host_id):
"""update host state.""" """update host state."""
data = _get_request_data() data = _get_request_data()
@ -2218,6 +2342,7 @@ def _reset_host(*args, **kwargs):
@app.route("/hosts/<int:host_id>/action", methods=['POST']) @app.route("/hosts/<int:host_id>/action", methods=['POST'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def take_host_action(host_id): def take_host_action(host_id):
"""take host action.""" """take host action."""
data = _get_request_data() data = _get_request_data()
@ -2264,6 +2389,7 @@ def _get_response_json(response):
@app.route("/proxy/<path:url>", methods=['GET']) @app.route("/proxy/<path:url>", methods=['GET'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def proxy_get(url): def proxy_get(url):
"""proxy url.""" """proxy url."""
headers = _get_headers( headers = _get_headers(
@ -2290,6 +2416,7 @@ def proxy_get(url):
@app.route("/proxy/<path:url>", methods=['POST']) @app.route("/proxy/<path:url>", methods=['POST'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def proxy_post(url): def proxy_post(url):
"""proxy url.""" """proxy url."""
headers = _get_headers( headers = _get_headers(
@ -2315,6 +2442,7 @@ def proxy_post(url):
@app.route("/proxy/<path:url>", methods=['PUT']) @app.route("/proxy/<path:url>", methods=['PUT'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def proxy_put(url): def proxy_put(url):
"""proxy url.""" """proxy url."""
headers = _get_headers( headers = _get_headers(
@ -2340,6 +2468,7 @@ def proxy_put(url):
@app.route("/proxy/<path:url>", methods=['PATCH']) @app.route("/proxy/<path:url>", methods=['PATCH'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def proxy_patch(url): def proxy_patch(url):
"""proxy url.""" """proxy url."""
headers = _get_headers( headers = _get_headers(
@ -2365,6 +2494,7 @@ def proxy_patch(url):
@app.route("/proxy/<path:url>", methods=['DELETE']) @app.route("/proxy/<path:url>", methods=['DELETE'])
@log_user_action @log_user_action
@login_required @login_required
@update_user_token
def proxy_delete(url): def proxy_delete(url):
"""proxy url.""" """proxy url."""
headers = _get_headers( headers = _get_headers(

View File

@ -190,10 +190,7 @@ class UserWrapper(UserMixin):
self.password = crypted_password self.password = crypted_password
self.active = active self.active = active
self.is_admin = is_admin self.is_admin = is_admin
if expire_timestamp: self.expire_timestamp = expire_timestamp
self.expire_timestamp = expire_timestamp
else:
self.expire_timestamp = datetime.datetime.now()
if not token: if not token:
self.token = self.get_auth_token() self.token = self.get_auth_token()
else: else:
@ -215,7 +212,10 @@ class UserWrapper(UserMixin):
def is_authenticated(self): def is_authenticated(self):
current_time = datetime.datetime.now() current_time = datetime.datetime.now()
return current_time < self.expire_timestamp return (
not self.expire_timestamp or
current_time < self.expire_timestamp
)
def __str__(self): def __str__(self):
return '%s[email:%s,password:%s]' % ( return '%s[email:%s,password:%s]' % (
@ -253,20 +253,33 @@ def get_user_object_from_token(session, token):
session, models.User, id=user_token.user_id session, models.User, id=user_token.user_id
).to_dict() ).to_dict()
user_dict['token'] = token user_dict['token'] = token
user_dict['expire_timestamp'] = user_token.expire_timestamp expire_timestamp = user_token.expire_timestamp
user_dict['expire_timestamp'] = expire_timestamp
return UserWrapper(**user_dict) return UserWrapper(**user_dict)
@utils.supported_filters() @utils.supported_filters()
@database.run_in_session() @database.run_in_session()
@utils.wrap_to_dict(RESP_TOKEN_FIELDS) @utils.wrap_to_dict(RESP_TOKEN_FIELDS)
def record_user_token(session, user, token, expire_timestamp): def record_user_token(
session, user, token, expire_timestamp
):
"""record user token in database.""" """record user token in database."""
return utils.add_db_object( user_token = utils.get_db_object(
session, models.UserToken, True, session, models.UserToken, False,
token, user_id=user.id, user_id=user.id, token=token
expire_timestamp=expire_timestamp
) )
if not user_token:
return utils.add_db_object(
session, models.UserToken, True,
token, user_id=user.id,
expire_timestamp=expire_timestamp
)
elif expire_timestamp > user_token.expire_timestamp:
return utils.update_db_object(
session, user_token, expire_timestamp=expire_timestamp
)
return user_token
@utils.supported_filters() @utils.supported_filters()

View File

@ -20,10 +20,12 @@ import logging
import netaddr import netaddr
import re import re
from sqlalchemy import and_
from sqlalchemy import or_ from sqlalchemy import or_
from compass.db import exception from compass.db import exception
from compass.db import models from compass.db import models
from compass.utils import util
def model_query(session, model): def model_query(session, model):
@ -53,18 +55,21 @@ def _one_item_list_condition_func(col_attr, value, condition_func):
return None return None
def _model_filter_by_condition( def _model_condition_func(
query, col_attr, value, condition_func, col_attr, value,
list_condition_func=_default_list_condition_func): item_condition_func,
list_condition_func=_default_list_condition_func
):
if isinstance(value, list): if isinstance(value, list):
condition = list_condition_func( if not value:
col_attr, value, condition_func return None
if len(value) == 1:
return item_condition_func(col_attr, value)
return list_condition_func(
col_attr, value, item_condition_func
) )
else: else:
condition = condition_func(col_attr, value) return item_condition_func(col_attr, value)
if condition is not None:
query = query.filter(condition)
return query
def _between_condition(col_attr, value): def _between_condition(col_attr, value):
@ -100,6 +105,108 @@ def model_order_by(query, model, order_by):
return query.order_by(*order_by_cols) return query.order_by(*order_by_cols)
def _model_condition(col_attr, value):
if isinstance(value, list):
basetype_values = []
composite_values = []
for item in value:
if util.is_instance(item, [list, dict]):
composite_values.append(item)
else:
basetype_values.append(item)
conditions = []
if basetype_values:
if len(basetype_values) == 1:
condition = (col_attr == basetype_values[0])
else:
condition = col_attr.in_(basetype_values)
conditions.append(condition)
for composite_value in composite_values:
condition = _model_condition(col_attr, composite_value)
if condition is not None:
conditions.append(condition)
if not conditions:
return None
if len(conditions) == 1:
return conditions[0]
return or_(*conditions)
elif isinstance(value, dict):
conditions = []
if 'eq' in value:
conditions.append(_model_condition_func(
col_attr, value['eq'],
lambda attr, data: attr == data,
lambda attr, data, item_condition_func: attr.in_(data)
))
if 'lt' in value:
conditions.append(_model_condition_func(
col_attr, value['lt'],
lambda attr, data: attr < data,
_one_item_list_condition_func
))
if 'gt' in value:
conditions.append(_model_condition_func(
col_attr, value['gt'],
lambda attr, data: attr > data,
_one_item_list_condition_func
))
if 'le' in value:
conditions.append(_model_condition_func(
col_attr, value['le'],
lambda attr, data: attr <= data,
_one_item_list_condition_func
))
if 'ge' in value:
conditions.append(_model_condition_func(
col_attr, value['ge'],
lambda attr, data: attr >= data,
_one_item_list_condition_func
))
if 'ne' in value:
conditions.append(_model_condition_func(
col_attr, value['ne'],
lambda attr, data: attr != data,
lambda attr, data, item_condition_func: attr.notin_(data)
))
if 'in' in value:
conditions.append(col_attr.in_(value['in']))
if 'notin' in value:
conditions.append(col_attr.notin_(value['notin']))
if 'startswith' in value:
conditions.append(_model_condition_func(
col_attr, value['startswith'],
lambda attr, data: attr.like('%s%%' % data)
))
if 'endswith' in value:
conditions.append(_model_condition_func(
col_attr, value['endswith'],
lambda attr, data: attr.like('%%%s' % data)
))
if 'like' in value:
conditions.append(_model_condition_func(
col_attr, value['like'],
lambda attr, data: attr.like('%%%s%%' % data)
))
if 'between' in value:
conditions.append(_model_condition_func(
col_attr, value['between'],
_between_condition
))
conditions = [
condition
for condition in conditions
if condition is not None
]
if not conditions:
return None
if len(conditions) == 1:
return conditions[0]
return and_(conditions)
else:
condition = (col_attr == value)
return condition
def model_filter(query, model, **filters): def model_filter(query, model, **filters):
for key, value in filters.items(): for key, value in filters.items():
if isinstance(key, basestring): if isinstance(key, basestring):
@ -109,69 +216,9 @@ def model_filter(query, model, **filters):
continue continue
else: else:
col_attr = key col_attr = key
if isinstance(value, list): condition = _model_condition(col_attr, value)
query = query.filter(col_attr.in_(value)) if condition is not None:
elif isinstance(value, dict): query = query.filter(condition)
if 'eq' in value:
query = _model_filter_by_condition(
query, col_attr, value['eq'],
lambda attr, data: attr == data,
lambda attr, data, condition_func: attr.in_(data)
)
if 'lt' in value:
query = _model_filter_by_condition(
query, col_attr, value['lt'],
lambda attr, data: attr < data,
_one_item_list_condition_func
)
if 'gt' in value:
query = _model_filter_by_condition(
query, col_attr, value['gt'],
lambda attr, data: attr > data,
_one_item_list_condition_func
)
if 'le' in value:
query = _model_filter_by_condition(
query, col_attr, value['le'],
lambda attr, data: attr <= data,
_one_item_list_condition_func
)
if 'ge' in value:
query = _model_filter_by_condition(
query, col_attr, value['ge'],
lambda attr, data: attr >= data,
_one_item_list_condition_func
)
if 'ne' in value:
query = _model_filter_by_condition(
query, col_attr, value['ne'], None,
lambda attr, data, condition_func: ~attr.in_(data)
)
if 'in' in value:
query = query.filter(col_attr.in_(value['in']))
if 'startswith' in value:
query = _model_filter_by_condition(
query, col_attr, value['startswith'],
lambda attr, data: attr.like('%s%%' % data)
)
if 'endswith' in value:
query = _model_filter_by_condition(
query, col_attr, value['endswith'],
lambda attr, data: attr.like('%%%s' % data)
)
if 'like' in value:
query = _model_filter_by_condition(
query, col_attr, value['like'],
lambda attr, data: attr.like('%%%s%%' % data)
)
if 'between' in value:
query = _model_filter_by_condition(
query, col_attr, value['between'],
_between_condition
)
else:
query = query.filter(col_attr == value)
return query return query
@ -221,6 +268,10 @@ def wrap_to_dict(support_keys=[], **filters):
def _wrapper_dict(data, support_keys, **filters): def _wrapper_dict(data, support_keys, **filters):
"""Helper for warpping db object into dictionary.""" """Helper for warpping db object into dictionary."""
logging.info(
'wrap dict %s by support_keys=%s filters=%s',
data, support_keys, filters
)
if isinstance(data, list): if isinstance(data, list):
return [ return [
_wrapper_dict(item, support_keys, **filters) _wrapper_dict(item, support_keys, **filters)
@ -509,6 +560,9 @@ def add_db_object(session, table, exception_when_existing=True,
new_object = False new_object = False
if db_object: if db_object:
logging.debug(
'got db object %s: %s', db_keys, db_object
)
if exception_when_existing: if exception_when_existing:
raise exception.DuplicatedRecord( raise exception.DuplicatedRecord(
'%s exists in table %s' % (db_keys, table.__name__) '%s exists in table %s' % (db_keys, table.__name__)

View File

@ -1456,9 +1456,7 @@ class UserToken(BASE, HelperMixin):
ForeignKey('user.id', onupdate='CASCADE', ondelete='CASCADE') ForeignKey('user.id', onupdate='CASCADE', ondelete='CASCADE')
) )
token = Column(String(256), unique=True, nullable=False) token = Column(String(256), unique=True, nullable=False)
expire_timestamp = Column( expire_timestamp = Column(DateTime, nullable=True)
DateTime, default=lambda: datetime.datetime.now()
)
def __init__(self, token, **kwargs): def __init__(self, token, **kwargs):
self.token = token self.token = token
@ -2200,6 +2198,9 @@ class AdapterFlavorRole(BASE, HelperMixin):
self.role_id = role_id self.role_id = role_id
super(AdapterFlavorRole, self).__init__() super(AdapterFlavorRole, self).__init__()
def __str__(self):
return 'AdapterFlavorRole[%s:%s]' % (self.flavor_id, self.role_id)
def validate(self): def validate(self):
super(AdapterFlavorRole, self).validate() super(AdapterFlavorRole, self).validate()
flavor_adapter_id = self.flavor.adapter_id flavor_adapter_id = self.flavor.adapter_id
@ -2508,6 +2509,9 @@ class Adapter(BASE, HelperMixin):
self.name = name self.name = name
super(Adapter, self).__init__(**kwargs) super(Adapter, self).__init__(**kwargs)
def __str__(self):
return 'Adapter[%s:%s]' % (self.id, self.name)
def initialize(self): def initialize(self):
if not self.display_name: if not self.display_name:
self.display_name = self.name self.display_name = self.name

View File

@ -84,6 +84,7 @@ deactivate
sudo mkdir -p /var/log/redis sudo mkdir -p /var/log/redis
sudo chown -R redis:root /var/log/redis sudo chown -R redis:root /var/log/redis
sudo mkdir -p /var/lib/redis/ sudo mkdir -p /var/lib/redis/
sudo rm -rf /var/lib/redis/*
sudo chown -R redis:root /var/lib/redis sudo chown -R redis:root /var/lib/redis
sudo mkdir -p /var/run/redis sudo mkdir -p /var/run/redis
sudo chown -R redis:root /var/run/redis sudo chown -R redis:root /var/run/redis