def start_check_cluster_health(cluster_id, send_report_url, user=None, session=None, check_health={}): """Start to check cluster health.""" cluster = cluster_api.get_cluster_internal(cluster_id, session=session) if cluster.state.state != 'SUCCESSFUL': logging.debug("state is %s" % cluster.state.state) err_msg = "Healthcheck starts only after cluster finished deployment!" raise exception.Forbidden(err_msg) reports = utils.list_db_objects( session, models.HealthCheckReport, cluster_id=cluster.id, state='verifying' ) if reports: err_msg = 'Healthcheck in progress, please wait for it to complete!' raise exception.Forbidden(err_msg) # Clear all preivous report # TODO(grace): the delete should be moved into celery task. # We should consider the case that celery task is down. utils.del_db_objects( session, models.HealthCheckReport, cluster_id=cluster.id ) from compass.tasks import client as celery_client celery_client.celery.send_task( 'compass.tasks.cluster_health', (cluster.id, send_report_url, user.email) ) return { "cluster_id": cluster.id, "status": "start to check cluster health." }
def start_check_cluster_health(user, cluster_id, send_report_url, session=None, check_health={}): """Start to check cluster health.""" cluster_state = utils.get_db_object( session, models.Cluster, True, id=cluster_id ).state_dict() if cluster_state['state'] != 'SUCCESSFUL': logging.debug("state is %s" % cluster_state['state']) err_msg = "Healthcheck starts only after cluster finished deployment!" raise exception.Forbidden(err_msg) reports = utils.list_db_objects( session, models.HealthCheckReport, cluster_id=cluster_id, state='verifying' ) if reports: err_msg = 'Healthcheck in progress, please wait for it to complete!' raise exception.Forbidden(err_msg) # Clear all preivous report utils.del_db_objects( session, models.HealthCheckReport, cluster_id=cluster_id ) from compass.tasks import client as celery_client celery_client.celery.send_task( 'compass.tasks.cluster_health', (cluster_id, send_report_url, user.email) ) return { "cluster_id": cluster_id, "status": "start to check cluster health." }
def _set_user_permissions(user, session=None, **permission_filters): """set permissions to a user.""" utils.del_db_objects( session, models.UserPermission, user_id=user.id ) _add_user_permissions(session, user, **permission_filters)
def _remove_clusterhosts(session, cluster, hosts): with session.begin(subtransactions=True): for host_id in hosts: utils.del_db_objects( session, models.ClusterHost, cluster_id=cluster.id, host_id=machine_id )
def start_check_cluster_health(cluster_id, send_report_url, user=None, session=None, check_health={}): """Start to check cluster health.""" cluster = cluster_api.get_cluster_internal(cluster_id, session=session) if cluster.state.state != 'SUCCESSFUL': logging.debug("state is %s" % cluster.state.state) err_msg = "Healthcheck starts only after cluster finished deployment!" raise exception.Forbidden(err_msg) reports = utils.list_db_objects(session, models.HealthCheckReport, cluster_id=cluster.id, state='verifying') if reports: err_msg = 'Healthcheck in progress, please wait for it to complete!' raise exception.Forbidden(err_msg) # Clear all preivous report # TODO(grace): the delete should be moved into celery task. # We should consider the case that celery task is down. utils.del_db_objects(session, models.HealthCheckReport, cluster_id=cluster.id) from compass.tasks import client as celery_client celery_client.celery.send_task('compass.tasks.cluster_health', (cluster.id, send_report_url, user.email)) return { "cluster_id": cluster.id, "status": "start to check cluster health." }
def test_del_single_object(self): with database.session() as session: utils.del_db_objects(session, models.Permission, name='list_permissions') query_deleted = utils.list_db_objects(session, models.Permission, name='list_permissions') self.assertListEqual([], query_deleted)
def _set_machines(session, switch, machines): utils.del_db_objects( session, models.SwitchMachine, switch_id=switch.id ) for switch_machine in machines: _update_machine_internal( session, switch.id, **switch_machine )
def _set_clusterhosts(session, cluster, machines): with session.begin(subtransactions=True): utils.del_db_objects( session, models.ClusterHost, cluster_id=cluster.id ) for machine_id in machines: utils.add_db_object( session, models.ClusterHost, True, cluster.id, machine_id )
def _remove_user_permissions(user, session=None, **permission_filters): """remove permissions from a user.""" from compass.db.api import permission as permission_api permission_ids = [ api_permission['id'] for api_permission in permission_api.list_permissions(session=session, **permission_filters) ] utils.del_db_objects(session, models.UserPermission, user_id=user.id, permission_id=permission_ids)
def test_del_all_objects(self): with database.session() as session: utils.del_db_objects( session, models.Permission ) remained = utils.list_db_objects( session, models.Permission ) self.assertListEqual([], remained)
def _remove_machines(switch, machines, session=None): """Remove machines from switch. Args: machines: list of machine id. machines example: [1,2] """ utils.del_db_objects( session, models.SwitchMachine, switch_id=switch.id, machine_id=machines )
def _remove_user_permissions(user, session=None, **permission_filters): """remove permissions from a user.""" from compass.db.api import permission as permission_api permission_ids = [ api_permission['id'] for api_permission in permission_api.list_permissions( session=session, **permission_filters ) ] utils.del_db_objects( session, models.UserPermission, user_id=user.id, permission_id=permission_ids )
def _remove_machines(switch, machines, session=None): """Remove machines from switch. Args: machines: list of machine id. machines example: [1,2] """ utils.del_db_objects(session, models.SwitchMachine, switch_id=switch.id, machine_id=machines)
def test_del_single_object(self): with database.session() as session: utils.del_db_objects( session, models.Permission, name='list_permissions' ) query_deleted = utils.list_db_objects( session, models.Permission, name='list_permissions' ) self.assertListEqual([], query_deleted)
def _set_machines(switch, machines, session=None): """Reset machines to a switch. Args: machines: list of dict which contains attributes to add machine to switch. machines example: {{'machine_id': 1, 'port': 'ae20'}] """ utils.del_db_objects(session, models.SwitchMachine, switch_id=switch.id) for switch_machine in machines: _add_machine_to_switch(switch.id, session=session, **switch_machine)
def _remove_user_permissions(session, user, **permission_filters): """remove permissions to a user.""" from compass.db.api import permission as permission_api permission_ids = [ api_permission.id for api_permission in permission_api.list_permissions_internal( session, **permission_filters ) ] utils.del_db_objects( session, models.UserPermission, user_id=user.id, permission_id=permission_ids )
def _set_machines(switch, machines, session=None): """Reset machines to a switch. Args: machines: list of dict which contains attributes to add machine to switch. machines example: {{'machine_id': 1, 'port': 'ae20'}] """ utils.del_db_objects( session, models.SwitchMachine, switch_id=switch.id ) for switch_machine in machines: _add_machine_to_switch( switch.id, session=session, **switch_machine )
def delete_reports(user, cluster_id, name=None, session=None): if not name: report = utils.get_db_object( session, models.HealthCheckReport, cluster_id=cluster_id, name=name ) return utils.del_db_object(session, report) return utils.del_db_objects( session, models.HealthCheckReport, cluster_id=cluster_id )
def delete_reports(cluster_id, name=None, user=None, session=None): # TODO(grace): better to separate this function into two. # One is to delete a report of a cluster, the other to delete all # reports under a cluster. if name: report = _get_report(cluster_id, name, session=session) return utils.del_db_object(session, report) else: cluster = cluster_api.get_cluster_internal(cluster_id, session=session) return utils.del_db_objects(session, models.HealthCheckReport, cluster_id=cluster.id)
def delete_reports(cluster_id, name=None, user=None, session=None): # TODO(grace): better to separate this function into two. # One is to delete a report of a cluster, the other to delete all # reports under a cluster. if name: report = _get_report(cluster_id, name, session=session) return utils.del_db_object(session, report) else: cluster = cluster_api.get_cluster_internal( cluster_id, session=session ) return utils.del_db_objects( session, models.HealthCheckReport, cluster_id=cluster.id )
def del_user_actions(deleter, user_id, **filters): """delete user actions.""" with database.session() as session: user = user_api.get_user_internal(session, id=user_id) if not deleter.is_admin and deleter_id != user_id: # The user is not allowed to delete users actions. raise Forbidden( 'User %s has no permission to delete user %s actions.' % ( deleter.email, user.email ) ) user_actions = [] for action in utils.del_db_objects( session, models.UserLog, user_id=user_id, **filters ): action_dict = action.to_dict() del action_dict['user_id'] user_actions.append(action_dict) return {'user_id': user_id, 'logs': user_actions}
def del_actions(deleter, **filters): """delete actions.""" with database.session() as session: if not deleter.is_admin: # The user is not allowed to delete users actions. raise Forbidden( 'User %s has no permission to delete all users actions.' % ( deleter.email, user.email ) ) actions = {} for action in utils.del_db_objects( session, models.UserLog, **filters ): action_dict = action.to_dict() user_id = action_dict['user_id'] del action_dict['user_id'] actions.setdefault(user_id, []).append(action_dict) return [ {'user_id': user_id, 'logs': user_actions} for user_id, user_action in actions.items() ]
def _set_user_permissions(user, session=None, **permission_filters): """set permissions to a user.""" utils.del_db_objects(session, models.UserPermission, user_id=user.id) _add_user_permissions(session, user, **permission_filters)
def clean_user_token(token, user=None, session=None): """clean user token in database.""" return utils.del_db_objects( session, models.UserToken, token=token, user_id=user.id )
def del_actions(user=None, session=None, **filters): """delete actions of all users.""" return utils.del_db_objects( session, models.UserLog, **filters )
def del_actions(session, deleter, **filters): """delete actions.""" return utils.del_db_objects( session, models.UserLog, **filters )
def test_del_all_objects(self): with database.session() as session: utils.del_db_objects(session, models.Permission) remained = utils.list_db_objects(session, models.Permission) self.assertListEqual([], remained)
def _remove_machines(session, switch, machines): utils.del_db_objects( session, models.SwitchMachine, switch_id=switch.id, machine_id=machines )
def del_user_actions(session, deleter, user_id, **filters): """delete user actions.""" return utils.del_db_objects( session, models.UserLog, user_id=user_id, **filters )
def clean_user_token(token, user=None, session=None): """clean user token in database.""" return utils.del_db_objects(session, models.UserToken, token=token, user_id=user.id)
def del_user_actions(user_id, user=None, session=None, **filters): """delete actions of a user.""" del_user = user_api.get_user(user_id, user=user, session=session) return utils.del_db_objects( session, models.UserLog, user_id=del_user['id'], **filters )