Prototype: getindices(varref)

Return type: slist

Description: Returns the list of keys in varref which can be the name of an array or container.

[This function can accept many types of data parameters.][Functions#collecting functions]

Make sure you specify the correct scope when supplying the name of the variable.

Note:

  • The function always returns a list. If called on something that has no index (for example, an undefined variable) an empty list is returned.

  • The list which getindices returns is not guaranteed to be in any specific order.

  • In the case of a doubly-indexed array (such as parsestringarrayidx() and friends produce), the primary keys are returned; i.e. if varref[i][j] exist for various i, j and you ask for the keys of varref, you get the i values. For each such i you can then ask for getindices("varref[i]") to get a list of the j values (and so on, for higher levels of indexing).

Arguments:

  • varref: string - CFEngine variable identifier or inline JSON - in the range: .*

Example:

body common control
{
      bundlesequence => { "example" };
}

bundle agent example
{
  vars:

      "ps[relayhost]"                  string => "[mymailrelay]:587";
      "ps[mydomain]"                   string => "iu.hio.no";
      "ps[smtp_sasl_auth_enable]"      string => "yes";
      "ps[smtp_sasl_password_maps]"    string => "hash:/etc/postfix/sasl-passwd";
      "ps[smtp_sasl_security_options]" string => "";
      "ps[smtp_use_tls]"               string => "yes";
      "ps[default_privs]"              string => "mailman";
      "ps[inet_protocols]"             string => "all";
      "ps[inet_interfaces]"            string => "127.0.0.1";

      "parameter_name"        slist => getindices("ps");
      "parameter_name_sorted" slist => sort(parameter_name, lex);

  reports:

      "Found key $(parameter_name_sorted)";
}

Output:

R: Found key default_privs
R: Found key inet_interfaces
R: Found key inet_protocols
R: Found key mydomain
R: Found key relayhost
R: Found key smtp_sasl_auth_enable
R: Found key smtp_sasl_password_maps
R: Found key smtp_sasl_security_options
R: Found key smtp_use_tls

History:

  • [Collecting function][Functions#collecting functions] behavior as of 3.9.0
  • Always returns list as of 3.9.0

See also: getvalues() , [about collecting functions][Functions#collecting functions], and data documentation.