Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)