anchor.diff:  
   def main():
       parser = argparse.ArgumentParser()
  -    group = parser.add_mutually_exclusive_group()
  +    limit_ignore_group = parser.add_mutually_exclusive_group()
  +    date_group = parser.add_mutually_exclusive_group(required=True)
   
       help_text = """
       Limit pruning to just this list of tenant name(s).
       """
  -    group.add_argument('-l', '--limit', required=False,
  -                       nargs='+', help=help_text)
  +    limit_ignore_group.add_argument('-l', '--limit', required=False,
  +                                    nargs='+', help=help_text)
   
       help_text = """
       Ignore pruning for this list of tenant name(s).
       """
  -    group.add_argument('-i', '--ignore', required=False,
  -                       nargs='+', help=help_text)
  +    limit_ignore_group.add_argument('-i', '--ignore', required=False,
  +                                    nargs='+', help=help_text)
       help_text = """
       The name of the admin tenant.  This tenant will not be
       pruned, and libvirt metrics that are cross-posted here will
  
positive.code:         non_admin_with_ignore_clause = \
              "AND def.tenant_id != '%s' AND def.tenant_id NOT IN (%s)" \
              % (admin_id, ignore_in_list)
          vsql(delete_sql % (retain_time, non_admin_with_ignore_clause))
          vsql(delete_sql % (retain_time, admin_clause))
  
      else:
          non_admin_clause = "AND def.tenant_id != '%s'" % admin_id
          vsql(delete_sql % (retain_time, non_admin_clause))
          vsql(delete_sql % (retain_time, admin_clause))
  
      delete_defdims_sql = """
         DELETE FROM MonMetrics.DefinitionDimensions
  
negative.code:                 "AND def.tenant_id != '%s' AND def.tenant_id IN (%s)" \
                  % (admin_id, limited_in_list)
  
          vsql(delete_sql % (time_clause, limit_clause))
  
      elif args.ignore:
  
  