def prepare( report_processor: ReportProcessor, raw_operation_list: Iterable[ResourceOperationFilteredIn], default_operation_list: Iterable[ResourceOperationIn], allowed_operation_name_list: Iterable[str], new_role_names_supported: bool, allow_invalid: bool = False, ) -> List[ResourceOperationFilteredOut]: """ Return operation_list prepared from raw_operation_list and default_operation_list. report_processor -- tool for warning/info/error reporting raw_operation_list -- user entered operations that require follow-up care default_operation_list -- operations defined as default by (most probably) a resource agent allowed_operation_name_list -- operation names defined by a resource agent allow_invalid -- flag for validation skipping """ operations_to_validate = _operations_to_normalized(raw_operation_list) report_list: ReportItemList = [] report_list.extend( _validate_operation_list( operations_to_validate, allowed_operation_name_list, allow_invalid ) ) operation_list = _normalized_to_operations( operations_to_validate, new_role_names_supported ) report_list.extend(validate_different_intervals(operation_list)) if report_processor.report_list(report_list).has_errors: raise LibraryError() return [ _filter_op_dict(op, new_role_names_supported) for op in complete_operations_options(operation_list) ] + _get_remaining_defaults( report_processor, operation_list, complete_operations_options(default_operation_list), new_role_names_supported, )
def test_add_intervals_everywhere_is_missing(self): self.assertEqual( agent.complete_operations_options( [ {"name": "monitor", "interval": "20s"}, {"name": "start"}, ] ), [ {"name": "monitor", "interval": "20s"}, {"name": "start", "interval": "0s"}, ], )
def _agent_metadata_to_dict(agent: ResourceAgentMetadata, describe: bool = False) -> Dict[str, str]: agent_dto = agent.to_dto() agent_dict = to_dict(agent_dto) del agent_dict["name"] agent_dict["name"] = agent.name.full_name agent_dict["standard"] = agent.name.standard agent_dict["provider"] = agent.name.provider agent_dict["type"] = agent.name.type agent_dict["actions"] = [ action_to_operation(action, keep_extra_keys=True) for action in agent_dto.actions ] agent_dict["default_actions"] = (complete_operations_options( get_default_operations(agent, keep_extra_keys=True)) if describe else []) return agent_dict