def present(name, login=None, domain=None, database=None, roles=None, options=None, **kwargs):
    '''
    Checks existance of the named user.
    If not present, creates the user with the specified roles and options.

    name
        The name of the user to manage
    login
        If not specified, will be created WITHOUT LOGIN
    domain
        Creates a Windows authentication user.
        Needs to be NetBIOS domain or hostname
    database
        The database of the user (not the login)
    roles
        Add this user to all the roles in the list
    options
        Can be a list of strings, a dictionary, or a list of dictionaries
    '''
    ret = {'name': name,
           'changes': {},
           'result': True,
           'comment': ''}

    if domain and not login:
        ret['result'] = False
        ret['comment'] = 'domain cannot be set without login'
        return ret
    if __salt__['mssql.user_exists'](name, domain=domain, database=database, **kwargs):
        ret['comment'] = 'User {0} is already present (Not going to try to set its roles or options)'.format(name)
        return ret
    if __opts__['test']:
        ret['result'] = None
        ret['comment'] = 'User {0} is set to be added'.format(name)
        return ret

    user_created = __salt__['mssql.user_create'](name, login=login,
                                                       domain=domain,
                                                       database=database,
                                                       roles=roles,
                                                       options=_normalize_options(options),
                                                       **kwargs)
    if user_created is not True:  # Non-empty strings are also evaluated to True, so we cannot use if not user_created:
        ret['result'] = False
        ret['comment'] += 'User {0} failed to be added: {1}'.format(name, user_created)
        return ret
    ret['comment'] += 'User {0} has been added'.format(name)
    ret['changes'][name] = 'Present'
    return ret
Checks existance of the named user.
    If not present, creates the user with the specified roles and options.

    name
        The name of the user to manage
    login
        If not specified, will be created WITHOUT LOGIN
    domain
        Creates a Windows authentication user.
        Needs to be NetBIOS domain or hostname
    database
        The database of the user (not the login)
    roles
        Add this user to all the roles in the list
    options
        Can be a list of strings, a dictionary, or a list of dictionaries