diff --git a/rudder-lang/Makefile b/rudder-lang/Makefile index 0048f0d1fdc..bdad3e0ffd3 100644 --- a/rudder-lang/Makefile +++ b/rudder-lang/Makefile @@ -28,7 +28,7 @@ install: build install -m 644 libs/corelib.rl $(DESTDIR)/opt/rudder/share/rudder-lang/lib/corelib.rl install -m 644 libs/oslib.rl $(DESTDIR)/opt/rudder/share/rudder-lang/lib/oslib.rl install -m 644 libs/cfengine_core.rl $(DESTDIR)/opt/rudder/share/rudder-lang/lib/cfengine_core.rl - # stdlib and meta_generic_methods are generated by generate_lib along with every build so no need to manually cp it + # stdlib is generated by generate_lib along with every build so no need to manually cp it # Python libs cp -r tools/jsondiff $(DESTDIR)/opt/rudder/share/python/ diff --git a/rudder-lang/docs/contributing.adoc b/rudder-lang/docs/contributing.adoc index 61f185653fc..da1c587ecff 100644 --- a/rudder-lang/docs/contributing.adoc +++ b/rudder-lang/docs/contributing.adoc @@ -70,10 +70,7 @@ Contains the exhaustive list of CFEngine reserved words and namespaces that rudd ==== generate_lib -A perl script that generates _rudder-lang_ libraries, calling ncf api. -Files generated are: -- _resourcelib.rl_ -- _translate_config.toml_ +A perl script that generates _resourcelib.rl_ calling ncf api: _rudder-lang_ generic methods library [align=center] image::generate-lib.svg[_rudder-lang-lib generation] diff --git a/rudder-lang/docs/usage.adoc b/rudder-lang/docs/usage.adoc index ebe111783a3..edd0102ba37 100644 --- a/rudder-lang/docs/usage.adoc +++ b/rudder-lang/docs/usage.adoc @@ -38,7 +38,7 @@ FLAGS: OPTIONS: -c, --config-file Path of the configuration file to use. - A configuration file is required (containing at least stdlib and meta_generic_methods paths) + A configuration file is required (containing at least stdlib path) [default: /opt/rudder/etc/rudderc.conf] -f, --format @@ -85,7 +85,6 @@ Entire _rudder-lang_ environment is already set up alongside the agent: this inc ---- [shared] stdlib="libs/" # only required field for rudderc --compile - meta_generic_methods="tools/meta_generic_methods.toml" # required field for rudderc --translate ncf_generic_methods="/usr/share/ncf/tree/30_generic_methods/" dsc_generic_methods="/var/rudder/configuration-repository/dsc/ncf/30_generic_methods/" @@ -167,7 +166,6 @@ By using an adapted configuration file, it can be simplified: ---- [shared] stdlib="libs/" # only required field for rudderc - meta_generic_methods="tools/meta_generic_methods.toml" [compile] source="rl/technique.rl" @@ -193,7 +191,6 @@ rudderc -j -l debug -c tools/myconf -n another.rl -o another_from_rl.rl.dsc ---- [shared] stdlib="libs/" # only required field for rudderc --compile - meta_generic_methods="tools/meta_generic_methods.toml" # required field for rudderc --translate ---- 2. CLI full version @@ -221,7 +218,6 @@ By using an adapted configuration file, it can be simplified: ---- [shared] stdlib="libs/" # only required field for rudderc - meta_generic_methods="tools/meta_generic_methods.toml" [translate] source="json/technique.json" diff --git a/rudder-lang/libs/resourcelib.rl b/rudder-lang/libs/resourcelib.rl index bff7d9cb004..8c46e9abefe 100644 --- a/rudder-lang/libs/resourcelib.rl +++ b/rudder-lang/libs/resourcelib.rl @@ -1,709 +1,1053 @@ @format=0 -resource file(p0) -resource service(p0) -resource user(p0) -resource permissions(p0) +resource variable(p0, p1) resource group(p0) +resource permissions(p0) +resource environment(p0) +resource file(p0) resource condition(p0) -resource sysctl(p0) -resource monitoring(p0) resource package(p0) -resource directory(p0) -resource sharedfile(p0, p1) -resource environment(p0) +resource user(p0) resource http_request(p0, p1) -resource variable(p0, p1) -resource command(p0) +resource sysctl(p0) resource kernel_module(p0) +resource monitoring(p0) +resource service(p0) +resource command(p0) +resource sharedfile(p0, p1) resource schedule(p0) +resource directory(p0) -@class_parameter = {"command"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "command" +@class_prefix = "command_execution" +@supported_formats = ["cf", "dsc"] command state execution() {} -@class_parameter = {"command"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "command" +@class_prefix = "command_execution_once" +@supported_formats = ["cf", "dsc"] command state execution_once(ok_codes, until, unique_id) {} -@class_parameter = {"command"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "command" +@class_prefix = "command_execution_result" +@supported_formats = ["cf", "dsc"] command state execution_result(kept_codes, repaired_codes) {} -@class_parameter = {"condition_prefix"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "condition_prefix" +@class_prefix = "condition_from_command" +@supported_formats = ["cf", "dsc"] condition state from_command(command, true_codes, false_codes) {} -@class_parameter = {"condition_prefix"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "condition_prefix" +@class_prefix = "condition_from_expression" +@supported_formats = ["cf", "dsc"] condition state from_expression(condition_expression) {} -@class_parameter = {"condition_prefix"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "condition_prefix" +@class_prefix = "condition_from_expression_persistent" +@supported_formats = ["cf", "dsc"] condition state from_expression_persistent(condition_expression, duration) {} -@class_parameter = {"condition_prefix"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "condition_prefix" +@class_prefix = "condition_from_variable_existence" +@supported_formats = ["cf", "dsc"] condition state from_variable_existence(variable_name) {} -@class_parameter = {"condition_prefix"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "condition_prefix" +@class_prefix = "condition_from_variable_match" +@supported_formats = ["cf", "dsc"] condition state from_variable_match(variable_name, expected_match) {} -@class_parameter = {"condition"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "condition" +@class_prefix = "condition_once" +@supported_formats = ["cf", "dsc"] condition state once() {} -@class_parameter = {"target"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "target" +@class_prefix = "directory_absent" +@supported_formats = ["cf", "dsc"] directory state absent(recursive) {} -@class_parameter = {"directory_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "directory_name" +@class_prefix = "directory_check_exists" +@supported_formats = ["cf", "dsc"] directory state check_exists() {} -@class_parameter = {"target"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "target" +@class_prefix = "directory_create" +@supported_formats = ["cf", "dsc"] directory state create() {} -@class_parameter = {"target"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "target" +@class_prefix = "directory_present" +@supported_formats = ["cf", "dsc"] directory state present() {} -@class_parameter = {"name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "name" +@class_prefix = "environment_variable_present" +@supported_formats = ["cf", "dsc"] environment state variable_present(value) {} -@class_parameter = {"target"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "target" +@class_prefix = "file_absent" +@supported_formats = ["cf", "dsc"] file state absent() {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "file_augeas_commands" +@supported_formats = ["cf", "dsc"] file state augeas_commands(variable_prefix, commands, autoload) {} -@class_parameter = {"lens"= 2} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 2 +@class_parameter_name = "lens" +@class_prefix = "file_augeas_set" +@supported_formats = ["cf", "dsc"] file state augeas_set(path, value, file) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_block_present" +@supported_formats = ["cf", "dsc"] file state block_present(block) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_block_present_in_section" +@supported_formats = ["cf", "dsc"] file state block_present_in_section(section_start, section_end, block) {} -@class_parameter = {"file_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file_name" +@class_prefix = "file_check_block_device" +@supported_formats = ["cf", "dsc"] file state check_block_device() {} -@class_parameter = {"file_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file_name" +@class_prefix = "file_check_character_device" +@supported_formats = ["cf", "dsc"] file state check_character_device() {} -@class_parameter = {"file_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file_name" +@class_prefix = "file_check_exists" +@supported_formats = ["cf", "dsc"] file state check_exists() {} -@class_parameter = {"file_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file_name" +@class_prefix = "file_check_FIFO_pipe" +@supported_formats = ["cf", "dsc"] file state check_FIFO_pipe() {} -@class_parameter = {"file_name_1"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file_name_1" +@class_prefix = "file_check_hardlink" +@supported_formats = ["cf", "dsc"] file state check_hardlink(file_name_2) {} -@class_parameter = {"file_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file_name" +@class_prefix = "file_check_regular" +@supported_formats = ["cf", "dsc"] file state check_regular() {} -@class_parameter = {"file_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file_name" +@class_prefix = "file_check_socket" +@supported_formats = ["cf", "dsc"] file state check_socket() {} -@class_parameter = {"file_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file_name" +@class_prefix = "file_check_symlink" +@supported_formats = ["cf", "dsc"] file state check_symlink() {} -@class_parameter = {"symlink"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "symlink" +@class_prefix = "file_check_symlinkto" +@supported_formats = ["cf", "dsc"] file state check_symlinkto(target) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_lines_present" +@supported_formats = ["cf", "dsc"] file state content(lines, enforce) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_copy_from_local_source" +@supported_formats = ["cf", "dsc"] file state copy_from_local_source(source) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_copy_from_local_source" +@supported_formats = ["cf", "dsc"] file state copy_from_local_source_recursion(source, recursion) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_copy_from_local_source_with_check" +@supported_formats = ["cf", "dsc"] file state copy_from_local_source_with_check(source, check_command, rc_ok) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_copy_from_remote_source" +@supported_formats = ["cf", "dsc"] file state copy_from_remote_source(source) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_copy_from_remote_source" +@supported_formats = ["cf", "dsc"] file state copy_from_remote_source_recursion(source, recursion) {} -@class_parameter = {"target"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "target" +@class_prefix = "file_create" +@supported_formats = ["cf", "dsc"] file state create() {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_create_symlink" +@supported_formats = ["cf", "dsc"] file state create_symlink(source) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_create_symlink" +@supported_formats = ["cf", "dsc"] file state create_symlink_enforce(source, enforce) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_create_symlink" +@supported_formats = ["cf", "dsc"] file state create_symlink_force(source) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_download" +@supported_formats = ["cf", "dsc"] file state download(source) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_ensure_lines_present" +@supported_formats = ["cf", "dsc"] file state enforce_content(lines, enforce) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_ensure_block_in_section" +@supported_formats = ["cf", "dsc"] file state ensure_block_in_section(section_start, section_end, block) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_ensure_block_present" +@supported_formats = ["cf", "dsc"] file state ensure_block_present(block) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_ensure_key_value" +@supported_formats = ["cf", "dsc"] file state ensure_key_value(key, value, separator) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_ensure_key_value" +@supported_formats = ["cf", "dsc"] file state ensure_key_value_option(key, value, option, separator) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_ensure_key_value_parameter_in_list" +@supported_formats = ["cf", "dsc"] file state ensure_key_value_parameter_in_list(key, key_value_separator, parameter, parameter_separator, leading_char_separator, closing_char_separator) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_ensure_key_value_parameter_not_in_list" +@supported_formats = ["cf", "dsc"] file state ensure_key_value_parameter_not_in_list(key, key_value_separator, parameter_regex, parameter_separator, leading_char_separator, closing_char_separator) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_ensure_key_value_present_in_ini_section" +@supported_formats = ["cf", "dsc"] file state ensure_key_value_present_in_ini_section(section, name, value) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_ensure_keys_values" +@supported_formats = ["cf", "dsc"] file state ensure_keys_values(keys, separator) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_ensure_line_present_in_ini_section" +@supported_formats = ["cf", "dsc"] file state ensure_line_present_in_ini_section(section, line) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_ensure_line_present_in_xml_tag" +@supported_formats = ["cf", "dsc"] file state ensure_line_present_in_xml_tag(tag, line) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_ensure_lines_absent" +@supported_formats = ["cf", "dsc"] file state ensure_lines_absent(lines) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_ensure_lines_present" +@supported_formats = ["cf", "dsc"] file state ensure_lines_present(lines) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_from_http_server" +@supported_formats = ["cf", "dsc"] file state from_http_server(source) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_from_local_source" +@supported_formats = ["cf", "dsc"] file state from_local_source(source) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_from_local_source" +@supported_formats = ["cf", "dsc"] file state from_local_source_recursion(source, recursion) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_from_local_source_with_check" +@supported_formats = ["cf", "dsc"] file state from_local_source_with_check(source, check_command, rc_ok) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_from_remote_source" +@supported_formats = ["cf", "dsc"] file state from_remote_source(source) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_from_remote_source" +@supported_formats = ["cf", "dsc"] file state from_remote_source_recursion(source, recursion) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_from_shared_folder" +@supported_formats = ["cf", "dsc"] file state from_shared_folder(source, hash_type) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_from_string_mustache" +@supported_formats = ["cf", "dsc"] file state from_string_mustache(template) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_from_template" +@supported_formats = ["cf", "dsc"] file state from_template(source_template) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_from_template" +@supported_formats = ["cf", "dsc"] file state from_template_jinja2(source_template) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_from_template" +@supported_formats = ["cf", "dsc"] file state from_template_mustache(source_template) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_from_template" +@supported_formats = ["cf", "dsc"] file state from_template_type(source_template, template_type) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_key_value_parameter_absent_in_list" +@supported_formats = ["cf", "dsc"] file state key_value_parameter_absent_in_list(key, key_value_separator, parameter_regex, parameter_separator, leading_char_separator, closing_char_separator) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_key_value_parameter_present_in_list" +@supported_formats = ["cf", "dsc"] file state key_value_parameter_present_in_list(key, key_value_separator, parameter, parameter_separator, leading_char_separator, closing_char_separator) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_key_value_present" +@supported_formats = ["cf", "dsc"] file state key_value_present(key, value, separator) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_key_value_present_in_ini_section" +@supported_formats = ["cf", "dsc"] file state key_value_present_in_ini_section(section, name, value) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_key_value_present" +@supported_formats = ["cf", "dsc"] file state key_value_present_option(key, value, separator, option) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_keys_values_present" +@supported_formats = ["cf", "dsc"] file state keys_values_present(keys, separator) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_line_present_in_ini_section" +@supported_formats = ["cf", "dsc"] file state line_present_in_ini_section(section, line) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_line_present_in_xml_tag" +@supported_formats = ["cf", "dsc"] file state line_present_in_xml_tag(tag, line) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_lines_absent" +@supported_formats = ["cf", "dsc"] file state lines_absent(lines) {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_lines_present" +@supported_formats = ["cf", "dsc"] file state lines_present(lines) {} -@class_parameter = {"target"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "target" +@class_prefix = "file_present" +@supported_formats = ["cf", "dsc"] file state present() {} -@class_parameter = {"target"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "target" +@class_prefix = "file_remove" +@supported_formats = ["cf", "dsc"] file state remove() {} -@class_parameter = {"file"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "file" +@class_prefix = "file_replace_lines" +@supported_formats = ["cf", "dsc"] file state replace_lines(line, replacement) {} -@class_parameter = {"target"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "target" +@class_prefix = "file_report_content" +@supported_formats = ["cf", "dsc"] file state report_content(regex, context) {} -@class_parameter = {"target"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "target" +@class_prefix = "file_report_content_head" +@supported_formats = ["cf", "dsc"] file state report_content_head(limit) {} -@class_parameter = {"target"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "target" +@class_prefix = "file_report_content_tail" +@supported_formats = ["cf", "dsc"] file state report_content_tail(limit) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_symlink_present" +@supported_formats = ["cf", "dsc"] file state symlink_present(source) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_symlink_present" +@supported_formats = ["cf", "dsc"] file state symlink_present_force(source) {} -@class_parameter = {"destination"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "destination" +@class_prefix = "file_symlink_present" +@supported_formats = ["cf", "dsc"] file state symlink_present_option(source, enforce) {} -@class_parameter = {"target_file"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "target_file" +@class_prefix = "file_template_expand" +@supported_formats = ["cf", "dsc"] file state template_expand(tml_file, mode, owner, group) {} -@class_parameter = {"group"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "group" +@class_prefix = "group_absent" +@supported_formats = ["cf", "dsc"] group state absent() {} -@class_parameter = {"group"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "group" +@class_prefix = "group_present" +@supported_formats = ["cf", "dsc"] group state present() {} -@class_parameter = {"url"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "url" +@class_prefix = "http_request_check_status_headers" +@supported_formats = ["cf", "dsc"] http_request state check_status_headers(method, expected_status, headers) {} -@class_parameter = {"url"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "url" +@class_prefix = "http_request_content_headers" +@supported_formats = ["cf", "dsc"] http_request state content_headers(method, content, headers) {} -@class_parameter = {"module_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "module_name" +@class_prefix = "kernel_module_configuration" +@supported_formats = ["cf", "dsc"] kernel_module state configuration(configuration) {} -@class_parameter = {"module_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "module_name" +@class_prefix = "kernel_module_enabled_at_boot" +@supported_formats = ["cf", "dsc"] kernel_module state enabled_at_boot() {} -@class_parameter = {"module_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "module_name" +@class_prefix = "kernel_module_loaded" +@supported_formats = ["cf", "dsc"] kernel_module state loaded() {} -@class_parameter = {"module_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "module_name" +@class_prefix = "kernel_module_not_loaded" +@supported_formats = ["cf", "dsc"] kernel_module state not_loaded() {} -@class_parameter = {"key"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "key" +@class_prefix = "monitoring_parameter" +@supported_formats = ["cf", "dsc"] monitoring state parameter(value) {} -@class_parameter = {"template"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "template" +@class_prefix = "monitoring_template" +@supported_formats = ["cf", "dsc"] monitoring state template() {} -@class_parameter = {"name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "name" +@class_prefix = "package_absent" +@supported_formats = ["cf", "dsc"] package state absent(version, architecture, provider) {} -@class_parameter = {"package_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "package_name" +@class_prefix = "package_check_installed" +@supported_formats = ["cf", "dsc"] package state check_installed() {} -@class_parameter = {"package_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "package_name" +@class_prefix = "package_install" +@supported_formats = ["cf", "dsc"] package state install() {} -@class_parameter = {"package_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "package_name" +@class_prefix = "package_install" +@supported_formats = ["cf", "dsc"] package state install_version(package_version) {} -@class_parameter = {"package_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "package_name" +@class_prefix = "package_install" +@supported_formats = ["cf", "dsc"] package state install_version_cmp(version_comparator, package_version, action) {} -@class_parameter = {"package_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "package_name" +@class_prefix = "package_install" +@supported_formats = ["cf", "dsc"] package state install_version_cmp_update(version_comparator, package_version, action, update_policy) {} -@class_parameter = {"name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "name" +@class_prefix = "package_present" +@supported_formats = ["cf", "dsc"] package state present(version, architecture, provider) {} -@class_parameter = {"package_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "package_name" +@class_prefix = "package_remove" +@supported_formats = ["cf", "dsc"] package state remove() {} -@class_parameter = {"name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "name" +@class_prefix = "package_state" +@supported_formats = ["cf", "dsc"] package state state(version, architecture, provider, state) {} -@class_parameter = {"name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "name" +@class_prefix = "package_state_options" +@supported_formats = ["cf", "dsc"] package state state_options(version, architecture, provider, state, options) {} -@class_parameter = {"package_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "package_name" +@class_prefix = "package_install" +@supported_formats = ["cf", "dsc"] package state verify() {} -@class_parameter = {"package_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "package_name" +@class_prefix = "package_install" +@supported_formats = ["cf", "dsc"] package state verify_version(package_version) {} -@class_parameter = {"path"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "path" +@class_prefix = "permissions_acl_entry" +@supported_formats = ["cf", "dsc"] permissions state acl_entry(recursive, user, group, other) {} -@class_parameter = {"path"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "path" +@class_prefix = "permissions" +@supported_formats = ["cf", "dsc"] permissions state dirs(mode, owner, group) {} -@class_parameter = {"path"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "path" +@class_prefix = "permissions" +@supported_formats = ["cf", "dsc"] permissions state dirs_recurse(mode, owner, group) {} -@class_parameter = {"path"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "path" +@class_prefix = "permissions" +@supported_formats = ["cf", "dsc"] permissions state dirs_recursive(mode, owner, group) {} -@class_parameter = {"path"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "path" +@class_prefix = "permissions_group_acl_absent" +@supported_formats = ["cf", "dsc"] permissions state group_acl_absent(recursive, group) {} -@class_parameter = {"path"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "path" +@class_prefix = "permissions_group_acl_present" +@supported_formats = ["cf", "dsc"] permissions state group_acl_present(recursive, group, ace) {} -@class_parameter = {"path"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "path" +@class_prefix = "permissions_other_acl_present" +@supported_formats = ["cf", "dsc"] permissions state other_acl_present(recursive, other) {} -@class_parameter = {"path"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "path" +@class_prefix = "permissions_posix_acls_absent" +@supported_formats = ["cf", "dsc"] permissions state posix_acls_absent(recursive) {} -@class_parameter = {"path"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "path" +@class_prefix = "permissions" +@supported_formats = ["cf", "dsc"] permissions state recurse(mode, owner, group) {} -@class_parameter = {"path"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "path" +@class_prefix = "permissions" +@supported_formats = ["cf", "dsc"] permissions state recursive(mode, owner, group) {} -@class_parameter = {"path"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "path" +@class_prefix = "permissions" +@supported_formats = ["cf", "dsc"] permissions state type_recursion(mode, owner, group, type, recursion) {} -@class_parameter = {"path"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "path" +@class_prefix = "permissions_user_acl_absent" +@supported_formats = ["cf", "dsc"] permissions state user_acl_absent(recursive, user) {} -@class_parameter = {"path"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "path" +@class_prefix = "permissions_user_acl_present" +@supported_formats = ["cf", "dsc"] permissions state user_acl_present(recursive, user, ace) {} -@class_parameter = {"job_id"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "job_id" +@class_prefix = "schedule_simple" +@supported_formats = ["cf", "dsc"] schedule state simple(agent_periodicity, max_execution_delay_minutes, max_execution_delay_hours, start_on_minutes, start_on_hours, start_on_day_of_week, periodicity_minutes, periodicity_hours, periodicity_days, mode) {} -@class_parameter = {"job_id"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "job_id" +@class_prefix = "schedule_simple" +@supported_formats = ["cf", "dsc"] schedule state simple_catchup(agent_periodicity, max_execution_delay_minutes, max_execution_delay_hours, start_on_minutes, start_on_hours, start_on_day_of_week, periodicity_minutes, periodicity_hours, periodicity_days) {} -@class_parameter = {"job_id"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "job_id" +@class_prefix = "schedule_simple" +@supported_formats = ["cf", "dsc"] schedule state simple_nodups(agent_periodicity, max_execution_delay_minutes, max_execution_delay_hours, start_on_minutes, start_on_hours, start_on_day_of_week, periodicity_minutes, periodicity_hours, periodicity_days) {} -@class_parameter = {"job_id"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "job_id" +@class_prefix = "schedule_simple" +@supported_formats = ["cf", "dsc"] schedule state simple_stateless(agent_periodicity, max_execution_delay_minutes, max_execution_delay_hours, start_on_minutes, start_on_hours, start_on_day_of_week, periodicity_minutes, periodicity_hours, periodicity_days) {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_action" +@supported_formats = ["cf", "dsc"] service state action(action) {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_check_disabled_at_boot" +@supported_formats = ["cf", "dsc"] service state check_disabled_at_boot() {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_check_running" +@supported_formats = ["cf", "dsc"] service state check_running() {} -@class_parameter = {"service_regex"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_regex" +@class_prefix = "service_check_running" +@supported_formats = ["cf", "dsc"] service state check_running_ps() {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_check_started_at_boot" +@supported_formats = ["cf", "dsc"] service state check_started_at_boot() {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_disabled" +@supported_formats = ["cf", "dsc"] service state disabled() {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_enabled" +@supported_formats = ["cf", "dsc"] service state enabled() {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_ensure_disabled_at_boot" +@supported_formats = ["cf", "dsc"] service state ensure_disabled_at_boot() {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_ensure_running" +@supported_formats = ["cf", "dsc"] service state ensure_running() {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_ensure_running" +@supported_formats = ["cf", "dsc"] service state ensure_running_path(service_path) {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_ensure_started_at_boot" +@supported_formats = ["cf", "dsc"] service state ensure_started_at_boot() {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_ensure_stopped" +@supported_formats = ["cf", "dsc"] service state ensure_stopped() {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_reload" +@supported_formats = ["cf", "dsc"] service state reload() {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_restart" +@supported_formats = ["cf", "dsc"] service state restart() {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_restart" +@supported_formats = ["cf", "dsc"] service state restart_if(trigger_class) {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_start" +@supported_formats = ["cf", "dsc"] service state start() {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_started" +@supported_formats = ["cf", "dsc"] service state started() {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_started" +@supported_formats = ["cf", "dsc"] service state started_path(service_path) {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_stop" +@supported_formats = ["cf", "dsc"] service state stop() {} -@class_parameter = {"service_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "service_name" +@class_prefix = "service_stopped" +@supported_formats = ["cf", "dsc"] service state stopped() {} -@class_parameter = {"file_id"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "file_id" +@class_prefix = "sharedfile_from_node" +@supported_formats = ["cf", "dsc"] sharedfile state from_node(source_uuid, file_path) {} -@class_parameter = {"file_id"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "file_id" +@class_prefix = "sharedfile_to_node" +@supported_formats = ["cf", "dsc"] sharedfile state to_node(target_uuid, file_path, ttl) {} -@class_parameter = {"key"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "key" +@class_prefix = "sysctl_value" +@supported_formats = ["cf", "dsc"] sysctl state value(value, filename, option) {} -@class_parameter = {"login"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "login" +@class_prefix = "user_absent" +@supported_formats = ["cf", "dsc"] user state absent() {} -@class_parameter = {"login"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "login" +@class_prefix = "user_create" +@supported_formats = ["cf", "dsc"] user state create(description, home, group, shell, locked) {} -@class_parameter = {"login"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "login" +@class_prefix = "user_fullname" +@supported_formats = ["cf", "dsc"] user state fullname(fullname) {} -@class_parameter = {"user"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "user" +@class_prefix = "user_group" +@supported_formats = ["cf", "dsc"] user state group(group_name) {} -@class_parameter = {"login"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "login" +@class_prefix = "user_home" +@supported_formats = ["cf", "dsc"] user state home(home) {} -@class_parameter = {"login"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "login" +@class_prefix = "user_locked" +@supported_formats = ["cf", "dsc"] user state locked() {} -@class_parameter = {"login"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "login" +@class_prefix = "user_password_hash" +@supported_formats = ["cf", "dsc"] user state password_hash(password) {} -@class_parameter = {"login"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "login" +@class_prefix = "user_present" +@supported_formats = ["cf", "dsc"] user state present() {} -@class_parameter = {"login"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "login" +@class_prefix = "user_primary_group" +@supported_formats = ["cf", "dsc"] user state primary_group(primary_group) {} -@class_parameter = {"login"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "login" +@class_prefix = "user_shell" +@supported_formats = ["cf", "dsc"] user state shell(shell) {} -@class_parameter = {"login"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "login" +@class_prefix = "user_uid" +@supported_formats = ["cf", "dsc"] user state uid(uid) {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "variable_dict" +@supported_formats = ["cf", "dsc"] variable state dict(variable_prefix, value) {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "variable_dict_from_file" +@supported_formats = ["cf", "dsc"] variable state dict_from_file(variable_prefix, file_name) {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "variable_dict_from_file_type" +@supported_formats = ["cf", "dsc"] variable state dict_from_file_type(variable_prefix, file_name, file_type) {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "variable_dict_from_osquery" +@supported_formats = ["cf", "dsc"] variable state dict_from_osquery(variable_prefix, query) {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "variable_dict_merge" +@supported_formats = ["cf", "dsc"] variable state dict_merge(variable_prefix, first_variable, second_variable) {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "variable_dict_merge_tolerant" +@supported_formats = ["cf", "dsc"] variable state dict_merge_tolerant(variable_prefix, first_variable, second_variable) {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "variable_iterator" +@supported_formats = ["cf", "dsc"] variable state iterator(variable_prefix, value, separator) {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "variable_iterator_from_file" +@supported_formats = ["cf", "dsc"] variable state iterator_from_file(variable_prefix, file_name, separator_regex, comments_regex) {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "variable_string" +@supported_formats = ["cf", "dsc"] variable state string(variable_prefix, value) {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "variable_string_default" +@supported_formats = ["cf", "dsc"] variable state string_default(variable_prefix, source_variable, default_value) {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "variable_string_from_augeas" +@supported_formats = ["cf", "dsc"] variable state string_from_augeas(variable_prefix, path, lens, file) {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "variable_string_from_command" +@supported_formats = ["cf", "dsc"] variable state string_from_command(variable_prefix, command) {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "variable_string_from_file" +@supported_formats = ["cf", "dsc"] variable state string_from_file(variable_prefix, file_name) {} -@class_parameter = {"variable_name"= 1} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 1 +@class_parameter_name = "variable_name" +@class_prefix = "variable_string_from_math_expression" +@supported_formats = ["cf", "dsc"] variable state string_from_math_expression(variable_prefix, expression, format) {} -@class_parameter = {"variable_name"= 0} -@supported_formats = ["cf", "dsc"] +@class_parameter_index = 0 +@class_parameter_name = "variable_name" +@class_prefix = "variable_string_match" +@supported_formats = ["cf", "dsc"] variable state string_match(expected_match) {} diff --git a/rudder-lang/src/compile.rs b/rudder-lang/src/compile.rs index 349f1c813e9..26698c35422 100644 --- a/rudder-lang/src/compile.rs +++ b/rudder-lang/src/compile.rs @@ -106,5 +106,5 @@ pub fn compile_file(ctx: &IOContext, technique: bool) -> Result<()> { (None, None) }; let mut generator = new_generator(&ctx.format)?; - generator.generate(&ast, input_file, output_file, &ctx.meta_gm, technique) + generator.generate(&ast, input_file, output_file, technique) } diff --git a/rudder-lang/src/generators.rs b/rudder-lang/src/generators.rs index 6ab32cebc20..29f7410e23f 100644 --- a/rudder-lang/src/generators.rs +++ b/rudder-lang/src/generators.rs @@ -19,7 +19,6 @@ pub trait Generator { gc: &AST, source_file: Option<&Path>, dest_file: Option<&Path>, - generic_methods: &Path, technique_metadata: bool, ) -> Result<()>; } diff --git a/rudder-lang/src/generators/cfengine.rs b/rudder-lang/src/generators/cfengine.rs index 85c0d1e3d97..1fbc06acc39 100644 --- a/rudder-lang/src/generators/cfengine.rs +++ b/rudder-lang/src/generators/cfengine.rs @@ -278,7 +278,6 @@ impl Generator for CFEngine { gc: &AST, source_file: Option<&Path>, dest_file: Option<&Path>, - _meta_gm: &Path, policy_metadata: bool, ) -> Result<()> { let mut files: HashMap = HashMap::new(); diff --git a/rudder-lang/src/generators/dsc.rs b/rudder-lang/src/generators/dsc.rs index c0eb4b11236..1bfebd53c13 100644 --- a/rudder-lang/src/generators/dsc.rs +++ b/rudder-lang/src/generators/dsc.rs @@ -494,7 +494,6 @@ impl Generator for DSC { gc: &AST, source_file: Option<&Path>, dest_file: Option<&Path>, - _generic_methods: &Path, technique_metadata: bool, ) -> Result<()> { let mut files: HashMap = HashMap::new(); diff --git a/rudder-lang/src/io.rs b/rudder-lang/src/io.rs index 447723a80a8..f90c57b5682 100644 --- a/rudder-lang/src/io.rs +++ b/rudder-lang/src/io.rs @@ -20,7 +20,6 @@ struct ActionConfig { #[derive(Clone, Debug, Deserialize)] struct LibsConfig { stdlib: PathBuf, - meta_generic_methods: PathBuf, } // deserialized config file main struct @@ -36,7 +35,6 @@ struct Config { #[derive(Clone, Debug)] pub struct IOContext { pub stdlib: PathBuf, - pub meta_gm: PathBuf, pub source: PathBuf, pub dest: PathBuf, pub mode: Action, @@ -48,13 +46,12 @@ impl fmt::Display for IOContext { f, "{}", &format!( - "{} of {:?} into {:?}. Format used is {}. Libraries and meta_generic_methods paths: {:?}, {:?}.", + "{} of {:?} into {:?}. Format used is {}. Libraries path: {:?}.", self.mode, self.source, self.dest, self.format, self.stdlib, - self.meta_gm, ) ) } @@ -217,7 +214,6 @@ pub fn get(action: Action, opt: &IOOpt) -> Result { Ok(IOContext { stdlib: config.libs.stdlib.clone(), - meta_gm: config.libs.meta_generic_methods, source: get_source(&action_config, opt)?, dest, mode: action_config.action.unwrap(), // always Either Compile or Translate, set in get_opt_action_mode diff --git a/rudder-lang/src/translate.rs b/rudder-lang/src/translate.rs index bdfb12c0e70..0b354331f74 100644 --- a/rudder-lang/src/translate.rs +++ b/rudder-lang/src/translate.rs @@ -62,7 +62,6 @@ impl Parameter { pub fn translate_file(context: &IOContext) -> Result<()> { let input_path = context.source.to_string_lossy(); let output_path = context.dest.to_string_lossy(); - let meta_gm_path = context.meta_gm.to_str().unwrap(); let file_error = |filename: &str, err| err!(Token::new(&filename.to_owned(), ""), "{}", err); info!( @@ -72,15 +71,6 @@ pub fn translate_file(context: &IOContext) -> Result<()> { output_path.bright_yellow() ); - info!( - "|- {} {}", - "Reading".bright_green(), - meta_gm_path.bright_yellow() - ); - let config_data = fs::read_to_string(meta_gm_path).map_err(|e| file_error(meta_gm_path, e))?; - let configuration: toml::Value = - toml::from_str(&config_data).map_err(|e| err!(Token::new(meta_gm_path, ""), "{}", e))?; - info!("|- {}", "Reading stdlib".bright_green()); let sources = Arena::new(); let mut past = PAST::new(); @@ -110,11 +100,7 @@ pub fn translate_file(context: &IOContext) -> Result<()> { "|- {} (translation phase)", "Generating output code".bright_green() ); - let translator = Translator { - stdlib, - technique, - configuration, - }; + let translator = Translator { stdlib, technique }; let rl_technique = translator.translate()?; fs::write(&context.dest, rl_technique).map_err(|e| file_error(&output_path, e))?; Ok(()) @@ -123,7 +109,6 @@ pub fn translate_file(context: &IOContext) -> Result<()> { struct Translator<'src> { stdlib: AST<'src>, technique: Technique, - configuration: toml::Value, } impl<'src> Translator<'src> { @@ -164,32 +149,33 @@ resource {bundle_name}({parameter_list}) Ok(out) } - fn get_method_from_stdlib(&self, method_name: &str) -> Option<(String, String)> { - let matched_pairs: Vec<(&str, &str)> = self + fn get_resource_state_from_method(&self, method_name: &str) -> Result<(&Token, &Token)> { + let matched_pairs: Vec<(&Token, &Token)> = self .stdlib .resources .iter() .filter_map(|(res_as_tk, resdef)| { if method_name.starts_with(**res_as_tk) { - let matched_pairs = resdef - .states - .iter() - .filter_map(|(state_as_tk, _)| { - if *method_name == format!("{}_{}", **res_as_tk, **state_as_tk) { - return Some((**res_as_tk, **state_as_tk)); - } - None - }) - .collect::>(); - return Some(matched_pairs); + return Some( + resdef + .states + .iter() + .filter_map(|(state_as_tk, _)| { + if method_name == format!("{}_{}", **res_as_tk, **state_as_tk) { + return Some((res_as_tk, state_as_tk)); + } + None + }) + .collect::>() + ) } None }) .flatten() .collect(); match matched_pairs.as_slice() { - [] => None, - [(resource, state)] => Some(((*resource).to_owned(), (*state).to_owned())), + [] => Err(Error::new(format!("Method '{}' does not exist", method_name))), + [(resource, state)] => Ok((*resource, *state)), _ => panic!(format!( "The standard library contains several matches for the following method: {}", method_name @@ -197,6 +183,41 @@ resource {bundle_name}({parameter_list}) } } + + fn extract_method_data(&self, resource: &Token, state: &Token) -> (String, usize, usize) { + // safe unwraps because we previously itered on this very same method in self.get_resource_state_from_method + let resource_definition = self + .stdlib + .resources + .get(resource) + .unwrap(); + + let param_len = resource_definition.parameters.len(); + + let metadatas = &resource_definition + .states + .get(state) + .unwrap() + .metadata; + + // safe unwrap because we generate the resourcelib ourselves, if an error occurs, panic is justified, it is a developer issue + let param_index = metadatas + .get("class_parameter_index") + .expect(&format!("Resource '{}': missing 'class_parameter_index' metadata", **resource)) + .as_integer() + .expect(&format!("Resource '{}': 'class_parameter_index' metadata value is not an integer", **resource)) + as usize; + + let class_prefix = metadatas + .get("class_prefix") + .expect(&format!("Resource '{}': missing 'class_prefix' metadata", **resource)) + .as_str() + .expect(&format!("Resource '{}': 'class_prefix' metadata value is not a string", **resource)) + .to_owned(); + + (class_prefix, param_len, param_index) + } + fn translate_params(&self, params: I, template_vars: &mut Vec) -> Result where I: Iterator, @@ -222,45 +243,18 @@ resource {bundle_name}({parameter_list}) } fn translate_call(&self, call: &MethodCall) -> Result { - let (resource, state) = match self.get_method_from_stdlib(&call.method_name) { - Some(res) => res, - None => { - return Err(Error::new(format!( - "Invalid method name '{}'", - call.method_name - ))) - } - }; - - // split argument list - let rconf = match self.configuration.get("resources") { - None => return Err(Error::new("No resources section in config.toml".into())), - Some(m) => m, - }; - let res_arg_v = match rconf.get(&resource) { - None => toml::value::Value::Integer(1), - Some(r) => r.clone(), - }; - - let res_arg_count: usize = match res_arg_v.as_integer() { - None => { - return Err(Error::new(format!( - "Resource prefix '{}' must have a number as its parameter count", - &resource - ))) - } - Some(v) => v as usize, - }; + let (resource, state) = self.get_resource_state_from_method(&call.method_name)?; + let (class_prefix, class_param_count, class_param_index, ) = self.extract_method_data(resource, state); let it = &mut call.parameters.iter(); let mut template_vars = Vec::new(); - let res_args = self.translate_params(it.take(res_arg_count), &mut template_vars)?; // automatically takes the first rather than getting the right resource param index + let res_args = self.translate_params(it.take(class_param_count), &mut template_vars)?; // automatically takes the first rather than getting the right resource param index let st_args = self.translate_params(it, &mut template_vars)?; // empty string purpose: add an ending newline when joined into a string template_vars.push(String::new()); // call formating - let call_str = format!("{}({}).{}({})", &resource, res_args, &state, st_args); + let call_str = format!("{}({}).{}({})", **resource, res_args, **state, st_args); let out_state = if call.class_context == "any" { format!(" {}", call_str) } else { @@ -268,39 +262,7 @@ resource {bundle_name}({parameter_list}) format!(" if {} => {}", condition, call_str) }; - // outcome detection and formating - let mconf = match self.configuration.get("methods") { - None => return Err(Error::new("No methods section in config.toml".into())), - Some(m) => m, - }; - let method = match mconf.get(&call.method_name) { - None => { - return Err(Error::new(format!( - "Unknown generic method call: {}", - &call.method_name - ))) - } - Some(m) => m, - }; - let class_prefix = match method.get("class_prefix") { - None => { - return Err(Error::new(format!( - "Undefined class_prefix for {}", - &call.method_name - ))) - } - Some(m) => m.as_str().unwrap(), - }; - let class_parameter_id = match method.get("class_parameter_id") { - None => { - return Err(Error::new(format!( - "Undefined class_parameter_id for {}", - &call.method_name - ))) - } - Some(m) => m.as_integer().unwrap(), - }; - let class_parameter = &call.parameters[class_parameter_id as usize]; + let class_parameter = &call.parameters[class_param_index]; let canonic_parameter = canonify(&class_parameter.value); let outcome = format!(" as {}_{}", class_prefix, canonic_parameter); // TODO remove outcome if there is no usage diff --git a/rudder-lang/tests/helpers/cis.rl b/rudder-lang/tests/helpers/cis.rl index 0c41b03eb07..f7ff215445b 100644 --- a/rudder-lang/tests/helpers/cis.rl +++ b/rudder-lang/tests/helpers/cis.rl @@ -8,6 +8,7 @@ ] resource CIS_redhat7___Enable_Service(service) + CIS_redhat7___Enable_Service state technique() { p0="skip_item_${report_data.canonified_directive_id}" p1="node.properties[skip][${report_data.directive_id}]" diff --git a/rudder-lang/tests/techniques/condition_andor/technique.rl.cf b/rudder-lang/tests/techniques/condition_andor/technique.rl.cf index 50d490bd794..06a80524de2 100644 --- a/rudder-lang/tests/techniques/condition_andor/technique.rl.cf +++ b/rudder-lang/tests/techniques/condition_andor/technique.rl.cf @@ -1,15 +1,28 @@ -# generated by rudder-lang +# generated by rudderc # @name condition andor -# @description Kernel simplest # @version 1.0 -bundle agent condition_andor_technique -{ +bundle agent condition_andor_technique { + vars: - "resources_dir" string => "${this.promise_dirname}/resources"; + "resources_dir" string => "${this.promise_dirname}/resources"; + "args" slist => {}; + "report_param" string => join("_", args); + "full_class_prefix" string => canonify("condition_andor_technique_${report_param}"); + "class_prefix" string => string_head("${full_class_prefix}", "1000"); + methods: - "Kernel module loaded_${report_data.directive_id}_0" usebundle => _method_reporting_context("Kernel module loaded", "test"), - if => concat("debian|linux|ubuntu.windows|linux.ubuntu"); - "Kernel module loaded_${report_data.directive_id}_0" usebundle => kernel_module_loaded("test"), - if => concat("debian|linux|ubuntu.windows|linux.ubuntu"); -} + # Kernel module loaded: + # + # kernel_module("test").loaded() as kernel_module_loaded_test + # + "${report_data.directive_id}_0" usebundle => _method_reporting_context("Kernel module loaded", "test"), + if => concat("debian|linux|ubuntu.windows|linux.ubuntu"); + "${report_data.directive_id}_0" usebundle => kernel_module_loaded("test"), + if => concat("debian|linux|ubuntu.windows|linux.ubuntu"); + "${report_data.directive_id}_0" usebundle => _classes_noop(canonify("${class_prefix}_kernel_module_loaded_test")), + unless => concat("debian|linux|ubuntu.windows|linux.ubuntu"); + "${report_data.directive_id}_0" usebundle => log_rudder("Skipping method 'Kernel module loaded' with key parameter 'test' since condition 'debian|linux|ubuntu.windows|linux.ubuntu' is not reached", "test", canonify("${class_prefix}_kernel_module_loaded_test"), canonify("${class_prefix}_kernel_module_loaded_test"), @{args}), + unless => concat("debian|linux|ubuntu.windows|linux.ubuntu"); + +} \ No newline at end of file diff --git a/rudder-lang/tests/utils/mod.rs b/rudder-lang/tests/utils/mod.rs index 00a7c004806..fcd800dae1f 100644 --- a/rudder-lang/tests/utils/mod.rs +++ b/rudder-lang/tests/utils/mod.rs @@ -70,7 +70,6 @@ fn compile_file( ) -> Result<(), String> { let io = rudderc::io::IOContext { stdlib: PathBuf::from("libs/"), - meta_gm: PathBuf::from("tools/meta_generic_methods.toml"), source: source.to_path_buf(), dest: dest.to_path_buf(), mode: Action::Compile, diff --git a/rudder-lang/tools/generate_lib b/rudder-lang/tools/generate_lib index 08cc41324f7..f732318a42a 100755 --- a/rudder-lang/tools/generate_lib +++ b/rudder-lang/tools/generate_lib @@ -10,7 +10,6 @@ sub get_paths_from_conf_file { my $ncf_gm_path = "/usr/share/ncf/tree/30_generic_methods/"; my $dsc_gm_path = "/var/rudder/configuration-repository/dsc/ncf/30_generic_methods/"; my $resourcelib_path = "/opt/rudder/share/rudder-lang/lib"; - my $meta_gm = "/opt/rudder/share/rudder-lang/tools/meta_generic_methods.toml"; open (FILE, $file); while () { chomp; @@ -23,9 +22,6 @@ sub get_paths_from_conf_file { if ($is_default == 1 && /^\s*stdlib\s*=\s*"(?[\-\w\/.]+)"/ ) { $resourcelib_path = $+{path}; } - if ($is_default == 1 && /^\s*meta_generic_methods\s*=\s*"(?[\-\w\/.]+)"/ ) { - $meta_gm = $+{path}; - } if ( /^\s*\[\s*(?\w+)\s*\]\s*$/ ) { if ($+{group} eq "shared") { $is_default = 1; @@ -35,18 +31,17 @@ sub get_paths_from_conf_file { } } close (FILE); - return ($ncf_gm_path, $dsc_gm_path, $resourcelib_path, $meta_gm); + return ($ncf_gm_path, $dsc_gm_path, $resourcelib_path); } my %resource = (); my @state = (); -my @config_lines= (); my $cfgpath = "/opt/rudder/etc/rudderc.conf"; if (@ARGV) { ($cfgpath) = @ARGV; } -my ($ncf_gm_path, $dsc_gm_path, $resourcelib_path, $meta_gm) = get_paths_from_conf_file $cfgpath; +my ($ncf_gm_path, $dsc_gm_path, $resourcelib_path) = get_paths_from_conf_file $cfgpath; # ultralight homemade parser NCF generic methods my $ncf_methods = $ncf_gm_path . "/*"; @@ -70,7 +65,7 @@ foreach my $file (glob $ncf_methods) { # init data my $i=0; - my ($resource, $state, $prefix, $class_parameter) = ("", "", "", -1); + my ($resource, $state, $prefix, $class_parameter_name, $class_parameter_index) = ("", "", "", -1); my $generic_method = ""; my @params; my @supported_formats = (); @@ -93,9 +88,9 @@ foreach my $file (glob $ncf_methods) { $prefix = $1; } elsif($line =~ /^#.*\@class_parameter\s+(\w+)/) { - $class_parameter = $param_id{$1}; - splice @params, $class_parameter, 1; - push @resource_params, "\"$1\"= $class_parameter"; + $class_parameter_index = $param_id{$1}; + $class_parameter_name = $1; + splice @params, $class_parameter_index, 1; } elsif($line =~ /^bundle agent (\w+)\(/) { $generic_method = $1; @@ -123,10 +118,11 @@ foreach my $file (glob $ncf_methods) { $resource{"resource $resource(".join(", ", @resource_params_unnamed).")"}=1; # keep output - push @state, "\@class_parameter = {".join(", ", @resource_params)."}"; - push @state, "\@supported_formats = [".join(", ", @supported_formats)."]"; + push @state, "\@class_parameter_index = $class_parameter_index"; + push @state, "\@class_parameter_name = \"$class_parameter_name\""; + push @state, "\@class_prefix = \"$prefix\""; + push @state, "\@supported_formats = [".join(", ", @supported_formats)."]"; push @state, "$resource state $state(".join(", ", @params).") {}\n"; - push @config_lines, "$generic_method = { class_prefix=\"$prefix\", class_parameter_id = $class_parameter }"; } if ($is_ncf_empty) { @@ -141,18 +137,3 @@ print $resourcelib "\n\n"; print $resourcelib join("\n", @state); print $resourcelib "\n\n"; close($resourcelib); - -my $config_header = "[resources] -http_request = { parameter_count=2 } -sharedfile = { parameter_count=2 } -variable = { parameter_count=2 } -[classes] -command_execution = \"(command_execution)_(.*)\" -[variables] -[conditions] -[methods] -"; -open(my $conf, '>', $meta_gm) or die "Cannot write methods config ($meta_gm)"; -print $conf join("\n",$config_header); -print $conf join("\n",@config_lines); -close($conf); diff --git a/rudder-lang/tools/meta_generic_methods.toml b/rudder-lang/tools/meta_generic_methods.toml deleted file mode 100644 index 4850c53d7f7..00000000000 --- a/rudder-lang/tools/meta_generic_methods.toml +++ /dev/null @@ -1,181 +0,0 @@ -[resources] -http_request = { parameter_count=2 } -sharedfile = { parameter_count=2 } -variable = { parameter_count=2 } -[classes] -command_execution = "(command_execution)_(.*)" -[variables] -[conditions] -[methods] -command_execution = { class_prefix="command_execution", class_parameter_id = 0 } -command_execution_once = { class_prefix="command_execution_once", class_parameter_id = 0 } -command_execution_result = { class_prefix="command_execution_result", class_parameter_id = 0 } -condition_from_command = { class_prefix="condition_from_command", class_parameter_id = 0 } -condition_from_expression = { class_prefix="condition_from_expression", class_parameter_id = 0 } -condition_from_expression_persistent = { class_prefix="condition_from_expression_persistent", class_parameter_id = 0 } -condition_from_variable_existence = { class_prefix="condition_from_variable_existence", class_parameter_id = 0 } -condition_from_variable_match = { class_prefix="condition_from_variable_match", class_parameter_id = 0 } -condition_once = { class_prefix="condition_once", class_parameter_id = 0 } -directory_absent = { class_prefix="directory_absent", class_parameter_id = 0 } -directory_check_exists = { class_prefix="directory_check_exists", class_parameter_id = 0 } -directory_create = { class_prefix="directory_create", class_parameter_id = 0 } -directory_present = { class_prefix="directory_present", class_parameter_id = 0 } -environment_variable_present = { class_prefix="environment_variable_present", class_parameter_id = 0 } -file_absent = { class_prefix="file_absent", class_parameter_id = 0 } -file_augeas_commands = { class_prefix="file_augeas_commands", class_parameter_id = 1 } -file_augeas_set = { class_prefix="file_augeas_set", class_parameter_id = 2 } -file_block_present = { class_prefix="file_block_present", class_parameter_id = 0 } -file_block_present_in_section = { class_prefix="file_block_present_in_section", class_parameter_id = 0 } -file_check_block_device = { class_prefix="file_check_block_device", class_parameter_id = 0 } -file_check_character_device = { class_prefix="file_check_character_device", class_parameter_id = 0 } -file_check_exists = { class_prefix="file_check_exists", class_parameter_id = 0 } -file_check_FIFO_pipe = { class_prefix="file_check_FIFO_pipe", class_parameter_id = 0 } -file_check_hardlink = { class_prefix="file_check_hardlink", class_parameter_id = 0 } -file_check_regular = { class_prefix="file_check_regular", class_parameter_id = 0 } -file_check_socket = { class_prefix="file_check_socket", class_parameter_id = 0 } -file_check_symlink = { class_prefix="file_check_symlink", class_parameter_id = 0 } -file_check_symlinkto = { class_prefix="file_check_symlinkto", class_parameter_id = 0 } -file_content = { class_prefix="file_lines_present", class_parameter_id = 0 } -file_copy_from_local_source = { class_prefix="file_copy_from_local_source", class_parameter_id = 1 } -file_copy_from_local_source_recursion = { class_prefix="file_copy_from_local_source", class_parameter_id = 1 } -file_copy_from_local_source_with_check = { class_prefix="file_copy_from_local_source_with_check", class_parameter_id = 1 } -file_copy_from_remote_source = { class_prefix="file_copy_from_remote_source", class_parameter_id = 1 } -file_copy_from_remote_source_recursion = { class_prefix="file_copy_from_remote_source", class_parameter_id = 1 } -file_create = { class_prefix="file_create", class_parameter_id = 0 } -file_create_symlink = { class_prefix="file_create_symlink", class_parameter_id = 1 } -file_create_symlink_enforce = { class_prefix="file_create_symlink", class_parameter_id = 1 } -file_create_symlink_force = { class_prefix="file_create_symlink", class_parameter_id = 1 } -file_download = { class_prefix="file_download", class_parameter_id = 1 } -file_enforce_content = { class_prefix="file_ensure_lines_present", class_parameter_id = 0 } -file_ensure_block_in_section = { class_prefix="file_ensure_block_in_section", class_parameter_id = 0 } -file_ensure_block_present = { class_prefix="file_ensure_block_present", class_parameter_id = 0 } -file_ensure_key_value = { class_prefix="file_ensure_key_value", class_parameter_id = 0 } -file_ensure_key_value_option = { class_prefix="file_ensure_key_value", class_parameter_id = 0 } -file_ensure_key_value_parameter_in_list = { class_prefix="file_ensure_key_value_parameter_in_list", class_parameter_id = 0 } -file_ensure_key_value_parameter_not_in_list = { class_prefix="file_ensure_key_value_parameter_not_in_list", class_parameter_id = 0 } -file_ensure_key_value_present_in_ini_section = { class_prefix="file_ensure_key_value_present_in_ini_section", class_parameter_id = 0 } -file_ensure_keys_values = { class_prefix="file_ensure_keys_values", class_parameter_id = 0 } -file_ensure_line_present_in_ini_section = { class_prefix="file_ensure_line_present_in_ini_section", class_parameter_id = 0 } -file_ensure_line_present_in_xml_tag = { class_prefix="file_ensure_line_present_in_xml_tag", class_parameter_id = 0 } -file_ensure_lines_absent = { class_prefix="file_ensure_lines_absent", class_parameter_id = 0 } -file_ensure_lines_present = { class_prefix="file_ensure_lines_present", class_parameter_id = 0 } -file_from_http_server = { class_prefix="file_from_http_server", class_parameter_id = 1 } -file_from_local_source = { class_prefix="file_from_local_source", class_parameter_id = 1 } -file_from_local_source_recursion = { class_prefix="file_from_local_source", class_parameter_id = 1 } -file_from_local_source_with_check = { class_prefix="file_from_local_source_with_check", class_parameter_id = 1 } -file_from_remote_source = { class_prefix="file_from_remote_source", class_parameter_id = 1 } -file_from_remote_source_recursion = { class_prefix="file_from_remote_source", class_parameter_id = 1 } -file_from_shared_folder = { class_prefix="file_from_shared_folder", class_parameter_id = 1 } -file_from_string_mustache = { class_prefix="file_from_string_mustache", class_parameter_id = 1 } -file_from_template = { class_prefix="file_from_template", class_parameter_id = 1 } -file_from_template_jinja2 = { class_prefix="file_from_template", class_parameter_id = 1 } -file_from_template_mustache = { class_prefix="file_from_template", class_parameter_id = 1 } -file_from_template_type = { class_prefix="file_from_template", class_parameter_id = 1 } -file_key_value_parameter_absent_in_list = { class_prefix="file_key_value_parameter_absent_in_list", class_parameter_id = 0 } -file_key_value_parameter_present_in_list = { class_prefix="file_key_value_parameter_present_in_list", class_parameter_id = 0 } -file_key_value_present = { class_prefix="file_key_value_present", class_parameter_id = 0 } -file_key_value_present_in_ini_section = { class_prefix="file_key_value_present_in_ini_section", class_parameter_id = 0 } -file_key_value_present_option = { class_prefix="file_key_value_present", class_parameter_id = 0 } -file_keys_values_present = { class_prefix="file_keys_values_present", class_parameter_id = 0 } -file_line_present_in_ini_section = { class_prefix="file_line_present_in_ini_section", class_parameter_id = 0 } -file_line_present_in_xml_tag = { class_prefix="file_line_present_in_xml_tag", class_parameter_id = 0 } -file_lines_absent = { class_prefix="file_lines_absent", class_parameter_id = 0 } -file_lines_present = { class_prefix="file_lines_present", class_parameter_id = 0 } -file_present = { class_prefix="file_present", class_parameter_id = 0 } -file_remove = { class_prefix="file_remove", class_parameter_id = 0 } -file_replace_lines = { class_prefix="file_replace_lines", class_parameter_id = 0 } -file_report_content = { class_prefix="file_report_content", class_parameter_id = 0 } -file_report_content_head = { class_prefix="file_report_content_head", class_parameter_id = 0 } -file_report_content_tail = { class_prefix="file_report_content_tail", class_parameter_id = 0 } -file_symlink_present = { class_prefix="file_symlink_present", class_parameter_id = 1 } -file_symlink_present_force = { class_prefix="file_symlink_present", class_parameter_id = 1 } -file_symlink_present_option = { class_prefix="file_symlink_present", class_parameter_id = 1 } -file_template_expand = { class_prefix="file_template_expand", class_parameter_id = 1 } -group_absent = { class_prefix="group_absent", class_parameter_id = 0 } -group_present = { class_prefix="group_present", class_parameter_id = 0 } -http_request_check_status_headers = { class_prefix="http_request_check_status_headers", class_parameter_id = 1 } -http_request_content_headers = { class_prefix="http_request_content_headers", class_parameter_id = 1 } -kernel_module_configuration = { class_prefix="kernel_module_configuration", class_parameter_id = 0 } -kernel_module_enabled_at_boot = { class_prefix="kernel_module_enabled_at_boot", class_parameter_id = 0 } -kernel_module_loaded = { class_prefix="kernel_module_loaded", class_parameter_id = 0 } -kernel_module_not_loaded = { class_prefix="kernel_module_not_loaded", class_parameter_id = 0 } -monitoring_parameter = { class_prefix="monitoring_parameter", class_parameter_id = 0 } -monitoring_template = { class_prefix="monitoring_template", class_parameter_id = 0 } -package_absent = { class_prefix="package_absent", class_parameter_id = 0 } -package_check_installed = { class_prefix="package_check_installed", class_parameter_id = 0 } -package_install = { class_prefix="package_install", class_parameter_id = 0 } -package_install_version = { class_prefix="package_install", class_parameter_id = 0 } -package_install_version_cmp = { class_prefix="package_install", class_parameter_id = 0 } -package_install_version_cmp_update = { class_prefix="package_install", class_parameter_id = 0 } -package_present = { class_prefix="package_present", class_parameter_id = 0 } -package_remove = { class_prefix="package_remove", class_parameter_id = 0 } -package_state = { class_prefix="package_state", class_parameter_id = 0 } -package_state_options = { class_prefix="package_state_options", class_parameter_id = 0 } -package_verify = { class_prefix="package_install", class_parameter_id = 0 } -package_verify_version = { class_prefix="package_install", class_parameter_id = 0 } -permissions_acl_entry = { class_prefix="permissions_acl_entry", class_parameter_id = 0 } -permissions_dirs = { class_prefix="permissions", class_parameter_id = 0 } -permissions_dirs_recurse = { class_prefix="permissions", class_parameter_id = 0 } -permissions_dirs_recursive = { class_prefix="permissions", class_parameter_id = 0 } -permissions_group_acl_absent = { class_prefix="permissions_group_acl_absent", class_parameter_id = 0 } -permissions_group_acl_present = { class_prefix="permissions_group_acl_present", class_parameter_id = 0 } -permissions_other_acl_present = { class_prefix="permissions_other_acl_present", class_parameter_id = 0 } -permissions_posix_acls_absent = { class_prefix="permissions_posix_acls_absent", class_parameter_id = 0 } -permissions_recurse = { class_prefix="permissions", class_parameter_id = 0 } -permissions_recursive = { class_prefix="permissions", class_parameter_id = 0 } -permissions_type_recursion = { class_prefix="permissions", class_parameter_id = 0 } -permissions_user_acl_absent = { class_prefix="permissions_user_acl_absent", class_parameter_id = 0 } -permissions_user_acl_present = { class_prefix="permissions_user_acl_present", class_parameter_id = 0 } -schedule_simple = { class_prefix="schedule_simple", class_parameter_id = 0 } -schedule_simple_catchup = { class_prefix="schedule_simple", class_parameter_id = 0 } -schedule_simple_nodups = { class_prefix="schedule_simple", class_parameter_id = 0 } -schedule_simple_stateless = { class_prefix="schedule_simple", class_parameter_id = 0 } -service_action = { class_prefix="service_action", class_parameter_id = 0 } -service_check_disabled_at_boot = { class_prefix="service_check_disabled_at_boot", class_parameter_id = 0 } -service_check_running = { class_prefix="service_check_running", class_parameter_id = 0 } -service_check_running_ps = { class_prefix="service_check_running", class_parameter_id = 0 } -service_check_started_at_boot = { class_prefix="service_check_started_at_boot", class_parameter_id = 0 } -service_disabled = { class_prefix="service_disabled", class_parameter_id = 0 } -service_enabled = { class_prefix="service_enabled", class_parameter_id = 0 } -service_ensure_disabled_at_boot = { class_prefix="service_ensure_disabled_at_boot", class_parameter_id = 0 } -service_ensure_running = { class_prefix="service_ensure_running", class_parameter_id = 0 } -service_ensure_running_path = { class_prefix="service_ensure_running", class_parameter_id = 0 } -service_ensure_started_at_boot = { class_prefix="service_ensure_started_at_boot", class_parameter_id = 0 } -service_ensure_stopped = { class_prefix="service_ensure_stopped", class_parameter_id = 0 } -service_reload = { class_prefix="service_reload", class_parameter_id = 0 } -service_restart = { class_prefix="service_restart", class_parameter_id = 0 } -service_restart_if = { class_prefix="service_restart", class_parameter_id = 0 } -service_start = { class_prefix="service_start", class_parameter_id = 0 } -service_started = { class_prefix="service_started", class_parameter_id = 0 } -service_started_path = { class_prefix="service_started", class_parameter_id = 0 } -service_stop = { class_prefix="service_stop", class_parameter_id = 0 } -service_stopped = { class_prefix="service_stopped", class_parameter_id = 0 } -sharedfile_from_node = { class_prefix="sharedfile_from_node", class_parameter_id = 1 } -sharedfile_to_node = { class_prefix="sharedfile_to_node", class_parameter_id = 1 } -sysctl_value = { class_prefix="sysctl_value", class_parameter_id = 0 } -user_absent = { class_prefix="user_absent", class_parameter_id = 0 } -user_create = { class_prefix="user_create", class_parameter_id = 0 } -user_fullname = { class_prefix="user_fullname", class_parameter_id = 0 } -user_group = { class_prefix="user_group", class_parameter_id = 0 } -user_home = { class_prefix="user_home", class_parameter_id = 0 } -user_locked = { class_prefix="user_locked", class_parameter_id = 0 } -user_password_hash = { class_prefix="user_password_hash", class_parameter_id = 0 } -user_present = { class_prefix="user_present", class_parameter_id = 0 } -user_primary_group = { class_prefix="user_primary_group", class_parameter_id = 0 } -user_shell = { class_prefix="user_shell", class_parameter_id = 0 } -user_uid = { class_prefix="user_uid", class_parameter_id = 0 } -variable_dict = { class_prefix="variable_dict", class_parameter_id = 1 } -variable_dict_from_file = { class_prefix="variable_dict_from_file", class_parameter_id = 1 } -variable_dict_from_file_type = { class_prefix="variable_dict_from_file_type", class_parameter_id = 1 } -variable_dict_from_osquery = { class_prefix="variable_dict_from_osquery", class_parameter_id = 1 } -variable_dict_merge = { class_prefix="variable_dict_merge", class_parameter_id = 1 } -variable_dict_merge_tolerant = { class_prefix="variable_dict_merge_tolerant", class_parameter_id = 1 } -variable_iterator = { class_prefix="variable_iterator", class_parameter_id = 1 } -variable_iterator_from_file = { class_prefix="variable_iterator_from_file", class_parameter_id = 1 } -variable_string = { class_prefix="variable_string", class_parameter_id = 1 } -variable_string_default = { class_prefix="variable_string_default", class_parameter_id = 1 } -variable_string_from_augeas = { class_prefix="variable_string_from_augeas", class_parameter_id = 1 } -variable_string_from_command = { class_prefix="variable_string_from_command", class_parameter_id = 1 } -variable_string_from_file = { class_prefix="variable_string_from_file", class_parameter_id = 1 } -variable_string_from_math_expression = { class_prefix="variable_string_from_math_expression", class_parameter_id = 1 } -variable_string_match = { class_prefix="variable_string_match", class_parameter_id = 0 } \ No newline at end of file diff --git a/rudder-lang/tools/rudderc-dev.conf b/rudder-lang/tools/rudderc-dev.conf index b18f594ab2d..4676f36f3a5 100644 --- a/rudder-lang/tools/rudderc-dev.conf +++ b/rudder-lang/tools/rudderc-dev.conf @@ -1,8 +1,7 @@ # Warning: tilde ('~') not handled in paths [shared] - stdlib="libs/" # only required field for rudderc - meta_generic_methods="tools/meta_generic_methods.toml" + stdlib="libs/" ncf_generic_methods="/usr/share/ncf/tree/30_generic_methods/" dsc_generic_methods="/home/gpoblon/rudder/windows-agent/packaging/Files/share/initial-policy/ncf/30_generic_methods/" diff --git a/rudder-lang/tools/rudderc-prod.conf b/rudder-lang/tools/rudderc-prod.conf index e7b05186eaf..b0bbe928edb 100644 --- a/rudder-lang/tools/rudderc-prod.conf +++ b/rudder-lang/tools/rudderc-prod.conf @@ -1,6 +1,5 @@ [shared] stdlib="/opt/rudder/share/rudder-lang/lib/" - meta_generic_methods="/opt/rudder/share/rudder-lang/tools/meta_generic_methods.toml" ncf_generic_methods="/usr/share/ncf/tree/30_generic_methods/" dsc_generic_methods="/var/rudder/configuration-repository/dsc/ncf/30_generic_methods/"