def groups
      # config_get returns the following format:
      # [{"appl_subtype": "console",
      #   "cmd_type": "config-commands",
      #   "methods": "group foo bar local "}], ...
      hsh_arr = config_get('aaa_authorization_service', 'groups')
      fail 'unable to retrieve aaa groups information' if hsh_arr.empty?
      type_s = AaaAuthorizationService.auth_type_sym_to_str(@type)
      hsh = hsh_arr.find do |x|
        x['appl_subtype'] == @name && x['cmd_type'] == type_s
      end
      fail "no aaa info for #{@type},#{@name}" if hsh.nil?
      fail "no aaa info for #{@type},#{@name}. api/feature change?" unless
        hsh.key? 'methods'
      # ex: ["group", "group1", "local"]
      grps = hsh['methods'].strip.split
      # return [] if grps.size == 1
      # remove local, group keywords
      grps -= %w(local group)
      grps
    end
def groups
      # config_get returns the following format:
      # [{"appl_subtype": "console",
      #   "cmd_type": "config-commands",
      #   "methods": "group foo bar local "}], ...
      hsh_arr = config_get('aaa_authorization_service', 'groups')
      fail 'unable to retrieve aaa groups information' if hsh_arr.empty?
      type_s = AaaAuthorizationService.auth_type_sym_to_str(@type)
      hsh = hsh_arr.find do |x|
        x['appl_subtype'] == @name && x['cmd_type'] == type_s
      end
      fail "no aaa info for #{@type},#{@name}" if hsh.nil?
      fail "no aaa info for #{@type},#{@name}. api/feature change?" unless
        hsh.key? 'methods'
      # ex: ["group", "group1", "local"]
      grps = hsh['methods'].strip.split
      # return [] if grps.size == 1
      # remove local, group keywords
      grps -= %w(local group)
      grps
    end
groups aren't retrieved via the usual CLI regex memory type because
 there can be an arbitrary number of groups and specifying a repeating
 memory regex only captures the last match
 ex: aaa authorization console group group1 group2 group3 local