def groups
      # config_get returns the following format:
      # [{service:"default",method:"group group1 none "},
      #  {service:"console",method:"local "}]
      hsh_arr = config_get('aaa_auth_login_service', 'groups')
      fail 'unable to retrieve aaa groups information' if hsh_arr.empty?
      hsh = hsh_arr.find { |x| x['service'] == @name }
      # this should never happen unless @name is invalid
      fail "no aaa info found for service #{@name}" if hsh.nil?
      fail "no method found for #{@name} - api or feature change?" unless
        hsh.key? 'method'
      # ex: ["group", "group1", "local"] or maybe ["none"]
      grps = hsh['method'].strip.split
      return [] if grps.size == 1
      # remove local, none, group keywords
      grps -= %w(none local group)
      grps
    end
def groups
      # config_get returns the following format:
      # [{service:"default",method:"group group1 none "},
      #  {service:"console",method:"local "}]
      hsh_arr = config_get('aaa_auth_login_service', 'groups')
      fail 'unable to retrieve aaa groups information' if hsh_arr.empty?
      hsh = hsh_arr.find { |x| x['service'] == @name }
      # this should never happen unless @name is invalid
      fail "no aaa info found for service #{@name}" if hsh.nil?
      fail "no method found for #{@name} - api or feature change?" unless
        hsh.key? 'method'
      # ex: ["group", "group1", "local"] or maybe ["none"]
      grps = hsh['method'].strip.split
      return [] if grps.size == 1
      # remove local, none, group keywords
      grps -= %w(none local group)
      grps
    end
groups aren't retrieved via the usual CLI regex memory method because
 there can be an arbitrary number of groups and specifying a repeating
 memory regex only captures the last match
 ex: aaa authentication login default group group1 group2 group3 none