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 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)