def _save_inventory_tree( hostname: HostName, inventory_tree: StructuredDataTree, ) -> Optional[StructuredDataTree]: store.makedirs(cmk.utils.paths.inventory_output_dir) filepath = cmk.utils.paths.inventory_output_dir + "/" + hostname if inventory_tree.is_empty(): # Remove empty inventory files. Important for host inventory icon if os.path.exists(filepath): os.remove(filepath) if os.path.exists(filepath + ".gz"): os.remove(filepath + ".gz") return None old_tree = StructuredDataTree().load_from(filepath) old_tree.normalize_nodes() if old_tree.is_equal(inventory_tree): console.verbose("Inventory was unchanged\n") return None if old_tree.is_empty(): console.verbose("New inventory tree\n") else: console.verbose("Inventory tree has changed\n") old_time = os.stat(filepath).st_mtime arcdir = "%s/%s" % (cmk.utils.paths.inventory_archive_dir, hostname) store.makedirs(arcdir) os.rename(filepath, arcdir + ("/%d" % old_time)) inventory_tree.save_to(cmk.utils.paths.inventory_output_dir, hostname) return old_tree
def test_structured_data_StructuredDataTree_save_gzip(tmp_path): filename = "heute" target = Path(tmp_path).joinpath(filename) raw_tree = { "node": { "foo": 1, "bär": 2, }, } tree = StructuredDataTree().create_tree_from_raw_tree(raw_tree) tree.save_to(tmp_path, filename) assert target.exists() gzip_filepath = target.with_suffix('.gz') assert gzip_filepath.exists() with gzip.open(str(gzip_filepath), 'rb') as f: f.read()
def _save_status_data_tree(hostname: HostName, status_data_tree: StructuredDataTree) -> None: if status_data_tree and not status_data_tree.is_empty(): store.makedirs(cmk.utils.paths.status_data_dir) status_data_tree.save_to(cmk.utils.paths.status_data_dir, hostname)