コード例 #1
0
ファイル: test_xml_tools.py プロジェクト: tomjelinek/pcs
 def test_already_appended(self):
     element = self.tree.find(".//element-A2")
     lib.append_when_useful(self.parent, element)
     assert_xml_equal(
         self.tree_str,
         etree_to_str(self.tree)
     )
コード例 #2
0
ファイル: test_xml_tools.py プロジェクト: tomjelinek/pcs
 def test_not_useful_with_attributes(self):
     element = etree.Element("new", attr="test")
     lib.append_when_useful(self.parent, element, attribs_important=False)
     assert_xml_equal(
         self.tree_str,
         etree_to_str(self.tree)
     )
コード例 #3
0
ファイル: test_xml_tools.py プロジェクト: tomjelinek/pcs
 def test_not_useful(self):
     element = etree.Element("new")
     lib.append_when_useful(self.parent, element)
     assert_xml_equal(
         self.tree_str,
         etree_to_str(self.tree)
     )
コード例 #4
0
ファイル: test_nvpair.py プロジェクト: tomjelinek/pcs
 def test_updates_nvset(self):
     nvset_element = etree.fromstring("""
         <instance_attributes id="iattrs">
             <nvpair id="iattrs-a" name="a" value="b"/>
             <nvpair id="iattrs-c" name="c" value="d"/>
             <nvpair id="iattrs-e" name="e" value="f"/>
         </instance_attributes>
     """)
     id_provider = IdProvider(nvset_element)
     nvpair.update_nvset(
         nvset_element,
         {
             "a": "B",
             "c": "",
             "g": "h",
         },
         id_provider
     )
     assert_xml_equal(
         """
         <instance_attributes id="iattrs">
             <nvpair id="iattrs-a" name="a" value="B"/>
             <nvpair id="iattrs-e" name="e" value="f"/>
             <nvpair id="iattrs-g" name="g" value="h"/>
         </instance_attributes>
         """,
         etree_to_str(nvset_element)
     )
コード例 #5
0
ファイル: test_xml_tools.py プロジェクト: tomjelinek/pcs
 def test_new_with_id(self):
     assert_xml_equal(
         '<new_element id="new_id"/>',
         etree_to_str(
             lib.get_sub_element(self.root, "new_element", "new_id")
         )
     )
     assert_xml_equal(
         """
         <root>
             <sub_element/>
             <new_element id="new_id"/>
         </root>
         """,
         etree_to_str(self.root)
     )
コード例 #6
0
ファイル: test_xml_tools.py プロジェクト: tomjelinek/pcs
 def test_new_not_append(self):
     subelement = lib.get_sub_element(
         self.root, "new_element", "new_id", append_if_missing=False
     )
     assert_xml_equal(
         """
         <root>
             <sub_element/>
         </root>
         """,
         etree_to_str(self.root)
     )
     assert_xml_equal(
         """<new_element id="new_id" />""",
         etree_to_str(subelement)
     )
コード例 #7
0
ファイル: test_nvpair.py プロジェクト: tomjelinek/pcs
    def test_create_new_nvset_if_does_not_exist(self):
        root = etree.Element("root", id="root")
        nvpair.arrange_first_nvset(
            "nvset",
            root,
            {
                "attr": "10",
                "new_one": "20",
                "test": "0",
                "attr2": ""
            },
            self.id_provider
        )

        assert_xml_equal(
            """
            <root id="root">
                <nvset id="root-nvset">
                    <nvpair id="root-nvset-attr" name="attr" value="10"/>
                    <nvpair id="root-nvset-new_one" name="new_one" value="20"/>
                    <nvpair id="root-nvset-test" name="test" value="0"/>
                </nvset>
            </root>
            """,
            etree_to_str(root)
        )
コード例 #8
0
 def _assert_move_last_from_cloned_group(self, clone_type):
     # pylint: disable=no-self-use
     cib_before = f"""
         <resources>
             <group id="G">
                 <primitive id="RG1" />
                 <primitive id="RG2" />
                 <primitive id="RG3" />
             </group>
             <{clone_type} id="X-{clone_type}">
                 <group id="X">
                     <primitive id="R1" />
                 </group>
             </{clone_type}>
             <primitive id="R3" />
         </resources>
     """
     cib_after = """
         <resources>
             <group id="G">
                 <primitive id="RG1" />
                 <primitive id="RG2" />
                 <primitive id="RG3" />
                 <primitive id="R1" />
             </group>
             <primitive id="R3" />
         </resources>
     """
     cib = etree.fromstring(cib_before)
     relation.move_resources_to_group(
         _resource(cib, "G"),
         _resources(cib, "R1"),
     )
     assert_xml_equal(cib_after, etree_to_str(cib))
