def distribute_corosync_conf( node_communicator, reporter, node_addr_list, config_text, skip_offline_nodes=False ): """ Send corosync.conf to several cluster nodes node_addr_list nodes to send config to (NodeAddressesList instance) config_text text of corosync.conf skip_offline_nodes don't raise an error if a node communication error occurs """ failure_severity = ReportItemSeverity.ERROR failure_forceable = report_codes.SKIP_OFFLINE_NODES if skip_offline_nodes: failure_severity = ReportItemSeverity.WARNING failure_forceable = None report_items = [] def _parallel(node): try: corosync_live.set_remote_corosync_conf( node_communicator, node, config_text ) reporter.process( reports.corosync_config_accepted_by_node(node.label) ) except NodeCommunicationException as e: report_items.append( node_communicator_exception_to_report_item( e, failure_severity, failure_forceable ) ) report_items.append( reports.corosync_config_distribution_node_error( node.label, failure_severity, failure_forceable ) ) reporter.process(reports.corosync_config_distribution_started()) tools_run_parallel( _parallel, [((node, ), {}) for node in node_addr_list] ) reporter.process_list(report_items)
def before(self): self._report(reports.corosync_config_distribution_started())