docs: def route_table_present(name, resource_group, tags=None, routes=None, disable_bgp_route_propagation=None,
                          connection_auth=None, **kwargs):
      '''
      .. versionadded:: 2019.2.0
  
      Ensure a route table exists.
  
      :param name:
          Name of the route table.
  
      :param resource_group:
          The resource group assigned to the route table.
  
      :param routes:
          An optional list of dictionaries representing valid Route objects contained within a route table. See the
          documentation for the route_present state or route_create_or_update execution module for more information on
          required and optional parameters for routes. The routes are only managed if this parameter is present. When this
          parameter is absent, implemented routes will not be removed, and will merely become unmanaged.
  
      :param disable_bgp_route_propagation:
          An optional boolean parameter setting whether to disable the routes learned by BGP on the route table.
  
      :param tags:
          A dictionary of strings can be passed as tag metadata to the route table object.
  
      :param connection_auth:
          A dict with subscription and authentication parameters to be used in connecting to the
          Azure Resource Manager API.
  
      Example usage:
  
      .. code-block:: yaml
  
          Ensure route table exists:
              azurearm_network.route_table_present:
                  - name: rt1
                  - resource_group: group1
                  - routes:
                    - name: rt1_route1
                      address_prefix: '0.0.0.0/0'
                      next_hop_type: internet
                    - name: rt1_route2
                      address_prefix: '192.168.0.0/16'
                      next_hop_type: vnetlocal
                  - tags:
                      contact_name: Elmer Fudd Gantry
                  - connection_auth: {{ profile }}
                  - require:
                    - azurearm_resource: Ensure resource group exists
  
      '''
      ret = {
          'name': name,
          'result': False,
          'comment': '',
          'changes': {}
      }
  
      if not isinstance(connection_auth, dict):
          ret['comment'] = 'Connection information must be specified via connection_auth dictionary!'
          return ret
  
      rt_tbl = __salt__['azurearm_network.route_table_get'](
          name,
          resource_group,
          azurearm_log_level='info',
          **connection_auth
      )
  
      if 'error' not in rt_tbl:
          # tag changes
          tag_changes = __utils__['dictdiffer.deep_diff'](rt_tbl.get('tags', {}), tags or {})
          if tag_changes:
              ret['changes']['tags'] = tag_changes
  
          # disable_bgp_route_propagation changes
          # pylint: disable=line-too-long
          if disable_bgp_route_propagation and (disable_bgp_route_propagation != rt_tbl.get('disable_bgp_route_propagation')):
              ret['changes']['disable_bgp_route_propagation'] = {
                  'old': rt_tbl.get('disable_bgp_route_propagation'),
                  'new': disable_bgp_route_propagation
              }
  
          # routes changes
          if routes:
              comp_ret = __utils__['azurearm.compare_list_of_dicts'](rt_tbl.get('routes', []), routes)
  
              if comp_ret.get('comment'):
                  ret['comment'] = '"routes" {0}'.format(comp_ret['comment'])
                  return ret
  
              if comp_ret.get('changes'):
                  ret['changes']['routes'] = comp_ret['changes']
  
          if not ret['changes']:
              ret['result'] = True
              ret['comment'] = 'Route table {0} is already present.'.format(name)
              return ret
  
          if __opts__['test']:
              ret['result'] = None
              ret['comment'] = 'Route table {0} would be updated.'.format(name)
              return ret
  
      else:
          ret['changes'] = {
              'old': {},
              'new': {
                  'name': name,
                  'tags': tags,
                  'routes': routes,
                  'disable_bgp_route_propagation': disable_bgp_route_propagation,
              }
          }
  
      if __opts__['test']:
          ret['comment'] = 'Route table {0} would be created.'.format(name)
          ret['result'] = None
          return ret
  
      rt_tbl_kwargs = kwargs.copy()
      rt_tbl_kwargs.update(connection_auth)
  
      rt_tbl = __salt__['azurearm_network.route_table_create_or_update'](
          name=name,
          resource_group=resource_group,
          disable_bgp_route_propagation=disable_bgp_route_propagation,
          routes=routes,
          tags=tags,
          **rt_tbl_kwargs
      )
  
      if 'error' not in rt_tbl:
          ret['result'] = True
          ret['comment'] = 'Route table {0} has been created.'.format(name)
          return ret
  
      ret['comment'] = 'Failed to create route table {0}! ({1})'.format(name, rt_tbl.get('error'))
      return ret