예제 #1
0
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")
예제 #2
0
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
예제 #3
0
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")
예제 #4
0
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
예제 #5
0
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")
    ]