def setUp(self): self.agent = lib_ra.StonithAgent( mock.MagicMock(spec_set=CommandRunner), "fence_dummy") self.metadata = etree.XML(""" <resource-agent> <parameters> <parameter name="test_param" required="0"> <longdesc>Long description</longdesc> <shortdesc>short description</shortdesc> <content type="string" default="default_value" /> </parameter> <parameter name="required_param" required="1"> <content type="boolean" /> </parameter> <parameter name="action"> <content type="string" default="reboot" /> <shortdesc>Fencing action</shortdesc> </parameter> </parameters> </resource-agent> """) patcher = mock.patch.object(lib_ra.StonithAgent, "_get_metadata") self.addCleanup(patcher.stop) self.get_metadata = patcher.start() self.get_metadata.return_value = self.metadata patcher_stonithd = mock.patch.object(lib_ra.StonithdMetadata, "_get_metadata") self.addCleanup(patcher_stonithd.stop) self.get_stonithd_metadata = patcher_stonithd.start() self.get_stonithd_metadata.return_value = etree.XML(""" <resource-agent> <parameters /> </resource-agent> """)
def setUp(self): self.mock_runner = mock.MagicMock(spec_set=CommandRunner) self.agent_name = "fence_dummy" self.agent = lib_ra.StonithAgent( self.mock_runner, self.agent_name )
def get_fence_agent_info(lib, argv, modifiers): """ Options: no options """ del lib modifiers.ensure_only_supported() if len(argv) != 1: utils.err("One parameter expected") agent = argv[0] if not agent.startswith("stonith:"): utils.err("Invalid fence agent name") runner = utils.cmd_runner() try: metadata = lib_ra.StonithAgent(runner, agent[len("stonith:"):]) info = metadata.get_full_info() info["name"] = "stonith:{0}".format(info["name"]) print(json.dumps(info)) except lib_ra.ResourceAgentError as e: process_library_reports( [lib_ra.resource_agent_error_to_report_item(e)]) except LibraryError as e: process_library_reports(e.args)
def setUp(self): self.agent = lib_ra.StonithAgent( mock.MagicMock(spec_set=CommandRunner), "fence_dummy") self.metadata = etree.XML(""" <resource-agent> <parameters> <parameter name="test_param" required="0"> <longdesc>Long description</longdesc> <shortdesc>short description</shortdesc> <content type="string" default="default_value" /> </parameter> <parameter name="required_param" required="1"> <content type="boolean" /> </parameter> <parameter name="action"> <content type="string" default="reboot" /> <shortdesc>Fencing action</shortdesc> </parameter> </parameters> </resource-agent> """) patcher = mock.patch.object(lib_ra.StonithAgent, "_get_metadata") self.addCleanup(patcher.stop) self.get_metadata = patcher.start() self.get_metadata.return_value = self.metadata patcher_fenced = mock.patch.object(lib_ra.FencedMetadata, "_get_metadata") self.addCleanup(patcher_fenced.stop) self.get_fenced_metadata = patcher_fenced.start() self.get_fenced_metadata.return_value = etree.XML(""" <resource-agent> <parameters /> </resource-agent> """) self.report_error = ( severity.ERROR, report_codes.DEPRECATED_OPTION, { "option_name": "action", "option_type": "stonith", "replaced_by": ["pcmk_off_action", "pcmk_reboot_action"], }, report_codes.FORCE_OPTIONS, ) self.report_warning = ( severity.WARNING, report_codes.DEPRECATED_OPTION, { "option_name": "action", "option_type": "stonith", "replaced_by": ["pcmk_off_action", "pcmk_reboot_action"], }, None, )
def describe_agent(lib_env, agent_name): """ Get agent's description (metadata) in a structure string agent_name name of the agent (not containing "stonith:" prefix) """ try: metadata = resource_agent.StonithAgent(lib_env.cmd_runner(), agent_name) return metadata.get_full_info() except resource_agent.ResourceAgentError as e: raise LibraryError( resource_agent.resource_agent_error_to_report_item(e))
def get_fence_agent_info(argv): # This is used only by pcsd, will be removed in new architecture if len(argv) != 1: utils.err("One parameter expected") agent = argv[0] if not agent.startswith("stonith:"): utils.err("Invalid fence agent name") runner = utils.cmd_runner() try: metadata = lib_ra.StonithAgent(runner, agent[len("stonith:"):]) info = metadata.get_full_info() info["name"] = "stonith:{0}".format(info["name"]) print(json.dumps(info)) except lib_ra.ResourceAgentError as e: utils.process_library_reports( [lib_ra.resource_agent_error_to_report_item(e)]) except LibraryError as e: utils.process_library_reports(e.args)
def stonith_create(argv): if len(argv) < 2: usage.stonith(["create"]) sys.exit(1) stonith_id = argv.pop(0) stonith_type = argv.pop(0) st_values, op_values, meta_values = resource.parse_resource_options( argv, with_clone=False ) try: metadata = lib_ra.StonithAgent( utils.cmd_runner(), stonith_type ) if metadata.get_provides_unfencing(): meta_values = [ meta for meta in meta_values if not meta.startswith("provides=") ] meta_values.append("provides=unfencing") except lib_ra.ResourceAgentError as e: forced = utils.get_modificators().get("force", False) if forced: severity = ReportItemSeverity.WARNING else: severity = ReportItemSeverity.ERROR utils.process_library_reports([ lib_ra.resource_agent_error_to_report_item( e, severity, not forced ) ]) except LibraryError as e: utils.process_library_reports(e.args) resource.resource_create( stonith_id, "stonith:" + stonith_type, st_values, op_values, meta_values, group=utils.pcs_options.get("--group", None) )
def setUp(self): self.agent = lib_ra.StonithAgent( mock.MagicMock(spec_set=CommandRunner), "fence_dummy")
def test_success(self): mock_runner = mock.MagicMock(spec_set=CommandRunner) agent_name = "fence_dummy" agent = lib_ra.StonithAgent(mock_runner, agent_name) self.assertEqual(agent.get_name(), agent_name)