docs: def update_user(email, profile="splunk", **kwargs):
      '''
      Create a splunk user by email
  
      CLI Example:
  
          salt myminion splunk.update_user example@domain.com roles=['user'] realname="Test User"
      '''
  
      client = _get_splunk(profile)
  
      email = email.lower()
  
      user = list_users(profile).get(email)
  
      if not user:
          log.error('Failed to retrieve user %s', email)
          return False
  
      property_map = {}
  
      for field in ALLOWED_FIELDS_FOR_MODIFICATION:
          if kwargs.get(field):
              property_map[field] = kwargs.get(field)
  
      # update
      kwargs = {}
      roles = [role.name for role in user.role_entities]
  
      for k, v in property_map.items():
          resource_value = user[k]
          if resource_value is not None:
              # you can't update the username in update api call
              if k.lower() == 'name':
                  continue
              if k.lower() == 'roles':
                  if isinstance(v, six.string_types):
                      v = v.split(',')
                  if set(roles) != set(v):
                      kwargs['roles'] = list(set(v))
              elif resource_value != v:
                  kwargs[k] = v
  
      if kwargs:
          user.update(**kwargs).refresh()
  
          fields_modified = {}
          for field in ALLOWED_FIELDS_FOR_MODIFICATION:
              fields_modified[field] = user[field]
  
      else:
          #succeeded, no change
          return True