コード例 #9
0
    def test_success(self):
        resources_state = etree_to_str(fixture.complete_state_resources(
            etree.fromstring("""
                <resources>
                    <resource id="A" role="Started" nodes_running_on="1">
                         <node name="node1" id="1" cached="false" />
                     </resource>
                </resources>
            """)
        ))
        self.config.runner.pcmk.wait(timeout=10)
        self.config.runner.pcmk.load_state(resources=resources_state)

        self.lib_action(self.env_assist.get_env(), "A", wait="10")
        self.env_assist.assert_reports([
            fixture.info(
                self.report_code_pcmk_success,
                resource_id="A",
                stdout="pcmk std out",
                stderr="pcmk std err",
            ),
            fixture.report_resource_running(
                "A",
                {"Started": ["node1"]}
            ),
        ])
コード例 #10
0
ファイル: test_nvpair.py プロジェクト: tomjelinek/pcs
 def test_with_id_provider_booked_ids(self):
     context_element = etree.fromstring('<context id="a"/>')
     provider = IdProvider(context_element)
     provider.book_ids("a-instance_attributes", "a-instance_attributes-1-a")
     nvpair.append_new_nvset(
         "instance_attributes",
         context_element,
         {
             "a": "b",
             "c": "d",
         },
         provider
     )
     assert_xml_equal(
         """
             <context id="a">
                 <instance_attributes id="a-instance_attributes-1">
                     <nvpair
                         id="a-instance_attributes-1-a-1" name="a" value="b"
                     />
                     <nvpair
                         id="a-instance_attributes-1-c" name="c" value="d"
                     />
                 </instance_attributes>
             </context>
         """,
         etree_to_str(context_element)
     )
コード例 #11
0
ファイル: test_nvpair.py プロジェクト: tomjelinek/pcs
 def test_append_new_nvset_to_given_element(self):
     context_element = etree.fromstring('<context id="a"/>')
     id_provider = IdProvider(context_element)
     nvpair.append_new_nvset(
         "instance_attributes",
         context_element,
         {
             "a": "b",
             "c": "d",
         },
         id_provider
     )
     assert_xml_equal(
         """
             <context id="a">
                 <instance_attributes id="a-instance_attributes">
                     <nvpair
                         id="a-instance_attributes-a" name="a" value="b"
                     />
                     <nvpair
                         id="a-instance_attributes-c" name="c" value="d"
                     />
                 </instance_attributes>
             </context>
         """,
         etree_to_str(context_element)
     )
コード例 #12
0
ファイル: test_group_add.py プロジェクト: tomjelinek/pcs
 def test_group_running(self):
     resources_state = fixture.complete_state_resources(etree.fromstring("""
         <resources>
             <group id="G" number_resources="2">
                 <resource id="R1" role="Started" nodes_running_on="1">
                      <node name="node1" id="1" cached="false" />
                  </resource>
                 <resource id="R2" role="Started" nodes_running_on="1">
                      <node name="node1" id="1" cached="false" />
                  </resource>
             </group>
         </resources>
     """))
     self.config.runner.pcmk.load_state(
         resources=etree_to_str(resources_state)
     )
     resource.group_add(
         self.env_assist.get_env(),
         "G",
         ["R1", "R2"],
         wait=self.timeout,
     )
     self.env_assist.assert_reports([
         fixture.report_resource_running(
             "G",
             {"Started": ["node1"]}
         ),
     ])
コード例 #13
0
ファイル: test_xml_tools.py プロジェクト: tomjelinek/pcs
 def test_different_parent_not_useful(self):
     element = self.tree.find(".//element-B2")
     lib.append_when_useful(self.parent, element)
     assert_xml_equal(
         self.tree_str,
         etree_to_str(self.tree)
     )
