Esempio n. 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")
Esempio n. 2
0
def test_change_xml_text_removed(xml_doc):
    ret = xml.change_xml(xml_doc, {"name": None}, [{
        "path": "name",
        "xpath": "name"
    }])
    assert ret
    assert xml_doc.find("name") is None
Esempio n. 3
0
def test_change_xml_text(xml_doc):
    ret = xml.change_xml(xml_doc, {"name": "test02"}, [{
        "path": "name",
        "xpath": "name"
    }])
    assert ret
    assert "test02" == xml_doc.find("name").text
Esempio n. 4
0
def test_change_xml_convert(xml_doc):
    ret = xml.change_xml(
        xml_doc,
        {"mem": 2},
        [{
            "path": "mem",
            "xpath": "memory",
            "convert": lambda v: v * 1024
        }],
    )
    assert ret
    assert "2048" == xml_doc.find("memory").text
Esempio n. 5
0
def test_change_xml_equals_nochange(xml_doc):
    ret = xml.change_xml(
        xml_doc,
        {"mem": 1023},
        [{
            "path": "mem",
            "xpath": "memory",
            "get": lambda n: int(n.text),
            "equals": lambda o, n: abs(o - n) <= 1,
        }],
    )
    assert not ret
Esempio n. 6
0
def test_change_xml_text_add(xml_doc):
    ret = xml.change_xml(
        xml_doc,
        {"cpu": {
            "vendor": "ACME"
        }},
        [{
            "path": "cpu:vendor",
            "xpath": "cpu/vendor"
        }],
    )
    assert ret
    assert "ACME" == xml_doc.find("cpu/vendor").text
Esempio n. 7
0
def test_change_xml_not_simple_value(xml_doc):
    ret = xml.change_xml(
        xml_doc,
        {"cpu": {
            "topology": {
                "sockets": None
            }
        }},
        [{
            "path": "cpu",
            "xpath": "vcpu",
            "get": lambda n: int(n.text)
        }],
    )
    assert not ret
Esempio n. 8
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
Esempio n. 9
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")
Esempio n. 10
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
Esempio n. 11
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")
    ]
Esempio n. 12
0
def test_change_xml_text_notdefined(xml_doc):
    ret = xml.change_xml(xml_doc, {}, [{"path": "name", "xpath": "name"}])
    assert not ret
Esempio n. 13
0
def test_change_xml_text_nochange(xml_doc):
    ret = xml.change_xml(xml_doc, {"name": "test01"}, [{
        "path": "name",
        "xpath": "name"
    }])
    assert not ret