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, ) ])
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, ) ])
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) ])
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, ), ], )
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, ) ] )
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, ), ])