コード例 #14
0
ファイル: test_nvpair.py プロジェクト: tomjelinek/pcs
 def test_remove(self):
     nvpair.set_nvpair_in_nvset(self.nvset, "attr2", "", self.id_provider)
     assert_xml_equal(
         """
         <nvset id="nvset">
             <nvpair id="nvset-attr" name="attr" value="1"/>
             <notnvpair id="nvset-test" name="test" value="0"/>
         </nvset>
         """,
         etree_to_str(self.nvset)
     )
コード例 #15
0
ファイル: test_env_cib.py プロジェクト: tomjelinek/pcs
 def test_returns_cib_from_cib_data(self):
     cib_filename = "cib-empty.xml"
     (self.config
         #Value of cib_data is unimportant here. See details in sibling test.
         .env.set_cib_data("whatever")
         .runner.cib.load(filename=cib_filename)
     )
     assert_xml_equal(
         etree_to_str(self.env_assist.get_env().get_cib()),
         open(rc(cib_filename)).read()
     )
コード例 #16
0
ファイル: test_xml_tools.py プロジェクト: tomjelinek/pcs
 def test_new_last(self):
     lib.get_sub_element(self.root, "new_element", "new_id", None)
     assert_xml_equal(
         """
         <root>
             <sub_element/>
             <new_element id="new_id"/>
         </root>
         """,
         etree_to_str(self.root)
     )
コード例 #17
0
ファイル: test_nvpair.py プロジェクト: tomjelinek/pcs
 def test_empty_value_has_no_effect(self):
     nvpair.arrange_first_nvset("nvset", self.root, {}, self.id_provider)
     assert_xml_equal(
         """
             <nvset id="nvset">
                 <nvpair id="nvset-attr" name="attr" value="1"/>
                 <nvpair id="nvset-attr2" name="attr2" value="2"/>
                 <notnvpair id="nvset-test" name="test" value="0"/>
             </nvset>
         """,
         etree_to_str(self.nvset)
     )
コード例 #18
0
ファイル: test_nvpair.py プロジェクト: tomjelinek/pcs
 def test_append_new_nvpair_to_given_element(self):
     nvset_element = etree.fromstring('<nvset id="a"/>')
     id_provider = IdProvider(nvset_element)
     nvpair._append_new_nvpair(nvset_element, "b", "c", id_provider)
     assert_xml_equal(
         etree_to_str(nvset_element),
         """
         <nvset id="a">
             <nvpair id="a-b" name="b" value="c"></nvpair>
         </nvset>
         """
     )
コード例 #19
0
ファイル: test_nvpair.py プロジェクト: tomjelinek/pcs
 def test_empty_value_has_no_effect(self):
     xml = """
         <instance_attributes id="iattrs">
             <nvpair id="iattrs-b" name="a" value="b"/>
             <nvpair id="iattrs-d" name="c" value="d"/>
             <nvpair id="iattrs-f" name="e" value="f"/>
         </instance_attributes>
     """
     nvset_element = etree.fromstring(xml)
     id_provider = IdProvider(nvset_element)
     nvpair.update_nvset(nvset_element, {}, id_provider)
     assert_xml_equal(xml, etree_to_str(nvset_element))
コード例 #20
0
ファイル: test_nvpair.py プロジェクト: tomjelinek/pcs
 def test_with_id_provider(self):
     nvset_element = etree.fromstring('<nvset id="a"/>')
     provider = IdProvider(nvset_element)
     provider.book_ids("a-b")
     nvpair._append_new_nvpair(nvset_element, "b", "c", provider)
     assert_xml_equal(
         etree_to_str(nvset_element),
         """
         <nvset id="a">
             <nvpair id="a-b-1" name="b" value="c"></nvpair>
         </nvset>
         """
     )
コード例 #21
0
 def test_node_pattern(self):
     lib._append_level_element(
         self.tree, "2", TARGET_TYPE_REGEXP, "node-\d+", ["d1", "d2"]
     )
     assert_xml_equal(
         """
         <fencing-topology>
             <fencing-level
                 id="fl-node-d-2"
                 devices="d1,d2" index="2" target-pattern="node-\d+"
             />
         </fencing-topology>
         """,
         etree_to_str(self.tree)
     )
コード例 #22
0
 def test_node_name(self):
     lib._append_level_element(
         self.tree, 1, TARGET_TYPE_NODE, "node1", ["d1"]
     )
     assert_xml_equal(
         """
         <fencing-topology>
             <fencing-level
                 id="fl-node1-1"
                 devices="d1" index="1" target="node1"
             />
         </fencing-topology>
         """,
         etree_to_str(self.tree)
     )
