def _set(self, request): tag_config_file = TagConfigFile() hosttags_config = cmk.utils.tags.TagConfig() hosttags_config.parse_config(tag_config_file.load_for_modification()) hosttags_dict = hosttags_config.get_dict_format() if "configuration_hash" in request: validate_config_hash(request["configuration_hash"], hosttags_dict) del request["configuration_hash"] changed_hosttags_config = cmk.utils.tags.TagConfig() changed_hosttags_config.parse_config(request) changed_hosttags_config.validate_config() self._verify_no_used_tags_missing(changed_hosttags_config) tag_config_file.save(changed_hosttags_config.get_dict_format()) watolib.add_change("edit-hosttags", _("Updated host tags through Web-API"))
def _set(self, request): tag_config_file = TagConfigFile() hosttags_config = cmk.utils.tags.TagConfig() hosttags_config.parse_config(tag_config_file.load_for_modification()) hosttags_dict = hosttags_config.get_dict_format() if "configuration_hash" in request: validate_config_hash(request["configuration_hash"], hosttags_dict) del request["configuration_hash"] # Check for conflicts with existing configuration # Tags may be either specified grouped in a host/folder configuration, e.g agent/cmk-agent, # or specified as the plain id in rules. We need to check both variants.. used_tags = self._get_used_grouped_tags() used_tags.update(self._get_used_rule_tags()) changed_hosttags_config = cmk.utils.tags.TagConfig() changed_hosttags_config.parse_config(request) changed_hosttags_config.validate_config() new_tags = changed_hosttags_config.get_tag_ids() new_tags.update( changed_hosttags_config.get_tag_ids_with_group_prefix()) # Remove the builtin hoststags from the list of used_tags builtin_config = cmk.utils.tags.BuiltinTagConfig() used_tags.discard(builtin_config.get_tag_ids_with_group_prefix()) missing_tags = used_tags - new_tags if missing_tags: raise MKUserError( None, _("Unable to apply new hosttag configuration. The following tags " "are still in use, but not mentioned in the updated " "configuration: %s") % ", ".join(missing_tags)) tag_config_file.save(changed_hosttags_config.get_dict_format()) watolib.add_change("edit-hosttags", _("Updated host tags through Web-API"))