コード例 #1
0
ファイル: test_add_link.py プロジェクト: simhaonline/pcs
 def test_success(self):
     (self.config.corosync_conf.load_content(
         self.before).runner.cib.load().env.push_corosync_conf(
             corosync_conf_text=self.after))
     cluster.add_link(
         self.env_assist.get_env(),
         self.node_addr_map,
         self.link_options,
     )
     # Reports from pushing corosync.conf are produced in env. That code is
     # hidden in self.config.env.push_corosync_conf.
     self.env_assist.assert_reports([])
コード例 #2
0
ファイル: test_add_link.py プロジェクト: simhaonline/pcs
 def test_offline_nodes(self):
     (self.config.corosync_conf.load_content(
         self.before).runner.cib.load().env.push_corosync_conf(
             corosync_conf_text=self.after,
             skip_offline_targets=True,
         ))
     cluster.add_link(
         self.env_assist.get_env(),
         self.node_addr_map,
         self.link_options,
         force_flags=[report_codes.SKIP_OFFLINE_NODES],
     )
コード例 #3
0
ファイル: test_add_link.py プロジェクト: tomjelinek/pcs
 def test_success(self):
     (self.config
         .corosync_conf.load_content(self.before)
         .runner.cib.load()
         .env.push_corosync_conf(corosync_conf_text=self.after)
     )
     cluster.add_link(
         self.env_assist.get_env(),
         self.node_addr_map,
         self.link_options,
     )
     # Reports from pushing corosync.conf are produced in env. That code is
     # hidden in self.config.env.push_corosync_conf.
     self.env_assist.assert_reports([])
コード例 #4
0
ファイル: test_add_link.py プロジェクト: simhaonline/pcs
 def test_cib_not_available_forced(self):
     (self.config.corosync_conf.load_content(self.before).runner.cib.load(
         stderr="an error", returncode=1).env.push_corosync_conf(
             corosync_conf_text=self.after))
     cluster.add_link(
         self.env_assist.get_env(),
         self.node_addr_map,
         self.link_options,
         force_flags=[report_codes.FORCE],
     )
     self.env_assist.assert_reports([
         fixture.warn(
             report_codes.CIB_LOAD_ERROR_GET_NODES_FOR_VALIDATION, ),
     ])
コード例 #5
0
ファイル: test_add_link.py プロジェクト: tomjelinek/pcs
 def test_offline_nodes(self):
     (self.config
         .corosync_conf.load_content(self.before)
         .runner.cib.load()
         .env.push_corosync_conf(
             corosync_conf_text=self.after,
             skip_offline_targets=True,
         )
     )
     cluster.add_link(
         self.env_assist.get_env(),
         self.node_addr_map,
         self.link_options,
         force_flags=[report_codes.SKIP_OFFLINE_NODES]
     )
コード例 #6
0
ファイル: test_add_link.py プロジェクト: simhaonline/pcs
 def test_cib_remote_node(self):
     resources = f"""
         <resources>
             <primitive class="ocf" provider="pacemaker" type="remote"
                 id="R"
             >
                 <instance_attributes>
                     <nvpair name="server"
                         value="{self.node_addr_map['node1']}"
                     />
                 </instance_attributes>
             </primitive>
         </resources>
     """
     (self.config.corosync_conf.load_content(
         self.before).runner.cib.load(resources=resources))
     self.env_assist.assert_raise_library_error(
         lambda: cluster.add_link(
             self.env_assist.get_env(),
             self.node_addr_map,
             self.link_options,
         ),
         [],
     )
     self.env_assist.assert_reports([
         fixture.error(
             report_codes.NODE_ADDRESSES_ALREADY_EXIST,
             address_list=[self.node_addr_map["node1"]],
         ),
     ])