コード例 #23
0
 def test_node_attribute(self):
     lib._append_level_element(
         self.tree, 3, TARGET_TYPE_ATTRIBUTE, ("name%@x", "val%@x"), ["d1"],
     )
     assert_xml_equal(
         """
         <fencing-topology>
             <fencing-level
                 id="fl-namex-3"
                 devices="d1"
                 index="3"
                 target-attribute="name%@x" target-value="val%@x"
             />
         </fencing-topology>
         """,
         etree_to_str(self.tree)
     )
コード例 #24
0
ファイル: test_nvpair.py プロジェクト: tomjelinek/pcs
 def test_keep_empty_nvset(self):
     xml_pre = """
         <resource>
             <instance_attributes id="iattrs">
                 <nvpair id="iattrs-a" name="a" value="b"/>
             </instance_attributes>
         </resource>
     """
     xml_post = """
         <resource>
             <instance_attributes id="iattrs" />
         </resource>
     """
     xml = etree.fromstring(xml_pre)
     nvset_element = xml.find("instance_attributes")
     id_provider = IdProvider(nvset_element)
     nvpair.update_nvset(nvset_element, {"a": ""}, id_provider)
     assert_xml_equal(xml_post, etree_to_str(xml))
コード例 #25
0
ファイル: test_xml_tools.py プロジェクト: tomjelinek/pcs
 def test_different_parent_useful(self):
     element = self.tree.find(".//element-B1")
     lib.append_when_useful(self.parent, element)
     assert_xml_equal(
         """
             <root>
                 <parent-A>
                     <element-A1 />
                     <element-A2 attr="test" />
                     <element-B1 attr="test"/>
                 </parent-A>
                 <parent-B>
                     <element-B2 />
                 </parent-B>
             </root>
         """,
         etree_to_str(self.tree)
     )
コード例 #26
0
ファイル: test_xml_tools.py プロジェクト: tomjelinek/pcs
 def test_index(self):
     element = etree.Element("new", attr="test")
     lib.append_when_useful(self.parent, element, index=1)
     assert_xml_equal(
         """
             <root>
                 <parent-A>
                     <element-A1 />
                     <new attr="test" />
                     <element-A2 attr="test" />
                 </parent-A>
                 <parent-B>
                     <element-B1 attr="test"/>
                     <element-B2 />
                 </parent-B>
             </root>
         """,
         etree_to_str(self.tree)
     )
コード例 #27
0
 def test_no_adjacent(self):
     cib_before = self.cib_resources
     cib_after = """
         <resources>
             <group id="G">
                 <primitive id="RG1" />
                 <primitive id="RG2" />
                 <primitive id="RG3" />
                 <primitive id="R3" />
                 <primitive id="R1" />
             </group>
             <primitive id="R2" />
         </resources>
     """
     cib = etree.fromstring(cib_before)
     relation.move_resources_to_group(
         _resource(cib, "G"),
         _resources(cib, "R3", "R1")
     )
     assert_xml_equal(cib_after, etree_to_str(cib))
コード例 #28
0
ファイル: test_nvpair.py プロジェクト: tomjelinek/pcs
 def test_update_existing_nvset(self):
     nvpair.arrange_first_nvset(
         "nvset",
         self.root,
         {
             "attr": "10",
             "new_one": "20",
             "test": "0",
             "attr2": ""
         },
         self.id_provider
     )
     assert_xml_equal(
         """
             <nvset id="nvset">
                 <nvpair id="nvset-attr" name="attr" value="10"/>
                 <notnvpair id="nvset-test" name="test" value="0"/>
                 <nvpair id="nvset-new_one" name="new_one" value="20"/>
                 <nvpair id="nvset-test-1" name="test" value="0"/>
             </nvset>
         """,
         etree_to_str(self.nvset)
     )
