def remove_groups_from_user( username, group_ids=None, user_name=None, uri=None, method=None ): """Remove a group from a user Args: username(str): Name of the user Kwargs: group_ids(list): List of group_ids. user_name (str): The name of the user who called this function. uri (str): The uri that was used to call this function. method (str): The HTTP methos that was used to call this function. Basic Usage:: >>> from vFense.core.group.groups remove_groups_from_user >>> username = '******' >>> group_ids = ['0834e656-27a5-4b13-ba56-635797d0d1fc', '8757b79c-7321-4446-8882-65457f28c78b'] >>> remove_groups_from_user(username, group_ids) Returns: Returns the results in a dictionary { 'rv_status_code': 1004, 'message': 'None - remove_groups_from_user - group ids: 0834e656-27a5-4b13-ba56-635797d0d1fc, 8757b79c-7321-4446-8882-65457f28c78b does not exist', 'http_method': None, 'uri': None, 'http_status': 409 } """ status = remove_groups_from_user.func_name + ' - ' user_does_not_exist_in_group = False admin_user = False admin_group_id = None admin_group_id_exists_in_group_ids = False if username == DefaultUsers.ADMIN: admin_user = True admin_group_id = ( fetch_group_by_name( DefaultGroups.ADMIN, DefaultCustomers.DEFAULT, GroupKeys.GroupId )[GroupKeys.GroupId] ) try: if not group_ids: group_ids = ( map(lambda x: x[GroupsPerUserKeys.GroupId], get_groups_for_user(username, GroupsPerUserKeys.GroupId) ) ) if group_ids: if not admin_group_id in group_ids: msg = 'group ids: ' + 'and '.join(group_ids) for gid in group_ids: user_in_group = user_exist_in_group(username, gid) if not user_in_group: user_does_not_exist_in_group = True else: admin_group_id_exists_in_group_ids = True msg = ( 'Cannot remove the %s group from the %s user' % (DefaultGroups.ADMIN, DefaultUsers.ADMIN) ) else: user_does_not_exist_in_group = True if (not user_does_not_exist_in_group and not admin_group_id_exists_in_group_ids): status_code, count, errors, generated_ids = ( delete_groups_from_user(username, group_ids) ) if status_code == DbCodes.Deleted: generic_status_code = GenericCodes.ObjectDeleted vfense_status_code = GroupCodes.GroupsRemovedFromUser elif status_code == DbCodes.Unchanged: generic_status_code = GenericCodes.ObjectUnchanged vfense_status_code = GroupCodes.GroupUnchanged elif status_code == DbCodes.Skipped: generic_status_code = GenericCodes.InvalidId vfense_status_code = GroupFailureCodes.InvalidGroupId elif admin_group_id_exists_in_group_ids: status_code = DbCodes.Skipped generic_status_code = GenericCodes.InvalidId vfense_status_code = GroupFailureCodes.CantRemoveAdminFromGroup else: msg = ( 'groups %s do not exist for user %s' % (' and '.join(group_ids), username) ) status_code = DbCodes.Skipped generic_status_code = GenericCodes.InvalidId vfense_status_code = GroupFailureCodes.GroupDoesNotExistForUser results = { ApiResultKeys.DB_STATUS_CODE: status_code, ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code, ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code, ApiResultKeys.MESSAGE: status + msg, ApiResultKeys.DATA: [], ApiResultKeys.USERNAME: user_name, ApiResultKeys.URI: uri, ApiResultKeys.HTTP_METHOD: method } except Exception as e: logger.exception(e) status_code = DbCodes.Errors generic_status_code = GenericFailureCodes.FailedToDeleteObject vfense_status_code = GroupFailureCodes.FailedToRemoveGroupFromUser results = { ApiResultKeys.DB_STATUS_CODE: status_code, ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code, ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code, ApiResultKeys.MESSAGE: status + msg, ApiResultKeys.DATA: [], ApiResultKeys.USERNAME: user_name, ApiResultKeys.URI: uri, ApiResultKeys.HTTP_METHOD: method } return(results)
def add_user_to_groups( username, customer_name, group_ids, user_name=None, uri=None, method=None ): """Add a user into a vFense group Args: username (str): Name of the user already in vFense. customer_name (str): The customer this user is part of. group_ids (list): List of group ids. Kwargs: user_name (str): The name of the user who called this function. uri (str): The uri that was used to call this function. method (str): The HTTP methos that was used to call this function. Basic Usage: >>> from vFense.group.groups import add_user_to_groups >>> username = '******' >>> customer_name = 'default' >>> group_ids = ['0834e656-27a5-4b13-ba56-635797d0d1fc'] >>> add_user_to_groups(username, customer_name, group_ids) Returns: Returns the results in a dictionary { 'uri': None, 'rv_status_code': 1010, 'http_method': None, 'http_status': 200, 'message': "None - groups per user [u'ee54820c-cb4e-46a1-9d11-73afe8c4c4e3'] was created", 'data': { 'group_name': u'FooLah', 'user_name': 'alien', 'group_id': '0834e656-27a5-4b13-ba56-635797d0d1fc', 'customer_name': 'default' } } """ status = add_user_to_groups.func_name + ' - ' groups_are_valid = validate_group_ids(group_ids, customer_name) user_exist = retrieve_object(username, UserCollections.Users) customer_exist = retrieve_object(customer_name, CustomerCollections.Customers) results = None generated_ids = [] users_group_exist = [] generic_status_code = 0 vfense_status_code = 0 if groups_are_valid[0] and user_exist and customer_exist: data_list = [] for group_id in group_ids: group_exist = get_group(group_id) user_in_group = ( user_exist_in_group(username, group_id) ) if not user_in_group: data_to_add = ( { GroupsPerUserKeys.CustomerName: customer_name, GroupsPerUserKeys.UserName: username, GroupsPerUserKeys.GroupName: group_exist[GroupKeys.GroupName], GroupsPerUserKeys.GroupId: group_id } ) data_list.append(data_to_add) else: users_group_exist.append(group_id) if len(data_list) == len(group_ids): status_code, object_count, error, generated_ids = ( insert_group_per_user(data_list) ) if status_code == DbCodes.Inserted: msg = 'user %s add to groups' % (username) generic_status_code = GenericCodes.ObjectCreated vfense_status_code = GroupCodes.GroupCreated else: msg = ( 'user %s is already in groups %s' % ( username, ' and '.join(users_group_exist) ) ) status_code = DbCodes.Skipped generic_status_code = GenericCodes.ObjectExists vfense_status_code = GroupFailureCodes.GroupExistForUser elif not groups_are_valid[0]: msg = ( 'Group Ids are invalid: %s' % ( ' and '.join(groups_are_valid[2]) ) ) status_code = DbCodes.Errors generic_status_code = GenericCodes.InvalidId vfense_status_code = GroupFailureCodes.InvalidGroupId elif not user_exist: msg = 'User name is invalid: %s' % (username) status_code = DbCodes.Errors generic_status_code = GenericCodes.InvalidId vfense_status_code = UserFailureCodes.InvalidUserName elif not customer_exist: msg = 'Customer name is invalid: %s' % (customer_name) status_code = DbCodes.Errors generic_status_code = GenericCodes.InvalidId vfense_status_code = CustomerFailureCodes.CustomerDoesNotExist results = { ApiResultKeys.DB_STATUS_CODE: status_code, ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code, ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code, ApiResultKeys.GENERATED_IDS: generated_ids, ApiResultKeys.MESSAGE: status + msg, ApiResultKeys.DATA: [], ApiResultKeys.USERNAME: user_name, ApiResultKeys.URI: uri, ApiResultKeys.HTTP_METHOD: method } return(results)
def add_user_to_groups(username, customer_name, group_ids, user_name=None, uri=None, method=None): """Add a user into a vFense group Args: username (str): Name of the user already in vFense. customer_name (str): The customer this user is part of. group_ids (list): List of group ids. Kwargs: user_name (str): The name of the user who called this function. uri (str): The uri that was used to call this function. method (str): The HTTP methos that was used to call this function. Basic Usage: >>> from vFense.group.groups import add_user_to_groups >>> username = '******' >>> customer_name = 'default' >>> group_ids = ['0834e656-27a5-4b13-ba56-635797d0d1fc'] >>> add_user_to_groups(username, customer_name, group_ids) Returns: Returns the results in a dictionary { 'uri': None, 'rv_status_code': 1010, 'http_method': None, 'http_status': 200, 'message': "None - groups per user [u'ee54820c-cb4e-46a1-9d11-73afe8c4c4e3'] was created", 'data': { 'group_name': u'FooLah', 'user_name': 'alien', 'group_id': '0834e656-27a5-4b13-ba56-635797d0d1fc', 'customer_name': 'default' } } """ status = add_user_to_groups.func_name + ' - ' groups_are_valid = validate_group_ids(group_ids, customer_name) user_exist = retrieve_object(username, UserCollections.Users) customer_exist = retrieve_object(customer_name, CustomerCollections.Customers) results = None generated_ids = [] users_group_exist = [] generic_status_code = 0 vfense_status_code = 0 if groups_are_valid[0] and user_exist and customer_exist: data_list = [] for group_id in group_ids: group_exist = get_group(group_id) user_in_group = (user_exist_in_group(username, group_id)) if not user_in_group: data_to_add = ({ GroupsPerUserKeys.CustomerName: customer_name, GroupsPerUserKeys.UserName: username, GroupsPerUserKeys.GroupName: group_exist[GroupKeys.GroupName], GroupsPerUserKeys.GroupId: group_id }) data_list.append(data_to_add) else: users_group_exist.append(group_id) if len(data_list) == len(group_ids): status_code, object_count, error, generated_ids = ( insert_group_per_user(data_list)) if status_code == DbCodes.Inserted: msg = 'user %s add to groups' % (username) generic_status_code = GenericCodes.ObjectCreated vfense_status_code = GroupCodes.GroupCreated else: msg = ('user %s is already in groups %s' % (username, ' and '.join(users_group_exist))) status_code = DbCodes.Skipped generic_status_code = GenericCodes.ObjectExists vfense_status_code = GroupFailureCodes.GroupExistForUser elif not groups_are_valid[0]: msg = ('Group Ids are invalid: %s' % (' and '.join(groups_are_valid[2]))) status_code = DbCodes.Errors generic_status_code = GenericCodes.InvalidId vfense_status_code = GroupFailureCodes.InvalidGroupId elif not user_exist: msg = 'User name is invalid: %s' % (username) status_code = DbCodes.Errors generic_status_code = GenericCodes.InvalidId vfense_status_code = UserFailureCodes.InvalidUserName elif not customer_exist: msg = 'Customer name is invalid: %s' % (customer_name) status_code = DbCodes.Errors generic_status_code = GenericCodes.InvalidId vfense_status_code = CustomerFailureCodes.CustomerDoesNotExist results = { ApiResultKeys.DB_STATUS_CODE: status_code, ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code, ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code, ApiResultKeys.GENERATED_IDS: generated_ids, ApiResultKeys.MESSAGE: status + msg, ApiResultKeys.DATA: [], ApiResultKeys.USERNAME: user_name, ApiResultKeys.URI: uri, ApiResultKeys.HTTP_METHOD: method } return (results)
def remove_groups_from_user(username, group_ids=None, user_name=None, uri=None, method=None): """Remove a group from a user Args: username(str): Name of the user Kwargs: group_ids(list): List of group_ids. user_name (str): The name of the user who called this function. uri (str): The uri that was used to call this function. method (str): The HTTP methos that was used to call this function. Basic Usage:: >>> from vFense.core.group.groups remove_groups_from_user >>> username = '******' >>> group_ids = ['0834e656-27a5-4b13-ba56-635797d0d1fc', '8757b79c-7321-4446-8882-65457f28c78b'] >>> remove_groups_from_user(username, group_ids) Returns: Returns the results in a dictionary { 'rv_status_code': 1004, 'message': 'None - remove_groups_from_user - group ids: 0834e656-27a5-4b13-ba56-635797d0d1fc, 8757b79c-7321-4446-8882-65457f28c78b does not exist', 'http_method': None, 'uri': None, 'http_status': 409 } """ status = remove_groups_from_user.func_name + ' - ' user_does_not_exist_in_group = False admin_user = False admin_group_id = None admin_group_id_exists_in_group_ids = False if username == DefaultUsers.ADMIN: admin_user = True admin_group_id = (fetch_group_by_name( DefaultGroups.ADMIN, DefaultCustomers.DEFAULT, GroupKeys.GroupId)[GroupKeys.GroupId]) try: if not group_ids: group_ids = (map( lambda x: x[GroupsPerUserKeys.GroupId], get_groups_for_user(username, GroupsPerUserKeys.GroupId))) if group_ids: if not admin_group_id in group_ids: msg = 'group ids: ' + 'and '.join(group_ids) for gid in group_ids: user_in_group = user_exist_in_group(username, gid) if not user_in_group: user_does_not_exist_in_group = True else: admin_group_id_exists_in_group_ids = True msg = ('Cannot remove the %s group from the %s user' % (DefaultGroups.ADMIN, DefaultUsers.ADMIN)) else: user_does_not_exist_in_group = True if (not user_does_not_exist_in_group and not admin_group_id_exists_in_group_ids): status_code, count, errors, generated_ids = ( delete_groups_from_user(username, group_ids)) if status_code == DbCodes.Deleted: generic_status_code = GenericCodes.ObjectDeleted vfense_status_code = GroupCodes.GroupsRemovedFromUser elif status_code == DbCodes.Unchanged: generic_status_code = GenericCodes.ObjectUnchanged vfense_status_code = GroupCodes.GroupUnchanged elif status_code == DbCodes.Skipped: generic_status_code = GenericCodes.InvalidId vfense_status_code = GroupFailureCodes.InvalidGroupId elif admin_group_id_exists_in_group_ids: status_code = DbCodes.Skipped generic_status_code = GenericCodes.InvalidId vfense_status_code = GroupFailureCodes.CantRemoveAdminFromGroup else: msg = ('groups %s do not exist for user %s' % (' and '.join(group_ids), username)) status_code = DbCodes.Skipped generic_status_code = GenericCodes.InvalidId vfense_status_code = GroupFailureCodes.GroupDoesNotExistForUser results = { ApiResultKeys.DB_STATUS_CODE: status_code, ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code, ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code, ApiResultKeys.MESSAGE: status + msg, ApiResultKeys.DATA: [], ApiResultKeys.USERNAME: user_name, ApiResultKeys.URI: uri, ApiResultKeys.HTTP_METHOD: method } except Exception as e: logger.exception(e) status_code = DbCodes.Errors generic_status_code = GenericFailureCodes.FailedToDeleteObject vfense_status_code = GroupFailureCodes.FailedToRemoveGroupFromUser results = { ApiResultKeys.DB_STATUS_CODE: status_code, ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code, ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code, ApiResultKeys.MESSAGE: status + msg, ApiResultKeys.DATA: [], ApiResultKeys.USERNAME: user_name, ApiResultKeys.URI: uri, ApiResultKeys.HTTP_METHOD: method } return (results)
def add_users_to_group( group_id, usernames, user_name=None, uri=None, method=None ): """Add a multiple users to a group Args: group_id (str): The 36 character group UUID. usernames (list): Name of the users already in vFense. Kwargs: user_name (str): The name of the user who called this function. uri (str): The uri that was used to call this function. method (str): The HTTP methos that was used to call this function. Basic Usage: >>> from vFense.core.user.users import add_users_to_group >>> group_id = '6ce3423e-544b-4206-b3cb-2296d39956b7' >>> usernames = ['tester1', 'tester2'] >>> add_users_to_group(group_id, usernames) Returns: Dictionary of the status of the operation. { 'uri': None, 'rv_status_code': 1017, 'http_method': None, 'http_status': 200, 'message': "None - add_users_to_group - customer names existed 'default', 'TopPatch', 'vFense' unchanged", 'data': [] } """ users_are_valid = validate_user_names(usernames) group = get_group(group_id) results = None data_list = [] status = add_users_to_group.func_name + ' - ' msg = '' status_code = 0 generic_status_code = 0 vfense_status_code = 0 generated_ids = [] data_list = [] if users_are_valid[0] and group: for username in usernames: if not user_exist_in_group(username, group_id): data_to_add = ( { GroupsPerUserKeys.GroupId: group_id, GroupsPerUserKeys.GroupName: group[GroupKeys.GroupName], GroupsPerUserKeys.CustomerName: group[GroupKeys.CustomerName], GroupsPerUserKeys.UserName: username, } ) data_list.append(data_to_add) if len(data_list) == len(usernames): status_code, _, _, generated_ids = ( insert_group_per_user(data_list) ) if status_code == DbCodes.Inserted: msg = ( 'user %s added to %s' % ( ' and '.join(usernames), group_id ) ) generic_status_code = GenericCodes.ObjectCreated vfense_status_code = UserCodes.UsersAddedToGroup else: status_code = DbCodes.Unchanged msg = ( 'user names %s existed for group %s' % (' and '.join(usernames), group_id) ) generic_status_code = GenericCodes.ObjectExists vfense_status_code = GroupFailureCodes.UsersExistForGroup elif not group: status_code = DbCodes.Errors msg = 'group id is invalid: %s' % (group_id) generic_status_code = GenericCodes.InvalidId vfense_status_code = GroupFailureCodes.InvalidGroupId elif not users_are_valid[0]: status_code = DbCodes.Errors msg = ( 'user names are invalid: %s' % ( ' and '.join(users_are_valid[2]) ) ) generic_status_code = GenericCodes.InvalidId vfense_status_code = UserFailureCodes.InvalidUserName results = { ApiResultKeys.DB_STATUS_CODE: status_code, ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code, ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code, ApiResultKeys.GENERATED_IDS: generated_ids, ApiResultKeys.MESSAGE: status + msg, ApiResultKeys.DATA: [], ApiResultKeys.USERNAME: user_name, ApiResultKeys.URI: uri, ApiResultKeys.HTTP_METHOD: method } return(results)