コード例 #7
0
ファイル: test_add_link.py プロジェクト: simhaonline/pcs
 def test_validation(self):
     patch_getaddrinfo(self, ["node2-addr0"])
     (self.config.corosync_conf.load_content(self.before).runner.cib.load())
     self.env_assist.assert_raise_library_error(
         lambda: cluster.add_link(
             self.env_assist.get_env(),
             {
                 "node2": "node2-addr0",
                 "node3": "node2-addr0",
             },
             {
                 "wrong": "option",
                 "linknumber": "2",
             },
         ),
         [],
     )
     self.env_assist.assert_reports([
         fixture.error(
             report_codes.COROSYNC_BAD_NODE_ADDRESSES_COUNT,
             actual_count=0,
             min_count=1,
             max_count=1,
             node_name="node1",
             node_index=None,
         ),
         fixture.error(
             report_codes.NODE_NOT_FOUND,
             node="node3",
             searched_types=[],
         ),
         fixture.error(
             report_codes.NODE_ADDRESSES_ALREADY_EXIST,
             address_list=["node2-addr0"],
         ),
         fixture.error(
             report_codes.NODE_ADDRESSES_DUPLICATION,
             address_list=["node2-addr0"],
         ),
         fixture.error(
             report_codes.INVALID_OPTIONS,
             option_names=["wrong"],
             option_type="link",
             allowed=[
                 "link_priority",
                 "linknumber",
                 "mcastport",
                 "ping_interval",
                 "ping_precision",
                 "ping_timeout",
                 "pong_count",
                 "transport",
             ],
             allowed_patterns=[],
         ),
         fixture.error(
             report_codes.COROSYNC_LINK_ALREADY_EXISTS_CANNOT_ADD,
             link_number="2",
         ),
     ])
コード例 #8
0
ファイル: test_add_link.py プロジェクト: tomjelinek/pcs
 def test_validation(self):
     patch_getaddrinfo(self, ["node2-addr0"])
     (self.config
         .corosync_conf.load_content(self.before)
         .runner.cib.load()
     )
     self.env_assist.assert_raise_library_error(
         lambda: cluster.add_link(
             self.env_assist.get_env(),
             {
                 "node2": "node2-addr0",
                 "node3": "node2-addr0",
             },
             {
                 "wrong": "option",
                 "linknumber": "2",
             }
         ),
         []
     )
     self.env_assist.assert_reports(
         [
             fixture.error(
                 report_codes.COROSYNC_BAD_NODE_ADDRESSES_COUNT,
                 actual_count=0,
                 min_count=1,
                 max_count=1,
                 node_name="node1",
                 node_index=None,
             ),
             fixture.error(
                 report_codes.NODE_NOT_FOUND,
                 node="node3",
                 searched_types=[],
             ),
             fixture.error(
                 report_codes.NODE_ADDRESSES_ALREADY_EXIST,
                 address_list=["node2-addr0"],
             ),
             fixture.error(
                 report_codes.NODE_ADDRESSES_DUPLICATION,
                 address_list=["node2-addr0"],
             ),
             fixture.error(
                 report_codes.INVALID_OPTIONS,
                 option_names=["wrong"],
                 option_type="link",
                 allowed=[
                     "link_priority", "linknumber", "mcastport",
                     "ping_interval", "ping_precision", "ping_timeout",
                     "pong_count", "transport",
                 ],
                 allowed_patterns=[],
             ),
             fixture.error(
                 report_codes.COROSYNC_LINK_ALREADY_EXISTS_CANNOT_ADD,
                 link_number="2",
             ),
         ]
     )
コード例 #9
0
ファイル: test_add_link.py プロジェクト: tomjelinek/pcs
 def test_cib_remote_node(self):
     resources = f"""
         <resources>
             <primitive class="ocf" provider="pacemaker" type="remote"
                 id="R"
             >
                 <instance_attributes>
                     <nvpair name="server"
                         value="{self.node_addr_map['node1']}"
                     />
                 </instance_attributes>
             </primitive>
         </resources>
     """
     (self.config
         .corosync_conf.load_content(self.before)
         .runner.cib.load(resources=resources)
     )
     self.env_assist.assert_raise_library_error(
         lambda: cluster.add_link(
             self.env_assist.get_env(),
             self.node_addr_map,
             self.link_options,
         ),
         []
     )
     self.env_assist.assert_reports(
         [
             fixture.error(
                 report_codes.NODE_ADDRESSES_ALREADY_EXIST,
                 address_list=[self.node_addr_map["node1"]],
             ),
         ]
     )
コード例 #10
0
ファイル: test_add_link.py プロジェクト: wuyeliang/pcs
 def test_cib_guest_node(self):
     resources = f"""
         <resources>
             <primitive id="R">
                 <meta_attributes>
                     <nvpair name="remote-node" value="node-remote" />
                     <nvpair name="remote-addr"
                         value="{self.node_addr_map['node1']}"
                     />
                 </meta_attributes>
             </primitive>
         </resources>
     """
     (self.config
         .corosync_conf.load_content(self.before)
         .runner.cib.load(resources=resources)
     )
     self.env_assist.assert_raise_library_error(
         lambda: cluster.add_link(
             self.env_assist.get_env(),
             self.node_addr_map,
             self.link_options,
         ),
         []
     )
     self.env_assist.assert_reports(
         [
             fixture.error(
                 report_codes.NODE_ADDRESSES_ALREADY_EXIST,
                 address_list=[self.node_addr_map["node1"]],
             ),
         ]
     )