コード例 #29
0
ファイル: mock_push_cib.py プロジェクト: tomjelinek/pcs
    def push_cib(lib_env, custom_cib=None, wait=False):
        i, expected_call = call_queue.take(CALL_TYPE_PUSH_CIB)

        if custom_cib is None and expected_call.custom_cib:
            raise AssertionError(
                (
                    "Trying to call env.push_cib (call no. {0}) without "
                    "a custom cib but a custom cib was expected"
                ).format(i)
            )
        if custom_cib is not None and not expected_call.custom_cib:
            raise AssertionError(
                (
                    "Trying to call env.push_cib (call no. {0}) with a custom "
                    "cib but no custom cib was expected"
                ).format(i)
            )

        assert_xml_equal(
            expected_call.cib_xml,
            etree_to_str(lib_env.cib),
            (
                "Trying to call env.push_cib (call no. {0}) but cib in env does"
                " not match\n\n"
            ).format(i)
        )

        if wait != expected_call.wait:
            raise AssertionError(
                (
                    "Trying to call env.push_cib (call no. {0}) with 'wait' == "
                    "{1} but it was expected 'wait' == {2}"
                ).format(i, wait, expected_call.wait)
            )

        if expected_call.exception:
            raise expected_call.exception
コード例 #30
0
 def test_move_from_another_group(self):
     # pylint: disable=no-self-use
     cib_before = """
         <resources>
             <group id="G">
                 <primitive id="RG1" />
                 <primitive id="RG2" />
                 <primitive id="RG3" />
             </group>
             <group id="X">
                 <primitive id="R1" />
                 <primitive id="R2" />
             </group>
             <primitive id="R3" />
         </resources>
     """
     cib_after = """
         <resources>
             <group id="G">
                 <primitive id="RG1" />
                 <primitive id="RG2" />
                 <primitive id="RG3" />
                 <primitive id="R2" />
             </group>
             <group id="X">
                 <primitive id="R1" />
             </group>
             <primitive id="R3" />
         </resources>
     """
     cib = etree.fromstring(cib_before)
     relation.move_resources_to_group(
         _resource(cib, "G"),
         _resources(cib, "R2"),
     )
     assert_xml_equal(cib_after, etree_to_str(cib))
コード例 #31
0
 def test_success(self):
     lib.remove_device_from_all_levels(self.tree, "d3")
     assert_xml_equal(
         """
         <fencing-topology>
             <fencing-level
                 id="fl1" index="1" devices="d1,d2" target="nodeA"
             />
             <fencing-level
                 id="fl3" index="1" devices="d2,d1" target="nodeB"
             />
             <fencing-level
                 id="fl5" index="1" devices="d4" target-pattern="node\\d+"
             />
             <fencing-level
                 id="fl6" index="2" devices="d1" target-pattern="node\\d+"
             />
             <fencing-level
                 id="fl7" index="3" devices="d4"
                 target-attribute="fencing" target-value="improved"
             />
             <fencing-level
                 id="fl8" index="4" devices="d5"
                 target-attribute="fencing" target-value="improved"
             />
             <fencing-level
                 id="fl9" index="3" devices="dR" target-pattern="node-R.*"
             />
             <fencing-level
                 id="fl10" index="4" devices="dR-special"
                 target-attribute="fencing" target-value="remote-special"
             />
         </fencing-topology>
         """,
         etree_to_str(self.tree),
     )
コード例 #32
0
ファイル: test_hierarchy.py プロジェクト: ldming/pcs
 def test_move_from_another_group(self):
     # pylint: disable=no-self-use
     cib_before = """
         <resources>
             <group id="G">
                 <primitive id="RG1" />
                 <primitive id="RG2" />
                 <primitive id="RG3" />
             </group>
             <group id="X">
                 <primitive id="R1" />
                 <primitive id="R2" />
             </group>
             <primitive id="R3" />
         </resources>
     """
     cib_after = """
         <resources>
             <group id="G">
                 <primitive id="RG1" />
                 <primitive id="RG2" />
                 <primitive id="RG3" />
                 <primitive id="R2" />
             </group>
             <group id="X">
                 <primitive id="R1" />
             </group>
             <primitive id="R3" />
         </resources>
     """
     cib = etree.fromstring(cib_before)
     hierarchy.move_resources_to_group(
         _resource(cib, "G"),
         _resources(cib, "R2"),
     )
     assert_xml_equal(cib_after, etree_to_str(cib))
コード例 #33
0
ファイル: test_xml_tools.py プロジェクト: zht750808/pcs
 def test_not_useful(self):
     element = etree.Element("new")
     lib.append_when_useful(self.parent, element)
     assert_xml_equal(self.tree_str, etree_to_str(self.tree))
