docs: def present(name, service_name, auth=None, **kwargs):
      '''
      Ensure an endpoint exists and is up-to-date
  
      name
          Interface name
  
      url
          URL of the endpoint
  
      service_name
          Service name or ID
  
      region
          The region name to assign the endpoint
  
      enabled
          Boolean to control if endpoint is enabled
      '''
      ret = {'name': name,
             'changes': {},
             'result': True,
             'comment': ''}
  
      kwargs = __utils__['args.clean_kwargs'](**kwargs)
  
      __salt__['keystoneng.setup_clouds'](auth)
  
      success, val = _, endpoint = _common(ret, name, service_name, kwargs)
      if not success:
          return val
  
      if not endpoint:
          if __opts__['test'] is True:
              ret['result'] = None
              ret['changes'] = kwargs
              ret['comment'] = 'Endpoint will be created.'
              return ret
  
          # NOTE(SamYaple): Endpoints are returned as a list which can contain
          # several items depending on the options passed
          endpoints = __salt__['keystoneng.endpoint_create'](**kwargs)
          if len(endpoints) == 1:
              ret['changes'] = endpoints[0]
          else:
              for i, endpoint in enumerate(endpoints):
                  ret['changes'][i] = endpoint
          ret['comment'] = 'Created endpoint'
          return ret
  
      changes = __salt__['keystoneng.compare_changes'](endpoint, **kwargs)
      if changes:
          if __opts__['test'] is True:
              ret['result'] = None
              ret['changes'] = changes
              ret['comment'] = 'Endpoint will be updated.'
              return ret
  
          kwargs['endpoint_id'] = endpoint.id
          __salt__['keystoneng.endpoint_update'](**kwargs)
          ret['changes'].update(changes)
          ret['comment'] = 'Updated endpoint'
  
      return ret