code: def generate_base_provider_parser():
      
      parser = argparse.ArgumentParser(add_help=False)
      parser.add_argument('action', help='specify the action to take', default='list',
                          choices=['create', 'list', 'update', 'delete'])
      parser.add_argument(
          'domain', help='specify the domain, supports subdomains as well')
      parser.add_argument('type', help='specify the entry type', default='TXT',
                          choices=['A', 'AAAA', 'CNAME', 'MX', 'NS', 'SOA', 'TXT', 'SRV', 'LOC'])
  
      parser.add_argument('--name', help='specify the record name')
      parser.add_argument('--content', help='specify the record content')
      parser.add_argument('--ttl', type=int,
                          help='specify the record time-to-live')
      parser.add_argument('--priority', help='specify the record priority')
      parser.add_argument(
          '--identifier', help='specify the record for update or delete actions')
      parser.add_argument('--log_level', help='specify the log level', default='ERROR',
                          choices=['CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG', 'NOTSET'])
      parser.add_argument('--output',
                          help=('specify the type of output: by default a formatted table (TABLE), '
                                'a formatted table without header (TABLE-NO-HEADER), '
                                'a JSON string (JSON) or no output (QUIET)'),
                          default='TABLE', choices=['TABLE', 'TABLE-NO-HEADER', 'JSON', 'QUIET'])
      return parser
docs: Function that generates the base provider to be used by all dns providers.