コード例 #34
0
ファイル: test_xml_tools.py プロジェクト: zht750808/pcs
 def test_already_appended(self):
     element = self.tree.find(".//element-A2")
     lib.append_when_useful(self.parent, element)
     assert_xml_equal(self.tree_str, etree_to_str(self.tree))
コード例 #35
0
ファイル: test_xml_tools.py プロジェクト: zht750808/pcs
 def test_different_parent_not_useful(self):
     element = self.tree.find(".//element-B2")
     lib.append_when_useful(self.parent, element)
     assert_xml_equal(self.tree_str, etree_to_str(self.tree))
コード例 #36
0
ファイル: test_sections.py プロジェクト: kmalyjur/pcs
 def assert_element_content(section_element, expected_xml):
     assert_xml_equal(etree_to_str(section_element), expected_xml)
コード例 #37
0
ファイル: test_xml_tools.py プロジェクト: zht750808/pcs
 def assert_xml_equal(self, expected):
     assert_xml_equal(expected, etree_to_str(self.el))
コード例 #38
0
ファイル: test_xml_tools.py プロジェクト: zht750808/pcs
 def test_remove_element_without_parent(self):
     lib.remove_one_element(self.root)
     assert_xml_equal("<root><sub/></root>", etree_to_str(self.root))
コード例 #39
0
 def _prepare_state(state):
     return etree_to_str(
         fixture.complete_state_resources(etree.fromstring(state)))
コード例 #40
0
 def test_success(self):
     lib.remove_all_levels(self.tree)
     assert_xml_equal("<fencing-topology />", etree_to_str(self.tree))
コード例 #41
0
 def test_no_such_device(self):
     original_xml = etree_to_str(self.tree)
     lib.remove_device_from_all_levels(self.tree, "dX")
     assert_xml_equal(original_xml, etree_to_str(self.tree))
コード例 #42
0
 def assert_unmanaged(pre, post):
     resource = etree.fromstring(pre)
     common.unmanage(resource, IdProvider(resource))
     assert_xml_equal(post, etree_to_str(resource))
コード例 #43
0
 def test_rule(self):
     context_element = etree.fromstring("""<context id="a" />""")
     id_provider = IdProvider(context_element)
     nvpair_multi.nvset_append_new(
         context_element,
         id_provider,
         Version(3, 5, 0),
         nvpair_multi.NVSET_META,
         {},
         {},
         nvset_rule=BoolExpr(
             BOOL_AND,
             [
                 RscExpr("ocf", "pacemaker", "Dummy"),
                 OpExpr("start", None),
                 BoolExpr(
                     BOOL_OR,
                     [
                         NodeAttrExpr(
                             NODE_ATTR_OP_DEFINED, "attr1", None, None
                         ),
                         NodeAttrExpr(
                             NODE_ATTR_OP_GT,
                             "attr2",
                             "5",
                             NODE_ATTR_TYPE_NUMBER,
                         ),
                     ],
                 ),
             ],
         ),
     )
     assert_xml_equal(
         """
             <context id="a">
                 <meta_attributes id="a-meta_attributes">
                     <rule id="a-meta_attributes-rule"
                         boolean-op="and" score="INFINITY"
                     >
                         <rsc_expression
                             id="a-meta_attributes-rule-rsc-ocf-pacemaker-Dummy"
                             class="ocf" provider="pacemaker" type="Dummy"
                         />
                         <op_expression id="a-meta_attributes-rule-op-start" 
                             name="start"
                         />
                         <rule id="a-meta_attributes-rule-rule"
                             boolean-op="or" score="0"
                         >
                             <expression id="a-meta_attributes-rule-rule-expr"
                                 operation="defined" attribute="attr1"
                             />
                             <expression id="a-meta_attributes-rule-rule-expr-1"
                                 attribute="attr2" operation="gt"
                                 type="number" value="5"
                             />
                         </rule>
                     </rule>
                 </meta_attributes>
             </context>
         """,
         etree_to_str(context_element),
     )
コード例 #44
0
ファイル: fixture_cib.py プロジェクト: YutoFukuda/pcs
def _find_all_in(cib_tree, element_xpath):
    element_list = cib_tree.xpath(element_xpath)
    if not element_list:
        raise AssertionError("Cannot find '{0}' in given cib:\n{1}".format(
            element_xpath, etree_to_str(cib_tree)))
    return element_list
