def create( env: LibraryEnvironment, stonith_id: str, stonith_agent_name: str, operations: Iterable[Mapping[str, str]], meta_attributes: Mapping[str, str], instance_attributes: Mapping[str, str], allow_absent_agent: bool = False, allow_invalid_operation: bool = False, allow_invalid_instance_attributes: bool = False, use_default_operations: bool = True, ensure_disabled: bool = False, wait: WaitType = False, ): # pylint: disable=too-many-arguments, too-many-locals """ Create stonith as resource in a cib. env -- provides all for communication with externals stonith_id -- an identifier of stonith resource stonith_agent_name -- contains name for the identification of agent operations -- contains attributes for each entered operation meta_attributes -- contains attributes for primitive/meta_attributes instance_attributes -- contains attributes for primitive/instance_attributes allow_absent_agent -- a flag for allowing agent not installed in a system allow_invalid_operation -- a flag for allowing to use operations that are not listed in a stonith agent metadata allow_invalid_instance_attributes -- a flag for allowing to use instance attributes that are not listed in a stonith agent metadata or for allowing to not use the instance_attributes that are required in stonith agent metadata use_default_operations -- a flag for stopping of adding default cib operations (specified in a stonith agent) ensure_disabled -- flag that keeps resource in target-role "Stopped" wait -- flag for controlling waiting for pacemaker idle mechanism """ runner = env.cmd_runner() agent_factory = ResourceAgentFacadeFactory(runner, env.report_processor) stonith_agent = _get_agent_facade( env.report_processor, agent_factory, stonith_agent_name, allow_absent_agent, ) if stonith_agent.metadata.provides_unfencing: meta_attributes = dict(meta_attributes, provides="unfencing") with resource_environment( env, wait, [stonith_id], _ensure_disabled_after_wait( ensure_disabled or resource.common.are_meta_disabled(meta_attributes), ), ) as resources_section: id_provider = IdProvider(resources_section) stonith_element = resource.primitive.create( env.report_processor, resources_section, id_provider, stonith_id, stonith_agent, raw_operation_list=operations, meta_attributes=meta_attributes, instance_attributes=instance_attributes, allow_invalid_operation=allow_invalid_operation, allow_invalid_instance_attributes=allow_invalid_instance_attributes, use_default_operations=use_default_operations, resource_type="stonith", ) if ensure_disabled: resource.common.disable(stonith_element, id_provider)
def create_in_group( env: LibraryEnvironment, stonith_id: str, stonith_agent_name: str, group_id: str, operations: Iterable[Mapping[str, str]], meta_attributes: Mapping[str, str], instance_attributes: Mapping[str, str], allow_absent_agent: bool = False, allow_invalid_operation: bool = False, allow_invalid_instance_attributes: bool = False, use_default_operations: bool = True, ensure_disabled: bool = False, adjacent_resource_id: Optional[str] = None, put_after_adjacent: bool = False, wait: WaitType = False, ): # pylint: disable=too-many-arguments, too-many-locals """ DEPRECATED Create stonith as resource in a cib and put it into defined group. env -- provides all for communication with externals stonith_id --an identifier of stonith resource stonith_agent_name -- contains name for the identification of agent group_id -- identificator for group to put stonith inside operations -- contains attributes for each entered operation meta_attributes -- contains attributes for primitive/meta_attributes instance_attributes -- contains attributes for primitive/instance_attributes allow_absent_agent -- a flag for allowing agent not installed in a system allow_invalid_operation -- a flag for allowing to use operations that are not listed in a stonith agent metadata allow_invalid_instance_attributes -- a flag for allowing to use instance attributes that are not listed in a stonith agent metadata or for allowing to not use the instance_attributes that are required in stonith agent metadata use_default_operations -- a flag for stopping of adding default cib operations (specified in a stonith agent) ensure_disabled -- flag that keeps resource in target-role "Stopped" adjacent_resource_id -- identify neighbor of a newly created stonith put_after_adjacent -- is flag to put a newly create resource befor/after adjacent stonith wait -- flag for controlling waiting for pacemaker idle mechanism """ runner = env.cmd_runner() agent_factory = ResourceAgentFacadeFactory(runner, env.report_processor) stonith_agent = _get_agent_facade( env.report_processor, agent_factory, stonith_agent_name, allow_absent_agent, ) if stonith_agent.metadata.provides_unfencing: meta_attributes = dict(meta_attributes, provides="unfencing") with resource_environment( env, wait, [stonith_id], _ensure_disabled_after_wait( ensure_disabled or resource.common.are_meta_disabled(meta_attributes), ), ) as resources_section: id_provider = IdProvider(resources_section) adjacent_resource_element = None if adjacent_resource_id: try: adjacent_resource_element = get_element_by_id( get_root(resources_section), adjacent_resource_id) except ElementNotFound: # We cannot continue without adjacent element because # the validator might produce misleading reports if env.report_processor.report( ReportItem.error( reports.messages.IdNotFound( adjacent_resource_id, []))).has_errors: raise LibraryError() from None try: group_element = get_element_by_id(get_root(resources_section), group_id) except ElementNotFound: group_id_reports: List[ReportItem] = [] validate_id(group_id, description="group name", reporter=group_id_reports) env.report_processor.report_list(group_id_reports) group_element = resource.group.append_new(resources_section, group_id) stonith_element = resource.primitive.create( env.report_processor, resources_section, id_provider, stonith_id, stonith_agent, operations, meta_attributes, instance_attributes, allow_invalid_operation, allow_invalid_instance_attributes, use_default_operations, ) if ensure_disabled: resource.common.disable(stonith_element, id_provider) if env.report_processor.report_list( resource.validations.validate_move_resources_to_group( group_element, [stonith_element], adjacent_resource_element, )).has_errors: raise LibraryError() resource.hierarchy.move_resources_to_group( group_element, [stonith_element], adjacent_resource_element, put_after_adjacent, )
def create_in_group( env, stonith_id, stonith_agent_name, group_id, operations, meta_attributes, instance_attributes, allow_absent_agent=False, allow_invalid_operation=False, allow_invalid_instance_attributes=False, use_default_operations=True, ensure_disabled=False, adjacent_resource_id=None, put_after_adjacent=False, wait=False, ): # pylint: disable=too-many-arguments, too-many-locals """ Create stonith as resource in a cib and put it into defined group. LibraryEnvironment env provides all for communication with externals string stonith_id is an identifier of stonith resource string stonith_agent_name contains name for the identification of agent string group_id is identificator for group to put stonith inside list of dict operations contains attributes for each entered operation dict meta_attributes contains attributes for primitive/meta_attributes dict instance_attributes contains attributes for primitive/instance_attributes bool allow_absent_agent is a flag for allowing agent that is not installed in a system bool allow_invalid_operation is a flag for allowing to use operations that are not listed in a stonith agent metadata bool allow_invalid_instance_attributes is a flag for allowing to use instance attributes that are not listed in a stonith agent metadata or for allowing to not use the instance_attributes that are required in stonith agent metadata bool use_default_operations is a flag for stopping stopping of adding default cib operations (specified in a stonith agent) bool ensure_disabled is flag that keeps resource in target-role "Stopped" string adjacent_resource_id identify neighbor of a newly created stonith bool put_after_adjacent is flag to put a newly create resource befor/after adjacent stonith mixed wait is flag for controlling waiting for pacemaker idle mechanism """ stonith_agent = get_agent( env.report_processor, env.cmd_runner(), stonith_agent_name, allow_absent_agent, ) if stonith_agent.get_provides_unfencing(): meta_attributes["provides"] = "unfencing" with resource_environment( env, wait, [stonith_id], _ensure_disabled_after_wait( ensure_disabled or are_meta_disabled(meta_attributes), ), ) as resources_section: id_provider = IdProvider(resources_section) stonith_element = resource.primitive.create( env.report_processor, resources_section, id_provider, stonith_id, stonith_agent, operations, meta_attributes, instance_attributes, allow_invalid_operation, allow_invalid_instance_attributes, use_default_operations, ) if ensure_disabled: resource.common.disable(stonith_element, id_provider) validate_id(group_id, "group name") resource.group.place_resource( resource.group.provide_group(resources_section, group_id), stonith_element, adjacent_resource_id, put_after_adjacent, )
def create( env, stonith_id, stonith_agent_name, operations, meta_attributes, instance_attributes, allow_absent_agent=False, allow_invalid_operation=False, allow_invalid_instance_attributes=False, use_default_operations=True, ensure_disabled=False, wait=False, ): # pylint: disable=too-many-arguments, too-many-locals """ Create stonith as resource in a cib. LibraryEnvironment env provides all for communication with externals string stonith_id is an identifier of stonith resource string stonith_agent_name contains name for the identification of agent list of dict operations contains attributes for each entered operation dict meta_attributes contains attributes for primitive/meta_attributes dict instance_attributes contains attributes for primitive/instance_attributes bool allow_absent_agent is a flag for allowing agent that is not installed in a system bool allow_invalid_operation is a flag for allowing to use operations that are not listed in a stonith agent metadata bool allow_invalid_instance_attributes is a flag for allowing to use instance attributes that are not listed in a stonith agent metadata or for allowing to not use the instance_attributes that are required in stonith agent metadata bool use_default_operations is a flag for stopping stopping of adding default cib operations (specified in a stonith agent) bool ensure_disabled is flag that keeps resource in target-role "Stopped" mixed wait is flag for controlling waiting for pacemaker idle mechanism """ stonith_agent = get_agent( env.report_processor, env.cmd_runner(), stonith_agent_name, allow_absent_agent, ) if stonith_agent.get_provides_unfencing(): meta_attributes["provides"] = "unfencing" with resource_environment( env, wait, [stonith_id], _ensure_disabled_after_wait( ensure_disabled or are_meta_disabled(meta_attributes), ), ) as resources_section: id_provider = IdProvider(resources_section) stonith_element = resource.primitive.create( env.report_processor, resources_section, id_provider, stonith_id, stonith_agent, raw_operation_list=operations, meta_attributes=meta_attributes, instance_attributes=instance_attributes, allow_invalid_operation=allow_invalid_operation, allow_invalid_instance_attributes=allow_invalid_instance_attributes, use_default_operations=use_default_operations, resource_type="stonith", ) if ensure_disabled: resource.common.disable(stonith_element, id_provider)
def create_in_group( env, stonith_id, stonith_agent_name, group_id, operations, meta_attributes, instance_attributes, allow_absent_agent=False, allow_invalid_operation=False, allow_invalid_instance_attributes=False, use_default_operations=True, ensure_disabled=False, adjacent_resource_id=None, put_after_adjacent=False, wait=False, ): # pylint: disable=too-many-arguments, too-many-locals """ Create stonith as resource in a cib and put it into defined group. LibraryEnvironment env provides all for communication with externals string stonith_id is an identifier of stonith resource string stonith_agent_name contains name for the identification of agent string group_id is identificator for group to put stonith inside list of dict operations contains attributes for each entered operation dict meta_attributes contains attributes for primitive/meta_attributes dict instance_attributes contains attributes for primitive/instance_attributes bool allow_absent_agent is a flag for allowing agent that is not installed in a system bool allow_invalid_operation is a flag for allowing to use operations that are not listed in a stonith agent metadata bool allow_invalid_instance_attributes is a flag for allowing to use instance attributes that are not listed in a stonith agent metadata or for allowing to not use the instance_attributes that are required in stonith agent metadata bool use_default_operations is a flag for stopping stopping of adding default cib operations (specified in a stonith agent) bool ensure_disabled is flag that keeps resource in target-role "Stopped" string adjacent_resource_id identify neighbor of a newly created stonith bool put_after_adjacent is flag to put a newly create resource befor/after adjacent stonith mixed wait is flag for controlling waiting for pacemaker idle mechanism """ stonith_agent = get_agent( env.report_processor, env.cmd_runner(), stonith_agent_name, allow_absent_agent, ) if stonith_agent.get_provides_unfencing(): meta_attributes["provides"] = "unfencing" with resource_environment( env, wait, [stonith_id], _ensure_disabled_after_wait( ensure_disabled or are_meta_disabled(meta_attributes), ) ) as resources_section: id_provider = IdProvider(resources_section) stonith_element = resource.primitive.create( env.report_processor, resources_section, id_provider, stonith_id, stonith_agent, operations, meta_attributes, instance_attributes, allow_invalid_operation, allow_invalid_instance_attributes, use_default_operations, ) if ensure_disabled: resource.common.disable(stonith_element, id_provider) validate_id(group_id, "group name") resource.group.place_resource( resource.group.provide_group(resources_section, group_id), stonith_element, adjacent_resource_id, put_after_adjacent, )
def create( env, stonith_id, stonith_agent_name, operations, meta_attributes, instance_attributes, allow_absent_agent=False, allow_invalid_operation=False, allow_invalid_instance_attributes=False, use_default_operations=True, ensure_disabled=False, wait=False, ): # pylint: disable=too-many-arguments, too-many-locals """ Create stonith as resource in a cib. LibraryEnvironment env provides all for communication with externals string stonith_id is an identifier of stonith resource string stonith_agent_name contains name for the identification of agent list of dict operations contains attributes for each entered operation dict meta_attributes contains attributes for primitive/meta_attributes dict instance_attributes contains attributes for primitive/instance_attributes bool allow_absent_agent is a flag for allowing agent that is not installed in a system bool allow_invalid_operation is a flag for allowing to use operations that are not listed in a stonith agent metadata bool allow_invalid_instance_attributes is a flag for allowing to use instance attributes that are not listed in a stonith agent metadata or for allowing to not use the instance_attributes that are required in stonith agent metadata bool use_default_operations is a flag for stopping stopping of adding default cib operations (specified in a stonith agent) bool ensure_disabled is flag that keeps resource in target-role "Stopped" mixed wait is flag for controlling waiting for pacemaker idle mechanism """ stonith_agent = get_agent( env.report_processor, env.cmd_runner(), stonith_agent_name, allow_absent_agent, ) if stonith_agent.get_provides_unfencing(): meta_attributes["provides"] = "unfencing" with resource_environment( env, wait, [stonith_id], _ensure_disabled_after_wait( ensure_disabled or are_meta_disabled(meta_attributes), ) ) as resources_section: id_provider = IdProvider(resources_section) stonith_element = resource.primitive.create( env.report_processor, resources_section, id_provider, stonith_id, stonith_agent, raw_operation_list=operations, meta_attributes=meta_attributes, instance_attributes=instance_attributes, allow_invalid_operation=allow_invalid_operation, allow_invalid_instance_attributes=allow_invalid_instance_attributes, use_default_operations=use_default_operations, resource_type="stonith" ) if ensure_disabled: resource.common.disable(stonith_element, id_provider)