コード例 #11
0
ファイル: test_add_link.py プロジェクト: wuyeliang/pcs
 def test_missing_input_data(self):
     (self.config
         .corosync_conf.load_content(self.before)
         .runner.cib.load()
     )
     self.env_assist.assert_raise_library_error(
         lambda: cluster.add_link(
             self.env_assist.get_env(),
             {},
             {}
         ),
         []
     )
     self.env_assist.assert_reports(
         [
             fixture.error(
                 report_codes.COROSYNC_BAD_NODE_ADDRESSES_COUNT,
                 actual_count=0,
                 min_count=1,
                 max_count=1,
                 node_name=node_name,
                 node_index=None,
             )
             for node_name in self.node_addr_map
         ]
     )
コード例 #12
0
ファイル: test_add_link.py プロジェクト: simhaonline/pcs
 def test_unresolvable_addresses_forced(self):
     patch_getaddrinfo(self, [])
     (self.config.corosync_conf.load_content(
         self.before).runner.cib.load().env.push_corosync_conf(
             corosync_conf_text=self.after))
     cluster.add_link(
         self.env_assist.get_env(),
         self.node_addr_map,
         self.link_options,
         force_flags=[report_codes.FORCE],
     )
     self.env_assist.assert_reports([
         fixture.warn(
             report_codes.NODE_ADDRESSES_UNRESOLVABLE,
             address_list=list(self.node_addr_map.values()),
         )
     ])
コード例 #13
0
ファイル: test_add_link.py プロジェクト: tomjelinek/pcs
 def test_cib_not_available_forced(self):
     (self.config
         .corosync_conf.load_content(self.before)
         .runner.cib.load(stderr="an error", returncode=1)
         .env.push_corosync_conf(corosync_conf_text=self.after)
     )
     cluster.add_link(
         self.env_assist.get_env(),
         self.node_addr_map,
         self.link_options,
         force_flags=[report_codes.FORCE]
     )
     self.env_assist.assert_reports(
         [
             fixture.warn(
                 report_codes.CIB_LOAD_ERROR_GET_NODES_FOR_VALIDATION,
             ),
         ]
     )
コード例 #14
0
ファイル: test_add_link.py プロジェクト: wuyeliang/pcs
    def test_missing_node_names(self):
        before = dedent("""\
            totem {
                transport: knet
            }

            nodelist {
                node {
                    ring0_addr: node1-addr0
                    ring2_addr: node1-addr2
                    name: node1
                    nodeid: 1
                }

                node {
                    ring0_addr: node2-addr0
                    ring2_addr: node2-addr2
                    nodeid: 2
                }
            }
            """
        )
        (self.config
            .corosync_conf.load_content(before)
            .runner.cib.load()
        )
        self.env_assist.assert_raise_library_error(
            lambda: cluster.add_link(
                self.env_assist.get_env(),
                self.node_addr_map,
                self.link_options,
            ),
            [],
        )
        self.env_assist.assert_reports(
            [
                fixture.error(
                    report_codes.COROSYNC_CONFIG_MISSING_NAMES_OF_NODES,
                    fatal=True,
                ),
                fixture.error(
                    report_codes.COROSYNC_BAD_NODE_ADDRESSES_COUNT,
                    actual_count=0,
                    min_count=1,
                    max_count=1,
                    node_name=None,
                    node_index=None,
                ),
                fixture.error(
                    report_codes.NODE_NOT_FOUND,
                    node="node2",
                    searched_types=[],
                ),
            ]
        )
コード例 #15
0
ファイル: test_add_link.py プロジェクト: tomjelinek/pcs
 def test_unresolvable_addresses_forced(self):
     patch_getaddrinfo(self, [])
     (self.config
         .corosync_conf.load_content(self.before)
         .runner.cib.load()
         .env.push_corosync_conf(corosync_conf_text=self.after)
     )
     cluster.add_link(
         self.env_assist.get_env(),
         self.node_addr_map,
         self.link_options,
         force_flags=[report_codes.FORCE]
     )
     self.env_assist.assert_reports(
         [
             fixture.warn(
                 report_codes.NODE_ADDRESSES_UNRESOLVABLE,
                 address_list=list(self.node_addr_map.values()),
             )
         ]
     )