コード例 #45
0
 def test_found(self):
     assert_xml_equal(
         etree_to_str(node._get_node_by_uname(self.nodes, "name-test1")),
         """<node id="id-test1" uname="name-test1" />""",
     )
コード例 #46
0
 def test_node_already_exists(self):
     assert_xml_equal(
         etree_to_str(node._ensure_node_exists(self.nodes, "name-test1")),
         etree_to_str(self.node1),
     )
コード例 #47
0
ファイル: test_xml_tools.py プロジェクト: zht750808/pcs
 def test_not_useful_with_attributes(self):
     element = etree.Element("new", attr="test")
     lib.append_when_useful(self.parent, element, attribs_important=False)
     assert_xml_equal(self.tree_str, etree_to_str(self.tree))
コード例 #48
0
ファイル: test_parsed_to_cib.py プロジェクト: liuxiran/pcs
 def assert_cib(tree, expected_xml):
     xml = etree.fromstring('<root id="X"/>')
     rule.rule_to_cib(xml, IdProvider(xml), tree)
     assert_xml_equal('<root id="X">' + expected_xml + "</root>",
                      etree_to_str(xml))
コード例 #49
0
ファイル: test_xml_tools.py プロジェクト: zht750808/pcs
 def test_remove_element_with_parent(self):
     lib.remove_one_element(self.sub)
     assert_xml_equal("<root/>", etree_to_str(self.root))
コード例 #50
0
ファイル: config_runner_pcmk.py プロジェクト: wuyeliang/pcs
    def load_state(self,
                   name="runner.pcmk.load_state",
                   filename="crm_mon.minimal.xml",
                   resources=None,
                   raw_resources=None,
                   nodes=None,
                   stdout="",
                   stderr="",
                   returncode=0):
        """
        Create call for loading pacemaker state.

        string name -- key of the call
        string filename -- points to file with the status in the content
        string resources -- xml - resources section, will be put to state
        string nodes -- iterable of node dicts
        string stdout -- crm_mon's stdout
        string stderr -- crm_mon's stderr
        int returncode -- crm_mon's returncode
        """
        if ((resources or raw_resources is not None or nodes)
                and (stdout or stderr or returncode)):
            raise AssertionError(
                "Cannot specify resources or nodes when stdout, stderr or "
                "returncode is specified")
        if resources and raw_resources is not None:
            raise AssertionError(
                "Cannot use 'resources' and 'raw_resources' together")

        if (stdout or stderr or returncode):
            self.__calls.place(
                name,
                RunnerCall("crm_mon --one-shot --as-xml --inactive",
                           stdout=stdout,
                           stderr=stderr,
                           returncode=returncode))
            return

        state = etree.fromstring(open(rc(filename)).read())

        if raw_resources is not None:
            resources = fixture_state_resources_xml(**raw_resources)
        if resources:
            state.append(complete_state_resources(etree.fromstring(resources)))

        if nodes:
            nodes_element = state.find("./nodes")
            for node in nodes:
                nodes_element.append(
                    etree.fromstring(fixture_state_node_xml(**node)))

        # set correct number of nodes and resources into the status
        resources_count = len(
            state.xpath(" | ".join([
                "./resources/bundle",
                "./resources/clone",
                "./resources/group",
                "./resources/resource",
            ])))
        nodes_count = len(state.findall("./nodes/node"))
        state.find("./summary/nodes_configured").set("number",
                                                     str(nodes_count))
        state.find("./summary/resources_configured").set(
            "number", str(resources_count))

        self.__calls.place(
            name,
            RunnerCall(
                "crm_mon --one-shot --as-xml --inactive",
                stdout=etree_to_str(state),
            ))
コード例 #51
0
ファイル: test_node.py プロジェクト: wuyeliang/pcs
 def test_node_missing_and_gets_created(self):
     assert_xml_equal(
         etree_to_str(
             node._ensure_node_exists(self.nodes,
                                      "name-test2", self.state)),
         etree_to_str(self.node2))
コード例 #52
0
ファイル: fixture_cib.py プロジェクト: YutoFukuda/pcs
def _cannot_multireplace(tag, parent_xpath, cib_tree):
    return AssertionError(
        ("Cannot replace '{element}' in '{parent}' because '{parent}'"
         " contains more than one '{element}' in given cib:\n{cib}").format(
             element=tag, parent=parent_xpath, cib=etree_to_str(cib_tree)))