示例#1
0
 def test_put_new_constraint_to_constraint_section(self):
     self.create()
     self.env.push_cib.assert_called_once_with()
     self.independent_cib.find(".//constraints").append(
         etree.XML(f"""
         <rsc_some id="some_id" symmetrical="true">
               <resource_set id="some_id_set" role="{const.PCMK_ROLE_PROMOTED_PRIMARY}">
                   <resource_ref id="A"></resource_ref>
                   <resource_ref id="B"></resource_ref>
               </resource_set>
               <resource_set action="start" id="some_id_set-1">
                   <resource_ref id="E"></resource_ref>
                   <resource_ref id="F"></resource_ref>
               </resource_set>
         </rsc_some>
     """))
     assert_xml_equal(
         etree.tostring(self.independent_cib).decode(),
         etree.tostring(self.cib).decode(),
     )
     self.env.report_processor.assert_reports([
         fixture.deprecation(
             report_codes.DEPRECATED_OPTION_VALUE,
             option_name="role",
             deprecated_value=self.role,
             replaced_by=const.PCMK_ROLE_PROMOTED,
         )
     ])
示例#2
0
 def test_prepare_correct_options(self, mock_create_id, _):
     mock_create_id.return_value = "generated_id"
     role = str(const.PCMK_ROLE_PROMOTED_LEGACY).lower()
     self.assertEqual(
         {
             "id": "generated_id",
             "loss-policy": "fence",
             "rsc": "resourceA",
             "rsc-role": const.PCMK_ROLE_PROMOTED_PRIMARY,
             "ticket": "ticket-key",
         },
         self.prepare(
             {
                 "loss-policy": "fence",
                 "rsc-role": role
             },
             "ticket-key",
             "resourceA",
         ),
     )
     self.report_processor.assert_reports([
         fixture.deprecation(
             report_codes.DEPRECATED_OPTION_VALUE,
             option_name="role",
             deprecated_value=role,
             replaced_by=const.PCMK_ROLE_PROMOTED,
         )
     ])
示例#3
0
 def test_refuse_duplicate(self):
     self.create()
     self.env.push_cib.assert_called_once_with()
     assert_raise_library_error(self.create)
     self.env.report_processor.assert_reports([
         (
             severities.ERROR,
             report_codes.DUPLICATE_CONSTRAINTS_EXIST,
             {
                 "constraint_ids": ["some_id"],
             },
             report_codes.FORCE,
         ),
         (
             severities.INFO,
             report_codes.DUPLICATE_CONSTRAINTS_LIST,
             {
                 "constraint_type":
                 "rsc_some",
                 "constraint_info_list": [{
                     "options": {
                         "symmetrical": "true",
                         "id": "some_id",
                     },
                     "resource_sets": [
                         {
                             "ids": ["A", "B"],
                             "options": {
                                 "role": const.PCMK_ROLE_PROMOTED_PRIMARY,
                                 "id": "some_id_set",
                             },
                         },
                         {
                             "ids": ["E", "F"],
                             "options": {
                                 "action": "start",
                                 "id": "some_id_set-1",
                             },
                         },
                     ],
                 }],
             },
         ),
     ] + [
         fixture.deprecation(
             report_codes.DEPRECATED_OPTION_VALUE,
             option_name="role",
             deprecated_value=self.role,
             replaced_by=const.PCMK_ROLE_PROMOTED,
         ) for _ in range(2)
     ])
示例#4
0
 def test_return_legacy_role_deprecation(self):
     self.assert_operation_produces_report(
         {
             "name": "monitor",
             "role": const.PCMK_ROLE_PROMOTED_LEGACY,
         },
         [
             fixture.deprecation(
                 report_codes.DEPRECATED_OPTION_VALUE,
                 option_name="role",
                 deprecated_value=const.PCMK_ROLE_PROMOTED_LEGACY,
                 replaced_by=const.PCMK_ROLE_PROMOTED,
             ),
         ],
     )
示例#5
0
    def test_sucess_create(self):
        env_assist, config = get_env_tools(test_case=self)
        (
            config.runner.cib.load(
                filename="cib-empty-3.7.xml",
                resources="""
                    <resources>
                        <primitive id="resourceA" class="service" type="exim"/>
                    </resources>
                """,
            ).env.push_cib(
                optional_in_conf="""
                    <constraints>
                        <rsc_ticket
                            id="ticket-ticketA-resourceA-{role}"
                            rsc="resourceA"
                            rsc-role="{role}"
                            ticket="ticketA"
                            loss-policy="fence"
                        />
                    </constraints>
                """.format(
                    role=const.PCMK_ROLE_PROMOTED_PRIMARY
                )
            )
        )
        role = str(const.PCMK_ROLE_PROMOTED_LEGACY).lower()

        ticket_command.create(
            env_assist.get_env(),
            "ticketA",
            "resourceA",
            {
                "loss-policy": "fence",
                "rsc-role": role,
            },
        )
        env_assist.assert_reports(
            [
                fixture.deprecation(
                    report_codes.DEPRECATED_OPTION_VALUE,
                    option_name="role",
                    deprecated_value=role,
                    replaced_by=const.PCMK_ROLE_PROMOTED,
                )
            ]
        )
示例#6
0
 def test_refuse_missing_ticket(self, _):
     role = str(const.PCMK_ROLE_UNPROMOTED_LEGACY).lower()
     assert_raise_library_error(
         lambda: self.prepare({
             "id": "id",
             "rsc-role": role
         }, "", "resourceA"), )
     self.report_processor.assert_reports([
         fixture.error(
             report_codes.REQUIRED_OPTIONS_ARE_MISSING,
             option_names=["ticket"],
             option_type=None,
         ),
         fixture.deprecation(
             report_codes.DEPRECATED_OPTION_VALUE,
             option_name="role",
             deprecated_value=role,
             replaced_by=const.PCMK_ROLE_UNPROMOTED,
         ),
     ])