コード例 #16
0
ファイル: test_add_link.py プロジェクト: simhaonline/pcs
 def test_not_live(self):
     (self.config.env.set_corosync_conf_data(self.before))
     self.env_assist.assert_raise_library_error(
         lambda: cluster.add_link(
             self.env_assist.get_env(),
             self.node_addr_map,
             self.link_options,
         ),
         [
             fixture.error(
                 report_codes.LIVE_ENVIRONMENT_REQUIRED,
                 forbidden_options=["COROSYNC_CONF"],
             ),
         ],
         expected_in_processor=False,
     )
コード例 #17
0
ファイル: test_add_link.py プロジェクト: simhaonline/pcs
 def test_cib_not_available(self):
     (self.config.corosync_conf.load_content(self.before).runner.cib.load(
         stderr="an error", returncode=1))
     self.env_assist.assert_raise_library_error(
         lambda: cluster.add_link(
             self.env_assist.get_env(),
             self.node_addr_map,
             self.link_options,
         ),
         [],
     )
     self.env_assist.assert_reports([
         fixture.error(
             report_codes.CIB_LOAD_ERROR_GET_NODES_FOR_VALIDATION,
             force_code=report_codes.FORCE_LOAD_NODES_FROM_CIB,
         ),
     ])
コード例 #18
0
ファイル: test_add_link.py プロジェクト: tomjelinek/pcs
 def test_not_live(self):
     (self.config
         .env.set_corosync_conf_data(self.before)
     )
     self.env_assist.assert_raise_library_error(
         lambda: cluster.add_link(
             self.env_assist.get_env(),
             self.node_addr_map,
             self.link_options,
         ),
         [
             fixture.error(
                 report_codes.LIVE_ENVIRONMENT_REQUIRED,
                 forbidden_options=["COROSYNC_CONF"]
             ),
         ],
         expected_in_processor=False
     )
コード例 #19
0
ファイル: test_add_link.py プロジェクト: simhaonline/pcs
 def test_unresolvable_addresses(self):
     patch_getaddrinfo(self, [])
     (self.config.corosync_conf.load_content(self.before).runner.cib.load())
     self.env_assist.assert_raise_library_error(
         lambda: cluster.add_link(
             self.env_assist.get_env(),
             self.node_addr_map,
             self.link_options,
         ),
         [],
     )
     self.env_assist.assert_reports([
         fixture.error(
             report_codes.NODE_ADDRESSES_UNRESOLVABLE,
             force_code=report_codes.FORCE_NODE_ADDRESSES_UNRESOLVABLE,
             address_list=list(self.node_addr_map.values()),
         )
     ])
コード例 #20
0
ファイル: test_add_link.py プロジェクト: tomjelinek/pcs
 def test_cib_not_available(self):
     (self.config
         .corosync_conf.load_content(self.before)
         .runner.cib.load(stderr="an error", returncode=1)
     )
     self.env_assist.assert_raise_library_error(
         lambda: cluster.add_link(
             self.env_assist.get_env(),
             self.node_addr_map,
             self.link_options,
         ),
         []
     )
     self.env_assist.assert_reports(
         [
             fixture.error(
                 report_codes.CIB_LOAD_ERROR_GET_NODES_FOR_VALIDATION,
                 force_code=report_codes.FORCE_LOAD_NODES_FROM_CIB,
             ),
         ]
     )
コード例 #21
0
ファイル: test_add_link.py プロジェクト: tomjelinek/pcs
 def test_unresolvable_addresses(self):
     patch_getaddrinfo(self, [])
     (self.config
         .corosync_conf.load_content(self.before)
         .runner.cib.load()
     )
     self.env_assist.assert_raise_library_error(
         lambda: cluster.add_link(
             self.env_assist.get_env(),
             self.node_addr_map,
             self.link_options,
         ),
         []
     )
     self.env_assist.assert_reports(
         [
             fixture.error(
                 report_codes.NODE_ADDRESSES_UNRESOLVABLE,
                 force_code=report_codes.FORCE_NODE_ADDRESSES_UNRESOLVABLE,
                 address_list=list(self.node_addr_map.values()),
             )
         ]
     )