def add_user_to_customers( username, customer_names, user_name=None, uri=None, method=None ): """Add a multiple customers to a user Args: username (str): Name of the user already in vFense. customer_names (list): List of customer names, this user will be added to. 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.customer.customer import add_user_to_customers >>> username = '******' >>> customer_names = ['default', 'TopPatch', 'vFense'] >>> add_user_to_customers(username, customer_names) Returns: Dictionary of the status of the operation. { 'uri': None, 'rv_status_code': 1017, 'http_method': None, 'http_status': 200, 'message': "None - add_user_to_customers - customer names existed 'default', 'TopPatch', 'vFense' unchanged", 'data': [] } """ if isinstance(customer_names, str): customer_names = customer_names.split(',') customers_are_valid = validate_customer_names(customer_names) results = None user_exist = retrieve_object(username, UserCollections.Users) data_list = [] status = add_user_to_customers.func_name + ' - ' msg = '' status_code = 0 generic_status_code = 0 vfense_status_code = 0 generated_ids = [] if customers_are_valid[0]: data_list = [] for customer_name in customer_names: if not users_exists_in_customer(username, customer_name): data_to_add = ( { CustomerPerUserKeys.CustomerName: customer_name, CustomerPerUserKeys.UserName: username, } ) data_list.append(data_to_add) if user_exist and data_list: status_code, object_count, error, generated_ids = ( insert_user_per_customer(data_list) ) if status_code == DbCodes.Inserted: msg = ( 'user %s added to %s' % ( username, ' and '.join(customer_names) ) ) generic_status_code = GenericCodes.ObjectCreated vfense_status_code = CustomerCodes.CustomersAddedToUser elif user_exist and not data_list: status_code = DbCodes.Unchanged msg = 'customer names existed for user %s' % (username) generic_status_code = GenericCodes.ObjectExists vfense_status_code = CustomerFailureCodes.UsersExistForCustomer elif not user_exist: status_code = DbCodes.Errors msg = 'User name is invalid: %s' % (username) generic_status_code = GenericCodes.InvalidId vfense_status_code = UserFailureCodes.UserNameDoesNotExist elif not customers_are_valid[0]: status_code = DbCodes.Errors msg = ( 'Customer names are invalid: %s' % ( ' and '.join(customers_are_valid[2]) ) ) generic_status_code = GenericCodes.InvalidId vfense_status_code = CustomerFailureCodes.InvalidCustomerName 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_customers(username, customer_names, user_name=None, uri=None, method=None): """Add a multiple customers to a user Args: username (str): Name of the user already in vFense. customer_names (list): List of customer names, this user will be added to. 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.customer.customer import add_user_to_customers >>> username = '******' >>> customer_names = ['default', 'TopPatch', 'vFense'] >>> add_user_to_customers(username, customer_names) Returns: Dictionary of the status of the operation. { 'uri': None, 'rv_status_code': 1017, 'http_method': None, 'http_status': 200, 'message': "None - add_user_to_customers - customer names existed 'default', 'TopPatch', 'vFense' unchanged", 'data': [] } """ if isinstance(customer_names, str): customer_names = customer_names.split(',') customers_are_valid = validate_customer_names(customer_names) results = None user_exist = retrieve_object(username, UserCollections.Users) data_list = [] status = add_user_to_customers.func_name + ' - ' msg = '' status_code = 0 generic_status_code = 0 vfense_status_code = 0 generated_ids = [] if customers_are_valid[0]: data_list = [] for customer_name in customer_names: if not users_exists_in_customer(username, customer_name): data_to_add = ({ CustomerPerUserKeys.CustomerName: customer_name, CustomerPerUserKeys.UserName: username, }) data_list.append(data_to_add) if user_exist and data_list: status_code, object_count, error, generated_ids = ( insert_user_per_customer(data_list)) if status_code == DbCodes.Inserted: msg = ('user %s added to %s' % (username, ' and '.join(customer_names))) generic_status_code = GenericCodes.ObjectCreated vfense_status_code = CustomerCodes.CustomersAddedToUser elif user_exist and not data_list: status_code = DbCodes.Unchanged msg = 'customer names existed for user %s' % (username) generic_status_code = GenericCodes.ObjectExists vfense_status_code = CustomerFailureCodes.UsersExistForCustomer elif not user_exist: status_code = DbCodes.Errors msg = 'User name is invalid: %s' % (username) generic_status_code = GenericCodes.InvalidId vfense_status_code = UserFailureCodes.UserNameDoesNotExist elif not customers_are_valid[0]: status_code = DbCodes.Errors msg = ('Customer names are invalid: %s' % (' and '.join(customers_are_valid[2]))) generic_status_code = GenericCodes.InvalidId vfense_status_code = CustomerFailureCodes.InvalidCustomerName 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_customer( usernames, customer_name, user_name=None, uri=None, method=None ): """Add a multiple customers to a user Args: usernames (list): Name of the users already in vFense. customer_name (str): The name of the customer, these users will be added to. 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_customer >>> usernames = ['tester1', 'tester2'] >>> customer_names = 'default' >>> add_users_to_customer(usernames, customer_name) Returns: Dictionary of the status of the operation. { 'uri': None, 'rv_status_code': 1017, 'http_method': None, 'http_status': 200, 'message': "None - add_user_to_customers - customer names existed 'default', 'TopPatch', 'vFense' unchanged", 'data': [] } """ users_are_valid = validate_user_names(usernames) customer_is_valid = validate_customer_names([customer_name]) results = None data_list = [] status = add_users_to_customer.func_name + ' - ' msg = '' status_code = 0 generic_status_code = 0 vfense_status_code = 0 generated_ids = [] data_list = [] if users_are_valid[0] and customer_is_valid[0]: for username in usernames: if not users_exists_in_customer(username, customer_name): data_to_add = ( { CustomerPerUserKeys.CustomerName: customer_name, CustomerPerUserKeys.UserName: username, } ) data_list.append(data_to_add) if len(data_list) == len(usernames): status_code, _, _, generated_ids = ( insert_user_per_customer(data_list) ) if status_code == DbCodes.Inserted: msg = ( 'user %s added to %s' % ( ' and '.join(usernames), customer_name ) ) generic_status_code = GenericCodes.ObjectCreated vfense_status_code = UserCodes.UsersAddedToCustomer else: status_code = DbCodes.Unchanged msg = ( 'user names %s existed for customer %s' % (' and '.join(usernames), customer_name) ) generic_status_code = GenericCodes.ObjectExists vfense_status_code = CustomerFailureCodes.UsersExistForCustomer elif not customer_is_valid[0]: status_code = DbCodes.Errors msg = ( 'customer names are invalid: %s' % ( ' and '.join(customer_is_valid[2]) ) ) generic_status_code = GenericCodes.InvalidId vfense_status_code = CustomerFailureCodes.InvalidCustomerName 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)