def save_notification_rules(rules): # type: (List[Dict]) -> None store.mkdir(wato_root_dir()) store.save_to_mk_file(wato_root_dir() + "notifications.mk", "notification_rules", rules, pprint_value=config.wato_pprint_config)
def save_timeperiods(timeperiods): # type: (TimeperiodSpecs) -> None store.mkdir(wato_root_dir()) store.save_to_mk_file(wato_root_dir() + "timeperiods.mk", "timeperiods", _filter_builtin_timeperiods(timeperiods), pprint_value=config.wato_pprint_config)
def save_layouts(cls) -> None: store.save_to_mk_file( str(BILayoutManagement._config_file), "bi_layouts", active_config.bi_layouts, pprint_value=True, )
def _save(self): store.save_to_mk_file( watolib.multisite_dir() + "read_only.mk", "wato_read_only", self._settings, pprint_value=config.wato_pprint_config, )
def save_notification_rules(rules): store.mkdir(wato_root_dir()) store.save_to_mk_file( wato_root_dir() + "notifications.mk", "notification_rules", rules, pprint_value=config.wato_pprint_config)
def save_timeperiods(timeperiods: TimeperiodSpecs) -> None: store.mkdir(wato_root_dir()) store.save_to_mk_file(wato_root_dir() + "timeperiods.mk", "timeperiods", _filter_builtin_timeperiods(timeperiods), pprint_value=config.wato_pprint_config) g.timeperiod_information = timeperiods
def save_notification_rules(rules: list[EventRule]) -> None: store.mkdir(wato_root_dir()) store.save_to_mk_file( wato_root_dir() + "notifications.mk", "notification_rules", rules, pprint_value=active_config.wato_pprint_config, )
def save_timeperiods(timeperiods: TimeperiodSpecs) -> None: store.mkdir(wato_root_dir()) store.save_to_mk_file( wato_root_dir() + "timeperiods.mk", "timeperiods", _filter_builtin_timeperiods(timeperiods), pprint_value=active_config.wato_pprint_config, ) load_timeperiods.cache_clear()
def write_contacts_and_users_file(profiles: Users, custom_default_config_dir: str = None ) -> None: non_contact_keys = _non_contact_keys() multisite_keys = _multisite_keys() updated_profiles = _add_custom_macro_attributes(profiles) if custom_default_config_dir: check_mk_config_dir = "%s/conf.d/wato" % custom_default_config_dir multisite_config_dir = "%s/multisite.d/wato" % custom_default_config_dir else: check_mk_config_dir = "%s/conf.d/wato" % cmk.utils.paths.default_config_dir multisite_config_dir = "%s/multisite.d/wato" % cmk.utils.paths.default_config_dir non_contact_attributes_cache: Dict[Optional[str], List[str]] = {} multisite_attributes_cache: Dict[Optional[str], List[str]] = {} for user_settings in updated_profiles.values(): connector = cast(Optional[str], user_settings.get("connector")) if connector not in non_contact_attributes_cache: non_contact_attributes_cache[connector] = non_contact_attributes( connector) if connector not in multisite_attributes_cache: multisite_attributes_cache[connector] = multisite_attributes( connector) # Remove multisite keys in contacts. # TODO: Clean this up. Just improved the performance, but still have no idea what its actually doing... contacts = dict( e for e in [(id, split_dict( user, non_contact_keys + non_contact_attributes_cache[user.get('connector')], False, )) for (id, user) in updated_profiles.items()]) # Only allow explicitely defined attributes to be written to multisite config users = {} for uid, profile in updated_profiles.items(): users[uid] = { p: val for p, val in profile.items() if p in multisite_keys + multisite_attributes_cache[profile.get('connector')] } # Check_MK's monitoring contacts store.save_to_mk_file("%s/%s" % (check_mk_config_dir, "contacts.mk"), "contacts", contacts, pprint_value=config.wato_pprint_config) # GUI specific user configuration store.save_to_mk_file("%s/%s" % (multisite_config_dir, "users.mk"), "multisite_users", users, pprint_value=config.wato_pprint_config)
def save_connection_config(connections, base_dir=None): # type: (List[UserConnectionSpec], str) -> None if not base_dir: base_dir = _multisite_dir() store.mkdir(base_dir) store.save_to_mk_file(os.path.join(base_dir, "user_connections.mk"), "user_connections", connections) for connector_class in user_connector_registry.values(): connector_class.config_changed()
def test_save_to_mk_file(tmp_path, path_type): path = path_type(tmp_path.joinpath("huhu")) store.save_to_mk_file(path, "x", {"a": 1}) assert store.load_mk_file(path, default={"x": { "a": 2, "y": 1 }}) == { "x": { "a": 1, "y": 1 } }
def save_connection_config(connections: List[UserConnectionSpec], base_dir: Optional[str] = None) -> None: if not base_dir: base_dir = _multisite_dir() store.mkdir(base_dir) store.save_to_mk_file(os.path.join(base_dir, "user_connections.mk"), "user_connections", connections) for connector_class in user_connector_registry.values(): connector_class.config_changed() clear_user_connection_cache()
def _save_roles(self): # Reflect the data in the roles dict kept in the config module Needed # for instant changes in current page while saving modified roles. # Otherwise the hooks would work with old data when using helper # functions from the config module config.roles.update(self._roles) store.mkdir(watolib.multisite_dir()) store.save_to_mk_file(watolib.multisite_dir() + "roles.mk", "roles", self._roles, pprint_value=config.wato_pprint_config) hooks.call("roles-saved", self._roles)
def _update_check_mk(target_dir, tar_file): """extract check_mk/conf.d/wato folder, but keep information in contacts.mk (need to retain user notification rules)""" site_vars: Dict[str, Any] = {"contacts": {}} with Path(target_dir).joinpath("contacts.mk").open(encoding="utf-8") as f: exec(f.read(), {}, site_vars) _wipe_directory(target_dir) tar_file.extractall(target_dir) master_vars: Dict[str, Any] = {"contacts": {}} exec(tar_file.extractfile("./contacts.mk").read(), {}, master_vars) site_contacts = _update_contacts_dict(master_vars["contacts"], site_vars["contacts"]) store.save_to_mk_file(os.path.join(target_dir, "contacts.mk"), "contacts", site_contacts)
def save_sites(cls, sites, activate=True): # TODO: Clean this up from cmk.gui.watolib.hosts_and_folders import Folder store.mkdir(multisite_dir()) store.save_to_mk_file(cls._sites_mk(), "sites", sites) # Do not activate when just the site's global settings have # been edited if activate: config.load_config() # make new site configuration active _update_distributed_wato_file(sites) Folder.invalidate_caches() cmk.gui.watolib.sidebar_reload.need_sidebar_reload() _create_nagvis_backends(sites) # Call the sites saved hook hooks.call("sites-saved", sites)
def _update_check_mk(path, tar_file): "extract check_mk/conf.d/wato folder but skip overwriting user notification_rules" members = [m for m in tar_file.getmembers() if m.name != "./contacts.mk"] for entry in members: filepath = os.path.join(path, entry.name) if os.path.isfile(filepath): os.remove(filepath) tar_file.extractall(path, members=members) master_vars = {"contacts": {}} # type: Dict[str, Any] eval(tar_file.extractfile("./contacts.mk").read(), {}, master_vars) site_vars = {"contacts": {}} # type: Dict[str, Any] with Path(path).joinpath("contacts.mk").open(encoding="utf-8") as f: eval(f.read(), {}, site_vars) site_contacts = _update_contacts_dict(master_vars["contacts"], site_vars["contacts"]) store.save_to_mk_file(os.path.join(path, "contacts.mk"), "contacts", site_contacts)
def _save_liveproxyd_config(cls, sites): path = cmk.utils.paths.default_config_dir + "/liveproxyd.mk" conf = {} for siteid, siteconf in sites.items(): proxy_params = siteconf["proxy"] if proxy_params is None: continue conf[siteid] = { "socket": siteconf["socket"], } if "tcp" in proxy_params: conf[siteid]["tcp"] = proxy_params["tcp"] if proxy_params["params"]: conf[siteid].update(proxy_params["params"]) store.save_to_mk_file(path, "sites", conf) ConfigDomainLiveproxy().activate()
def _save_gui_config(self, cfg: TagConfigSpec) -> None: self._config_file_path.parent.mkdir(mode=0o770, exist_ok=True, parents=True) store.save_to_mk_file(self._config_file_path, self._config_variable, cfg)
def save_layouts(cls): # type: () -> None store.save_to_mk_file(str(BILayoutManagement._config_file), "bi_layouts", config.bi_layouts, pprint_value=True)
def _save_base_config(self, cfg: TagConfigSpec) -> None: self._config_file_path.parent.mkdir(mode=0o770, exist_ok=True, parents=True) store.save_to_mk_file( Path(wato_root_dir()) / "tags.mk", "tag_config", cfg)
def save(self, cfg: Mapping[str, _T]) -> None: self._config_file_path.parent.mkdir(mode=0o770, exist_ok=True, parents=True) store.save_to_mk_file(str(self._config_file_path), self._config_variable, cfg)