def describe_agent( lib_env: LibraryEnvironment, agent_name: str ) -> Dict[str, Any]: """ Get agent's description (metadata) in a structure agent_name -- name of the agent """ runner = lib_env.cmd_runner() report_processor = lib_env.report_processor agent_factory = ResourceAgentFacadeFactory(runner, report_processor) try: found_name = ( split_resource_agent_name(agent_name) if ":" in agent_name else find_one_resource_agent_by_type( runner, report_processor, agent_name ) ) return _agent_metadata_to_dict( agent_factory.facade_from_parsed_name(found_name).metadata, describe=True, ) except ResourceAgentError as e: lib_env.report_processor.report(resource_agent_error_to_report_item(e)) raise LibraryError() from e
def _get_agent_facade( report_processor: reports.ReportProcessor, factory: ResourceAgentFacadeFactory, name: str, allow_absent_agent: bool, ) -> ResourceAgentFacade: try: if ":" in name: raise InvalidResourceAgentName(name) full_name = ResourceAgentName("stonith", None, name) return factory.facade_from_parsed_name(full_name) except (UnableToGetAgentMetadata, UnsupportedOcfVersion) as e: if allow_absent_agent: report_processor.report( resource_agent_error_to_report_item( e, reports.ReportItemSeverity.warning(), is_stonith=True)) return factory.void_facade_from_parsed_name(full_name) report_processor.report( resource_agent_error_to_report_item( e, reports.ReportItemSeverity.error(reports.codes.FORCE), is_stonith=True, )) raise LibraryError() from e except ResourceAgentError as e: report_processor.report( resource_agent_error_to_report_item( e, reports.ReportItemSeverity.error(), is_stonith=True)) raise LibraryError() from e
def _complete_agent_list( runner: CommandRunner, report_processor: ReportProcessor, agent_names: Iterable[ResourceAgentName], describe: bool, search: Optional[str], ) -> List[Dict[str, Any]]: agent_factory = ResourceAgentFacadeFactory(runner, report_processor) search_lower = search.lower() if search else None agent_list = [] for name in agent_names: if search_lower and search_lower not in name.full_name.lower(): continue try: metadata = ( agent_factory.facade_from_parsed_name(name).metadata if describe else name_to_void_metadata(name) ) agent_list.append(_agent_metadata_to_dict(metadata, describe)) except ResourceAgentError as e: report_processor.report( resource_agent_error_to_report_item( e, ReportItemSeverity.warning() ) ) return agent_list
def _get_agent_facade( report_processor: reports.ReportProcessor, factory: ResourceAgentFacadeFactory, allow_absent_agent: bool, name: ResourceAgentName, ) -> ResourceAgentFacade: try: return factory.facade_from_parsed_name(name) except UnableToGetAgentMetadata as e: if allow_absent_agent: report_processor.report( resource_agent_error_to_report_item( e, reports.ReportItemSeverity.warning() ) ) return factory.void_facade_from_parsed_name(name) report_processor.report( resource_agent_error_to_report_item( e, reports.ReportItemSeverity.error(reports.codes.FORCE) ) ) raise LibraryError() from e except ResourceAgentError as e: report_processor.report( resource_agent_error_to_report_item( e, reports.ReportItemSeverity.error() ) ) raise LibraryError() from e
def _get_agent_metadata( runner: CommandRunner, report_processor: ReportProcessor, agent_name: ResourceAgentNameDto, ) -> ResourceAgentMetadata: agent_factory = ResourceAgentFacadeFactory(runner, report_processor) try: return agent_factory.facade_from_parsed_name( ResourceAgentName.from_dto(agent_name)).metadata except ResourceAgentError as e: report_processor.report(resource_agent_error_to_report_item(e)) raise LibraryError() from e
def get_agent_metadata( lib_env: LibraryEnvironment, agent_name: ResourceAgentNameDto) -> ResourceAgentMetadataDto: """ Return agent's metadata agent_name -- name of the agent """ runner = lib_env.cmd_runner() report_processor = lib_env.report_processor agent_factory = ResourceAgentFacadeFactory(runner, report_processor) try: return agent_factory.facade_from_parsed_name( ResourceAgentName.from_dto(agent_name)).metadata.to_dto() except ResourceAgentError as e: lib_env.report_processor.report(resource_agent_error_to_report_item(e)) raise LibraryError() from e
def describe_agent(lib_env: LibraryEnvironment, agent_name: str) -> Dict[str, Any]: """ Get agent's description (metadata) in a structure agent_name -- name of the agent (not containing "stonith:" prefix) """ runner = lib_env.cmd_runner() agent_factory = ResourceAgentFacadeFactory(runner, lib_env.report_processor) try: if ":" in agent_name: raise InvalidResourceAgentName(agent_name) return _agent_metadata_to_dict( agent_factory.facade_from_parsed_name( ResourceAgentName("stonith", None, agent_name)).metadata, describe=True, ) except ResourceAgentError as e: lib_env.report_processor.report( resource_agent_error_to_report_item(e, is_stonith=True)) raise LibraryError() from e