diff options
author | Wojciech Kępka <46892771+wojciechkepka@users.noreply.github.com> | 2021-02-09 01:22:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-08 19:22:26 -0500 |
commit | 5af822c5691a772cad36bd9a69e94419b03d4511 (patch) | |
tree | 761ebc2ac10608a8772d8f7085596ee2ee838b37 /examples | |
parent | 4e3f69c34a177697af940849fced1a284fc09449 (diff) |
Add services api (#263)
* Add initial Services models
* Add initial Services controllers
* Add ServicesListOptions
* Rename ServicesList -> ServiceList
* Fix some optional fields on ServiceRep
* Add Service::inspect
* Add Service::delete
* Add Service::logs
* Rename example logs -> containerlogs
* Add ServiceOptions, ServiceCreateInfo, fix typo
* Add a way to pass headers to request, add Payload and Headers for easier
types
* Add Service::create
* Add examples
* Fix fmt
* Fix example
Diffstat (limited to 'examples')
-rw-r--r-- | examples/containerlogs.rs (renamed from examples/logs.rs) | 0 | ||||
-rw-r--r-- | examples/servicedelete.rs | 14 | ||||
-rw-r--r-- | examples/serviceinspect.rs | 15 | ||||
-rw-r--r-- | examples/servicelogs.rs | 32 | ||||
-rw-r--r-- | examples/services.rs | 19 |
5 files changed, 80 insertions, 0 deletions
diff --git a/examples/logs.rs b/examples/containerlogs.rs index eb3bdb5..eb3bdb5 100644 --- a/examples/logs.rs +++ b/examples/containerlogs.rs diff --git a/examples/servicedelete.rs b/examples/servicedelete.rs new file mode 100644 index 0000000..e962276 --- /dev/null +++ b/examples/servicedelete.rs @@ -0,0 +1,14 @@ +use shiplift::Docker; +use std::env; + +#[tokio::main] +async fn main() { + let docker = Docker::new(); + let id = env::args() + .nth(1) + .expect("You need to specify an service name"); + + if let Err(e) = docker.services().get(&id).delete().await { + eprintln!("Error: {}", e) + } +} diff --git a/examples/serviceinspect.rs b/examples/serviceinspect.rs new file mode 100644 index 0000000..c281632 --- /dev/null +++ b/examples/serviceinspect.rs @@ -0,0 +1,15 @@ +use shiplift::Docker; +use std::env; + +#[tokio::main] +async fn main() { + let docker = Docker::new(); + let id = env::args() + .nth(1) + .expect("Usage: cargo run --example serviceinspect -- <service>"); + + match docker.services().get(&id).inspect().await { + Ok(service) => println!("{:#?}", service), + Err(e) => eprintln!("Error: {}", e), + } +} diff --git a/examples/servicelogs.rs b/examples/servicelogs.rs new file mode 100644 index 0000000..54d4743 --- /dev/null +++ b/examples/servicelogs.rs @@ -0,0 +1,32 @@ +use futures::StreamExt; +use shiplift::{tty::TtyChunk, Docker, LogsOptions}; +use std::env; + +#[tokio::main] +async fn main() { + let docker = Docker::new(); + let id = env::args() + .nth(1) + .expect("You need to specify a service name"); + + let services = docker.services(); + + let mut logs_stream = services + .get(&id) + .logs(&LogsOptions::builder().stdout(true).stderr(true).build()); + + while let Some(log_result) = logs_stream.next().await { + match log_result { + Ok(chunk) => print_chunk(chunk), + Err(e) => eprintln!("Error: {}", e), + } + } +} + +fn print_chunk(chunk: TtyChunk) { + match chunk { + TtyChunk::StdOut(bytes) => println!("Stdout: {}", std::str::from_utf8(&bytes).unwrap()), + TtyChunk::StdErr(bytes) => eprintln!("Stdout: {}", std::str::from_utf8(&bytes).unwrap()), + TtyChunk::StdIn(_) => unreachable!(), + } +} diff --git a/examples/services.rs b/examples/services.rs new file mode 100644 index 0000000..713c5f8 --- /dev/null +++ b/examples/services.rs @@ -0,0 +1,19 @@ +use shiplift::{Docker, ServiceListOptions}; + +#[tokio::main] +async fn main() { + env_logger::init(); + let docker = Docker::new(); + match docker + .services() + .list(&ServiceListOptions::builder().enable_status().build()) + .await + { + Ok(services) => { + for s in services { + println!("service -> {:#?}", s) + } + } + Err(e) => eprintln!("Error: {}", e), + } +} |