pub struct ParallelExecutor { /* private fields */ }Expand description
Parallel executor for running commands across multiple nodes.
Implementations§
Source§impl ParallelExecutor
impl ParallelExecutor
Sourcepub fn new(
nodes: Vec<Node>,
max_parallel: usize,
key_path: Option<String>,
) -> Self
pub fn new( nodes: Vec<Node>, max_parallel: usize, key_path: Option<String>, ) -> Self
Create a new parallel executor with default strict mode.
Sourcepub fn new_with_strict_mode(
nodes: Vec<Node>,
max_parallel: usize,
key_path: Option<String>,
strict_mode: StrictHostKeyChecking,
) -> Self
pub fn new_with_strict_mode( nodes: Vec<Node>, max_parallel: usize, key_path: Option<String>, strict_mode: StrictHostKeyChecking, ) -> Self
Create a new parallel executor with specified strict mode.
Sourcepub fn new_with_strict_mode_and_agent(
nodes: Vec<Node>,
max_parallel: usize,
key_path: Option<String>,
strict_mode: StrictHostKeyChecking,
use_agent: bool,
) -> Self
pub fn new_with_strict_mode_and_agent( nodes: Vec<Node>, max_parallel: usize, key_path: Option<String>, strict_mode: StrictHostKeyChecking, use_agent: bool, ) -> Self
Create a new parallel executor with strict mode and agent support.
Sourcepub fn new_with_all_options(
nodes: Vec<Node>,
max_parallel: usize,
key_path: Option<String>,
strict_mode: StrictHostKeyChecking,
use_agent: bool,
use_password: bool,
) -> Self
pub fn new_with_all_options( nodes: Vec<Node>, max_parallel: usize, key_path: Option<String>, strict_mode: StrictHostKeyChecking, use_agent: bool, use_password: bool, ) -> Self
Create a new parallel executor with all authentication options.
Sourcepub fn with_timeout(self, timeout: Option<u64>) -> Self
pub fn with_timeout(self, timeout: Option<u64>) -> Self
Set command execution timeout.
Sourcepub fn with_connect_timeout(self, connect_timeout: Option<u64>) -> Self
pub fn with_connect_timeout(self, connect_timeout: Option<u64>) -> Self
Set SSH connection timeout.
Sourcepub fn with_jump_hosts(self, jump_hosts: Option<String>) -> Self
pub fn with_jump_hosts(self, jump_hosts: Option<String>) -> Self
Set jump hosts for connections.
Sourcepub fn with_ssh_config(self, ssh_config: Option<SshConfig>) -> Self
pub fn with_ssh_config(self, ssh_config: Option<SshConfig>) -> Self
Set SSH config for ProxyJump directive resolution.
Sourcepub fn with_sudo_password(
self,
sudo_password: Option<Arc<SudoPassword>>,
) -> Self
pub fn with_sudo_password( self, sudo_password: Option<Arc<SudoPassword>>, ) -> Self
Set sudo password for automatic sudo authentication.
When set, the executor will automatically detect sudo password prompts and inject the password when commands require sudo privileges.
Sourcepub fn with_batch_mode(self, batch: bool) -> Self
pub fn with_batch_mode(self, batch: bool) -> Self
Set batch mode for signal handling.
When set to true, a single Ctrl+C will immediately terminate all jobs. When false (default), first Ctrl+C shows status, second terminates.
Sourcepub fn with_fail_fast(self, fail_fast: bool) -> Self
pub fn with_fail_fast(self, fail_fast: bool) -> Self
Enable fail-fast mode (pdsh -k compatibility).
When enabled, execution stops immediately when any node fails:
- Connection failure to any host
- Non-zero exit code from any command
Pending commands are cancelled and running commands are terminated gracefully.
Sourcepub async fn execute(&self, command: &str) -> Result<Vec<ExecutionResult>>
pub async fn execute(&self, command: &str) -> Result<Vec<ExecutionResult>>
Execute a command on all nodes in parallel.
Sourcepub async fn upload_file(
&self,
local_path: &Path,
remote_path: &str,
) -> Result<Vec<UploadResult>>
pub async fn upload_file( &self, local_path: &Path, remote_path: &str, ) -> Result<Vec<UploadResult>>
Upload a file to all nodes in parallel.
Sourcepub async fn download_file(
&self,
remote_path: &str,
local_dir: &Path,
) -> Result<Vec<DownloadResult>>
pub async fn download_file( &self, remote_path: &str, local_dir: &Path, ) -> Result<Vec<DownloadResult>>
Download a file from all nodes in parallel.
Sourcepub async fn download_files(
&self,
remote_paths: Vec<String>,
local_dir: &Path,
) -> Result<Vec<DownloadResult>>
pub async fn download_files( &self, remote_paths: Vec<String>, local_dir: &Path, ) -> Result<Vec<DownloadResult>>
Download multiple files from all nodes.
Sourcepub async fn execute_with_streaming(
&self,
command: &str,
output_mode: OutputMode,
) -> Result<Vec<ExecutionResult>>
pub async fn execute_with_streaming( &self, command: &str, output_mode: OutputMode, ) -> Result<Vec<ExecutionResult>>
Execute a command with streaming output support
This method enables real-time output streaming from all nodes with configurable output modes:
- Normal: Traditional batch mode (same as execute())
- Stream: Real-time with [node] prefixes
- File: Save per-node output to files
§Arguments
command- The command to executeoutput_mode- How to handle output (Normal/Stream/File)
§Returns
Vector of execution results, one per node
Auto Trait Implementations§
impl Freeze for ParallelExecutor
impl RefUnwindSafe for ParallelExecutor
impl Send for ParallelExecutor
impl Sync for ParallelExecutor
impl Unpin for ParallelExecutor
impl UnwindSafe for ParallelExecutor
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Declassify for T
impl<T> Declassify for T
type Declassified = T
fn declassify(self) -> T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more