def test_change_xml_template(xml_doc): ret = xml.change_xml( xml_doc, {"cpu": { "vcpus": { 2: { "enabled": True }, 4: { "enabled": False } } }}, [ { "path": "cpu:vcpus:{id}:enabled", "xpath": "vcpus/vcpu[@id='$id']", "convert": lambda v: "yes" if v else "no", "get": lambda n: n.get("enabled"), "set": lambda n, v: n.set("enabled", v), "del": xml.del_attribute("enabled", ["id"]), }, ], ) assert ret assert xml_doc.find("vcpus/vcpu[@id='1']") is None assert "yes" == xml_doc.find("vcpus/vcpu[@id='2']").get("enabled") assert "no" == xml_doc.find("vcpus/vcpu[@id='4']").get("enabled")
def test_change_xml_attr_unchanged(xml_doc): ret = xml.change_xml( xml_doc, {"cpu": { "topology": { "sockets": 1 } }}, [{ "path": "cpu:topology:sockets", "xpath": "cpu/topology", "get": lambda n: int(n.get("sockets")) if n.get("sockets") else None, "set": lambda n, v: n.set("sockets", str(v)), "del": xml.del_attribute("sockets"), }], ) assert not ret
def test_change_xml_attr(xml_doc): ret = xml.change_xml( xml_doc, {"cpu": { "topology": { "cores": 4 } }}, [{ "path": "cpu:topology:cores", "xpath": "cpu/topology", "get": lambda n: int(n.get("cores")) if n.get("cores") else None, "set": lambda n, v: n.set("cores", str(v)), "del": xml.del_attribute("cores"), }], ) assert ret assert "4" == xml_doc.find("cpu/topology").get("cores")
def test_change_xml_attr_remove(xml_doc): ret = xml.change_xml( xml_doc, {"cpu": { "topology": { "sockets": None } }}, [{ "path": "cpu:topology:sockets", "xpath": "./cpu/topology", "get": lambda n: int(n.get("sockets")) if n.get("sockets") else None, "set": lambda n, v: n.set("sockets", str(v)), "del": xml.del_attribute("sockets"), }], ) assert ret assert xml_doc.find("cpu") is None
def test_change_xml_template_list(xml_doc): ret = xml.change_xml( xml_doc, {"memtune": { "hugepages": [{ "size": "1024" }, { "size": "512" }] }}, [ { "path": "memtune:hugepages:{id}:size", "xpath": "memtune/hugepages/page[$id]", "get": lambda n: n.get("size"), "set": lambda n, v: n.set("size", v), "del": xml.del_attribute("size"), }, ], ) assert ret assert ["1024", "512"] == [ n.get("size") for n in xml_doc.findall("memtune/hugepages/page") ]