docs: def do_alarm_count(mc, args):
      '''Count alarms.'''
      fields = {}
      if args.alarm_definition_id:
          fields['alarm_definition_id'] = args.alarm_definition_id
      if args.metric_name:
          fields['metric_name'] = args.metric_name
      if args.metric_dimensions:
          fields['metric_dimensions'] = utils.format_dimensions_query(args.metric_dimensions)
      if args.state:
          if args.state.upper() not in state_types:
              errmsg = ('Invalid state, not one of [' +
                        ', '.join(state_types) + ']')
              print(errmsg)
              return
          fields['state'] = args.state
      if args.severity:
          if not _validate_severity(args.severity):
              return
          fields['severity'] = args.severity
      if args.state_updated_start_time:
          fields['state_updated_start_time'] = args.state_updated_start_time
      if args.lifecycle_state:
          fields['lifecycle_state'] = args.lifecycle_state
      if args.link:
          fields['link'] = args.link
      if args.group_by:
          group_by = args.group_by.split(',')
          if not set(group_by).issubset(set(group_by_types)):
              errmsg = ('Invalid group-by, one or more values not in [' +
                        ','.join(group_by_types) + ']')
              print(errmsg)
              return
          fields['group_by'] = args.group_by
      if args.limit:
          fields['limit'] = args.limit
      if args.offset:
          fields['offset'] = args.offset
      try:
          counts = mc.alarms.count(**fields)
      except (osc_exc.ClientException, k_exc.HttpError) as he:
          raise osc_exc.CommandError('%s\n%s' % (he.message, he.details))
      else:
          if args.json:
              print(utils.json_formatter(counts))
              return
          cols = counts['columns']
  
          utils.print_list(counts['counts'], [i for i in range(len(cols))],
                           field_labels=cols)